The BlazeMeter to OctoPerf Maven Plugin allows you to migrate your BlazeMeter test design assets into OctoPerf.
It converts supported BlazeMeter entities into their OctoPerf equivalents, enabling a smooth transition of your test designs.
This tool uses BlazeMeter publicly documented APIs only and does not scrape the user interface, bypass access controls, or reverse engineer BlazeMeter.
If you are not familiar with Maven, you can use the ready-to-run example project provided in this repository.
-
Install Maven
https://maven.apache.org/install.html -
Verify installation:
mvn --version
-
Download the example project:
- Go to: example/
- Download the
pom.xmlfile and place it in an empty directory on your computer.
Tip: You can download it directly here: pom.xml
-
Edit pom.xml and fill in your API keys:
<octoPerfApiKey>YOUR_OCTOPERF_API_KEY</octoPerfApiKey> <blazemeterApiKeyId>YOUR_BZM_API_KEY_ID</blazemeterApiKeyId> <blazemeterApiKeySecret>YOUR_BZM_API_KEY_SECRET</blazemeterApiKeySecret> -
Run the migration from the directory containing the pom.xml file:
mvn com.octoperf:bzm-to-octoperf-maven-plugin:1.0.0:migrate
That’s it 🎉 The plugin will migrate your BlazeMeter assets into OctoPerf.
The plugin migrates the following elements:
- Workspaces and Projects
BlazeMeter Workspaces and Projects are converted into their OctoPerf equivalents.
- Test Designs (Virtual Users)
The design part of BlazeMeter tests is imported as Virtual Users in OctoPerf.
- Test Files
BlazeMeter test files are imported into the OctoPerf Project Files section.
All files directly attached to your tests (except the JMX script itself, which is imported as a Virtual User) are uploaded.
- Shared Folders
BlazeMeter workspace-level shared folders are imported as Project files in OctoPerf.
Only files that are actually referenced by tests (Virtual Users) are migrated.
Note: BlazeMeter manages shared folders at the workspace level, whereas OctoPerf only supports files at the project level (no shared folder concept).
- Test Data Sets (CSV Variables)
BlazeMeter test data sets are converted into CSV variables in OctoPerf, along with their corresponding CSV files.
Note: In OctoPerf, variables are defined at the project level. If multiple imported tests use the same variable name, naming conflicts may occur. It is recommended to ensure that variable names are unique across your project, either before or after migration.
You can rename variables in OctoPerf after migration. Any conflicts will be reported during the Virtual User sanity check after migration.
Refer to the plugin parameters section below for full details. In summary, you can perform one of the following:
- A full migration of all supported customer-configured assets accessible via the public BlazeMeter API
- A single Workspace migration (by providing a BlazeMeter workspace ID)
- A single Project migration (by providing both a BlazeMeter workspace ID and a BlazeMeter project ID)
In OctoPerf, only administrators can delete Workspaces.
If you need more control over Workspace creation during migration, the plugin allows you to:
- Reuse an existing Workspace with the same name instead of creating a new one
- Reuse an existing Project with the same name instead of creating a new one
This helps prevent unnecessary duplication of Workspaces and Projects during repeated migrations.
The plugin is distributed via the OctoPerf Maven Repository hosted on GitHub.
Latest released version: 1.0.0
| Plugin Version | OctoPerf Version |
|---|---|
1.0.0+ |
16.1.0+ |
The OctoPerf plugin has the following goals:
com.octoperf:bzm-to-octoperf-maven-plugin:${version}:migrate: Migrates BlazeMeter data to OctoPerf.
The following specifies the minimum requirements to run this Maven plugin:
| Name | Description |
|---|---|
| Maven | 3.6 |
| Java | 17 |
| Memory | No specific minimum requirement |
| Disk Space | No specific minimum requirement |
| Name | Maven Parameter name | Description |
|---|---|---|
| OctoPerf API Key | octoPerfApiKey | Log in to OctoPerf Account > Profile and copy the API key |
| BlazeMeter API Key Id | blazemeterApiKeyId | Log in to BlazeMeter Settings > Personal > API Keys, and copy the API key Id |
| BlazeMeter API Key Secret | blazemeterApiKeySecret | Log in to BlazeMeter Settings > Personal > API Keys, and copy the API key Secret |
⚠️ Security note: Do not commit API keys to source control. Use environment variables or Maven profiles for sensitive values.
| Name | Maven Parameter name | Description |
|---|---|---|
| OctoPerf Server Url | octoPerfServerUrl | OctoPerf API server base URL (default to SaaS platform) |
| Always create new Workspace | alwaysCreateNewWorkspace | Create a new OctoPerf Workspace even if one with the same name exists (default: false) |
| Always create new Project | alwaysCreateNewProject | Create a new OctoPerf Project even if one with the same name exists (default: false) |
| BlazeMeter Workspace Id | bzmWorkspaceId | BlazeMeter Workspace id to migrate a single Workspace |
| BlazeMeter Project Id | bzmProjectId | BlazeMeter Project id to migrate a single Project (bzmWorkspaceId is also required) |
Specify the plugin version in your project's plugin configuration:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<groupId>com.octoperf</groupId>
<artifactId>octoperf-test</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.octoperf</groupId>
<artifactId>bzm-to-octoperf-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!-- See configuration below -->
</configuration>
</plugin>
</plugins>
</build>
<!-- OctoPerf Maven Repository -->
<pluginRepositories>
<pluginRepository>
<id>octoperf-snapshots</id>
<name>OctoPerf Snapshots</name>
<url>https://github.com/octoperf/maven-repository/raw/master/snapshots</url>
</pluginRepository>
<pluginRepository>
<id>octoperf-releases</id>
<name>OctoPerf Releases</name>
<url>https://github.com/octoperf/maven-repository/raw/master/releases</url>
</pluginRepository>
</pluginRepositories>
</project><configuration>
<!-- -->
<!-- All Parameters for the migration -->
<!-- -->
<!-- Required parameters -->
<!-- -->
<!-- Your API key from your User Account -->
<octoPerfApiKey>OCTOPERF_API_KEY</octoPerfApiKey>
<!-- Your BlazeMeter API Keys from Settings/Personal/API Keys -->
<blazemeterApiKeyId>BZM_API_KEY_ID</blazemeterApiKeyId>
<blazemeterApiKeySecret>BZM_API_KEY_SECRET</blazemeterApiKeySecret>
<!-- Optional parameters -->
<!-- -->
<!-- Default to SaaS platform -->
<octoPerfServerUrl>https://api.octoperf.com</octoPerfServerUrl>
<!-- Create a new OctoPerf Workspace even if one with the same name exists (default: false) -->
<alwaysCreateNewWorkspace>false</alwaysCreateNewWorkspace>
<!-- Create a new OctoPerf Project even if one with the same name exists (default: false) -->
<alwaysCreateNewProject>false</alwaysCreateNewProject>
<!-- BlazeMeter Workspace id to migrate a single Workspace
(also required when you want to migrate a single project)
Example: YYY value in https://a.blazemeter.com/app/#/accounts/XXX/workspaces/YYY/projects/ZZZ/tests
-->
<!--<bzmWorkspaceId>YYY</bzmWorkspaceId>-->
<!-- BlazeMeter Project id to migrate a single Project
Example: ZZZ value in https://a.blazemeter.com/app/#/accounts/XXX/workspaces/YYY/projects/ZZZ/tests
-->
<!--<bzmProjectId>ZZZ</bzmProjectId>-->
</configuration>
Please replace the placeholders with the relevant parameters. Once done, run the following command:
mvn com.octoperf:bzm-to-octoperf-maven-plugin:1.0.0:migrateThe output should look similar to the following:
[INFO] --- bzm-to-octoperf-maven-plugin:1.0.0:migrate (default-cli) @ octoperf-test ---
[INFO] ------ [BlazeMeter to OctoPerf] starting migration ------
[INFO] [WORKSPACE] 'Default workspace'
[INFO] [PROJECT] 'project1'
[INFO] [IMPORT JMX] BZM script file = 'demo.jmx':
[INFO] [IMPORT JMX - VU] 'Thread Group' imported
[INFO] [PROJECT FILES] 'shared files'
[INFO] [PROJECT FILES - Default workspace > project1] 'rocket.svg'
[INFO] [PROJECT FILES - Default workspace > project1] 'simplelogger.properties'
[INFO] [PROJECT FILES] 'shared files' done
[INFO] [PROJECT TEST DATA - Default workspace > Default project] 'test-data-15357523.csv'
[INFO] [PROJECT TEST DATA - Default workspace > Default project] 'test-data-15357523-csv' variable created (id=wNIBH5wBfD8iqeVBd2M9)
[INFO] ------ [BlazeMeter to OctoPerf] migration done ------
[INFO] Metadata of migration: CopyMetadata(...)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.137 s
[INFO] Finished at: 2026-02-02T11:48:04+01:00
This plugin accesses only data configured within the user’s own BlazeMeter account, including test definitions such as JMeter scripts, workspace and project names, configuration metadata, and referenced files. It does not access, copy, extract, or attempt to reproduce BlazeMeter’s proprietary code, algorithms, analytics engines, or internal service components. The sole purpose of this plugin is to facilitate the portability of the user’s own testing assets from BlazeMeter to OctoPerf using BlazeMeter’s officially documented APIs.
This plugin uses only BlazeMeter’s publicly documented APIs to access resources within the user’s own BlazeMeter account. Each user remains solely responsible for ensuring that their use of the BlazeMeter API (including any export or migration of data) complies with the terms of service, API policies, and contractual restrictions applicable to their BlazeMeter account or company account. Before using this plugin, users should review their agreement with BlazeMeter to confirm that they are permitted to export and migrate their own configuration data via the official BlazeMeter API.
This plugin does not attempt to bypass BlazeMeter’s authentication mechanisms, rate limits, or any technical measures designed to protect the BlazeMeter service. It simply issues API requests using the credentials supplied by the user and operates within the limits documented by BlazeMeter. If the BlazeMeter API returns authorization or access errors (including but not limited to HTTP 401, 403, or 429), or if the user’s access is suspended or restricted for any reason, the plugin will stop attempting to call the API. Users must not modify this plugin or use it in any way that circumvents BlazeMeter’s technical protections or access controls.
HTTP ERROR 401 ... UnauthorizedThis error can occur when calling either the OctoPerf API or the BlazeMeter API.
Possible causes:
- Invalid or expired API key
- Incorrect API key ID or secret
- API key copied with extra spaces
- Incorrect OctoPerf server URL (for on-premise installations)
Actions:
- Verify your OctoPerf API key (Account > Profile)
- Verify your BlazeMeter API key ID and secret (Settings > Personal > API Keys)
- Ensure credentials are correctly configured in the Maven plugin
- Ensure the API keys have not been revoked
The migration starts but the expected BlazeMeter Workspace or Project does not appear in the logs.
Possible causes:
- The specified BlazeMeter workspace ID does not exist
- The specified BlazeMeter project ID does not exist
- The project does not belong to the specified workspace
- The API key does not have access to the specified workspace/project
Actions:
- Verify the workspace and project IDs in the BlazeMeter URL:
https://a.blazemeter.com/app/#/accounts/XXX/workspaces/YYY/projects/ZZZ/tests
- Ensure the API key has access to the target workspace and project
- Remove the workspace/project parameters to test a full migration
Symptom:
- Migration fails with an unexpected HTTP error
- Error message is unclear or not documented above
- Migration worked previously but fails after an update
Cause: This may occur if:
- The BlazeMeter API has changed
- A network or proxy issue occurs
- An internal error happens during migration
Actions:
- Collect the full Maven output including request and response logs
- Send the complete Maven output (including request/response logs) to OctoPerf support so the R&D team can investigate the issue.
🔒 Security note:
The plugin automatically removes sensitive information from logs.
API keys andAuthorizationheaders are never written to the output and are filtered out before logging.
It is safe to share the Maven output with support for troubleshooting purposes.
This tool migrates only customer-configured assets explicitly accessible via the BlazeMeter public API, including test scripts, workspace and project metadata, and related configuration files.
It does not access internal BlazeMeter platform data, analytics engines, execution infrastructure, or proprietary service components.
This tool processes data solely on behalf of the end user, using credentials and authorizations explicitly provided by the user.
It accesses and retrieves only customer-configured data from BlazeMeter (such as test scripts, workspace and project names, configuration metadata, and referenced files) through BlazeMeter’s publicly documented APIs.
The tool:
- does not access or process any data without explicit user action;
- does not store user data beyond the execution context unless explicitly configured by the user;
- does not transmit data to any third party.
Under the General Data Protection Regulation (GDPR):
- the end user remains the data controller of any personal data processed;
- this tool acts solely as a technical processing tool and, where applicable, as a data processor within the meaning of Article 28 GDPR.
This project is designed to support data portability in accordance with Article 20 GDPR. Users are responsible for ensuring that their use of this tool complies with applicable data protection laws.
BlazeMeter is a trademark of Perforce Software, Inc. or its affiliates. This project is an independent, open-source tool and is not affiliated with, endorsed by, or sponsored by BlazeMeter or Perforce Software. References to BlazeMeter are for descriptive purposes only, to identify the source platform from which data is migrated.
This software is provided “as is”, without warranties of any kind, express or implied. The authors and copyright holders make no representations or warranties regarding the compatibility of this plugin with any third-party service, including BlazeMeter, and are not responsible for any consequences arising from its use. This includes, without limitation, any suspension or termination of a user’s BlazeMeter account, or any disputes related to the user’s contractual relationship with BlazeMeter.