HP Application Lifecycle Management plugin

9 minute readExtensibilityDeveloper productivity

HP Application Lifecycle Management (HP ALM) 11 enables IT staff in multiple roles to manage activities associated with the core application lifecycle, from requirements through development, testing, defect management, and readiness for delivery.

The CloudBees CD/RO HP ALM plugin allows you to:

  • Manage across functionality, performance, and security - from a single software platform with a unified repository, a consistent user experience, and a customizable dashboard.

  • Track requirements and real-time statuses through testing, development, and change management.

  • Plan and track projects and releases from a single dashboard for predictability.

  • Use requirements to align business and IT.

  • Integrate with development for complete traceability.

  • Use multiple lifecycle methodologies.

  • Unify functional, performance, and security quality management.

Plugin Version Revised on April 13, 2022

OTA client installation

This plugin relies on the OTA COM API (HP client-side libraries), and thus runs on any Windows platform that CloudBees CD supports. These include Windows 2003, Windows XP, and Windows 7. To make this plugin work, Patch-001 must be applied in the server where HP ALM runs before any other action. Once the patch is installed, you can install the OTA COM API files.

In order for the plugin to work you must download OTA client libraries. To do this, please complete the following steps:

  1. Check system requirements:

    For the HP ALM version you are using check if you are using the ALM Client machine where the CloudBees CD agent will run.This can be checked in the Client-Side System Requirements.

  2. Open the supported IE browser as an admin user and do the following:

    1. Connect to the HP ALM login page (http://YourQCServer:8080/qcbin) for the QC server and let it complete its file downloads.

    2. Run the client registration from the same server:

      For this go to http://YourQCServer:8080/qcbin/CommonMode_index.html and on this page select "HP ALM Client Registration" (http://YourQCServer:8080/qcbin/CommonMode_index.html) and then select the "Register HP ALM" (http://YourQCServer:8080/qcbin/start_a.jsp?common=true)

    3. Run the connectivity add-in from the same server.

      For this go to http://YourQCServer:8080/qcbin/CommonMode_index.html and on this page click "HP ALM Connectivity" (http://YourQCServer:8080/qcbin/TDConnectivity_index.html) and download the TDConnect.exe and run it as an Admin user.

  3. Download HP ALM System Test Remote Agent Add-in from the marketplace: Remote Agent and run the msi file as the admin user.

The .NET Framework 2.x or above must be installed on the machine(s) where the plugins will be used.

Known limitations

The OTA COM API (HP client-side libraries) must be downloaded after Patch-001 is installed. If this is not done, old references from the first installation are stored in the machine, which might cause problems when you use the tool. These old references are difficult to eliminate, so you should not remove them. If you encounter issues, contact the HP support team for assistance.

Make sure the CloudBees CD agent service is running as the admin user - this is required for OTA client to work.

Supported platforms

This RunALM procedure was developed and tested against HP ALM 11.

The CollectReportingData procedure was developed and tested against HP ALM 12.50.

Plugin configuration

Plugin configurations are sets of parameters that apply across some or all of the plugin’s procedures. They reduce repetition of common values, create predefined sets of parameters for end users, and securely store credentials where needed. Each configuration is given a unique name that is entered in designated parameters on procedures that use them.

To create plugin configurations, go to the CloudBees CD "Administration" tab, then to the "Plugins" sub-tab. On the right side of the line for a specific plugin, click the "Configure" link to open the Configuration page.

Parameter Description

Configuration Name

Unique name for the connection. Keep in mind that you might need to create additional connections over time. (Required)

Server URL

URL of the server where the HP ALM 11 application is installed. (Required)


Domain name (or you can use the DEFAULT domain). (Required)


Project name that contains the test sets that you need. (Required)

(Login as:) Username

Username for logging in to the application. (Required)

(Login as:) Password

Password for logging in to the application.(Required)

Plugin procedures

For all parameter descriptions below, required parameters are shown in bold italics.
In the CloudBees CD UI, go to the Home page, open the Main Menu, and click Admin > Plugins to open the Plugin Manager.


  1. HP ALM takes the user-defined parameters and creates the command to be run in the CloudBees CD agent.

  2. The credential parameters are retrieved from the CloudBees CD server (the ones that match the "Credential Name" field on the step definition page) and execute the login into the HP ALM server.

  3. The job starts the test set execution and periodically polls the HP ALM server for the test set run results.

  4. The PostProcessor provides periodic updates to report the number of tests that passed and failed to the CloudBees CD server. Results are displayed live as the test runs on the CloudBees CD web UI.

  5. The test set finishes. The Status says "Success" if all tests passed; otherwise the Status says "Error".

This procedure allows the input of a specific test set to be run. All the tests specified in the test set are run in the same order that they are defined on the HP ALM server. This test is always run locally, which means that all tests are to be run on the local host (in this case, the CloudBees CD server).

It displays a summary, which updates while the test is running. If there is an error in the configuration or in the test parameters provided, it appears in the CloudBees CD UI. If the test is well configured, the summary shows the live statistics of failed and passed test(s); this is also a link to the specific failed test(s) to show which one failed. In both cases, more detailed information is in the log file, which contains the output generated by the console.

Important: this procedure handles automated tests only.

Parameter Description

Folder(s) Path

Complete path where the test set is located. It should start from the "Root" directory. (Required)

Test set

Name of the specific test set to be executed. (Required)

Configuration Name

Name of the configuration that you want to use. (Required)


Gathers reports from the specified HP ALM instance.

Important note: the procedure uses a new REST API, which is now in status "Technical preview". The procedure was developed against HP ALM version 12.50.

Parameter Description

Configuration Name

Provide the name of your HP ALM configuration.


Filter to retrieve test runs. See Filtering for reference.

Field mapping

HP ALM run fields that identify the test run that the quality object is associated with. E.g., "testset-name:projectName". The identified fields will be used to populate the target fields identified in the report object association from test run to quality. Quotes "" set the constant value - e.g. "myProject":releaseProjectName will produce a payload like {"releaseProjectName": "myProject"}

Fields to aggregate

The test run fields to aggregate on. For each group based on the status field and additional group by fields, the sum of each of the specified fields will be calculated and stored as separate fields. These fields are expected to be numeric fields. Each field can be optionally specified as "field-name:qualityFieldName" in which case the value will be stored as "qualityFieldName".

Metadata property path

Property sheet where run metadata will be stored. Optional field. If omited, /mySchedule/EC-ALM-%JobName%-%Report Object Type% will be used for schedule contest. For all other contexts root is /myProject.

Transformation script

Allows user to provide perl script for payload customization. This method will be invoked by plugin with 2 parameters. 1st parameter is context object, 2nd is payload object. Method should be named "transform", and should return payload object. In this example myTimestamp field will be added to payload object:

sub transform {
my ($context, $payload) = @_;
$payload->{myTimestamp} = $context->one();
return $payload;
sub one {
my ($context) = @_;
return time();

The procedure retrieves test runs from HP ALM, groups them by the specified fields, creates report payload and sends the payload into the reporting system. To associate issues with Quality object, "Field mapping" parameter must be specified.

Field mapping has a format of "hp-alm-field:qualityField", where "hp-alm-field" is the name of the field in HP ALM test run (e.g. "testset.name") and the "qualityField" is the name of the field in Quality, e.g. "releaseProjectName". Most common fields are:

  • testset-name - the name of the test set of the particular run

  • status - string representation of the issue status, e.g. Passed

  • requirements.requirement-release-name - string representation of release name, e.f. My Release

  • duration - test run duration. Can be useful if separate test runs are sent - i.e. when "Fields to Aggregate" parameter is empty.

  • successfulTests, failedTests, skippedTests - special fields, indicate the status of the test. Can be used for aggregation. The value is always 1 or 0 for the each test run - depends on the test run result.

All available HP ALM fields can be seen in the procedure logs.

To gather some summary data, like sum of durations in the grouped runs, "Fields to aggregate" parameter must be specified. In case the parameter is empty, each issue will be sent as a separare report payload. Any field with numeric data can be used in this parameter. Mostly used fields are:

  • duration - test run duration

  • successfulTests, failedTests, skippedTests - the number of successful/failed/skipped tests.

The single test run can look like below:

$VAR1 = {
  'test-runtime-data' => '',
  'testcycl-id' => '1',
  'last-modified' => '2017-06-16 09:51:54',
  'iters-params-values' => '',
  'test-storage-path' => '1',
  'pinned-baseline' => '',
  'category' => 'SYSTEM-TEST',
  'assign-rcyc' => '',
  'ver-stamp' => '3',
  'test-text-sync' => '',
  'test-order-id' => '1',
  'test-status' => 'Design',
  'name' => 'Run_6-16_9-51-51',
  'cycle-id' => '1',
  'vc-status' => '',
  'test-check-out-user-name' => '',
  'test-vc-checkin-time' => '',
  'bpta-change-detected' => undef,
  'successfulTests' => 1,
  'test-name' => 'test1',
  'test-configurations-count' => '1',
  'cycle' => '',
  'test-owner' => 'admin',
  'test-timeout' => undef,
  'test-ver-stamp' => '199',
  'execution-date' => '2017-06-16',
  'test-vc-date' => undef,
  'attachment' => '',
  'test-exec-status' => 'Passed',
  'os-build' => 'Build 9200',
  'path' => '',
  'test-base-test-id' => undef,
  'bpt-structure' => '',
  'test-parent-id' => '1001',
  'test-subtype-id' => 'SYSTEM-TEST',
  'test-vc-status' => '',
  'os-config' => '',
  'test-config-id' => '1001',
  'cycle-name' => 'SampleTestSet',
  'vc-locked-by' => '',
  'run-start' => '2017-06-16 09:51:54',
  'comments' => '',
  'vc-version-number' => undef,
  'state' => '',
  'bpta-change-awareness' => '',
  'test-has-dependencies' => '0',
  'os-name' => '',
  'id' => '4',
  'test-has-criteria' => 'N',
  'test-vc-checkin-date' => undef,
  'test-instance' => '1',
  'iters-sum-status' => '',
  'test-description' => '',
  'test-template' => '',
  'duration' => '2',
  'execution-time' => '09:51:54',
  'test-vc-start-audit-action-id' => '1',
  'test-vc-time' => '',
  'test-vc-comments' => '',
  'subtype-id' => 'hp.qc.run.SYSTEM-TEST',
  'test-vc-checkin-comments' => '',
  'status' => 'Passed',
  'test-last-modified' => '2017-07-04 09:14:28',
  'test-steps' => '0',
  'test-vc-end-audit-action-id' => '1',
  'test-vc-version-number' => undef,
  'text-sync' => '',
  'test-estimate-devtime' => undef,
  'owner' => 'admin',
  'os-sp' => '',
  'test-creation-time' => '2017-06-15',
  'test-dev-comments' => '',
  'test-attachment' => '',
  'requirements' => [
        'requirement-rbt-custom-testing-hours' => undef,
        'requirement-check-out-user-name' => '',
        'release-has-attachments' => '',
        'requirement-ver-stamp' => '116',
        'requirement-last-modified' => '2017-07-04 09:14:42',
        'requirement-vc-checkin-user-name' => '',
        'requirement-rbt-func-cmplx' => '',
        'release-scope-items-count' => '1',
        'requirement-request-updates' => '',
        'requirement-father-name' => 'Requirements',
        'release-req-count' => '2',
        'release-last-modified' => '2017-06-15 14:07:48',
        'requirement-order-id' => '1',
        'requirement-rbt-custom-bsns-impact' => '',
        'requirement-rbt-use-custom-fail-prob' => '',
        'requirement-request-assign-to' => '',
        'requirement-parent-id' => '0',
        'release-start-date' => '2017-06-13',
        'requirement-has-rich-content' => 'N',
        'release-name' => 'Release',
        'requirement-hierarchical-path' => 'AAAAAB',
        'requirement-description' => '',
        'requirement-rbt-analysis-result-data' => '',
        'requirement-req-rich-content' => '',
        'requirement-vc-status' => '',
        'requirement-rbt-analysis-parent-req-id' => undef,
        'requirement-rbt-testing-hours' => undef,
        'requirement-rbt-last-analysis-date' => undef,
        'requirement-rbt-custom-testing-level' => '',
        'release-description' => '',
        'requirement-type-id' => '3',
        'requirement-vc-checkout-comments' => '',
        'requirement-rbt-rnd-estim-effort-hours' => undef,
        'requirement-request-id' => undef,
        'requirement-rbt-custom-func-cmplx' => '',
        'release-end-date' => '2017-06-17',
        'requirement-rbt-fail-prob' => '',
        'requirement-rbt-assessment-data' => '',
        'release-ver-stamp' => '2',
        'release-parent-id' => '1',
        'requirement-vc-checkin-date' => undef,
        'requirement-rbt-use-custom-risk' => '',
        'requirement-rbt-effective-bsns-impact' => '',
        'requirement-comments' => '',
        'requirement-req-reviewed' => 'Not Reviewed',
        'requirement-rbt-effective-risk' => '',
        'requirement-request-status' => '',
        'requirement-vc-version-number' => undef,
        'release-id' => '1001',
        'requirement-request-note' => '',
        'requirement-id' => '2',
        'requirement-vc-checkin-comments' => '',
        'requirement-rbt-risk' => '',
        'requirement-rbt-use-custom-func-cmplx' => '',
        'requirement-rbt-ignore-in-analysis' => '',
        'requirement-req-priority' => '',
        'requirement-owner' => 'admin',
        'requirement-rbt-bsns-impact' => '',
        'requirement-rbt-effective-fail-prob' => '',
        'requirement-rbt-custom-fail-prob' => '',
        'requirement-vc-checkout-date' => undef,
        'requirement-vc-checkin-time' => '',
        'requirement-rbt-effective-func-cmplx' => '',
        'requirement-istemplate' => '0',
        'requirement-request-type' => '',
        'requirement-name' => 'Req2',
        'requirement-req-time' => '14:11:01',
        'requirement-status' => 'Failed',
        'requirement-attachment' => '',
        'requirement-no-of-sons' => '0',
        'requirement-request-server' => '',
        'requirement-rbt-testing-level' => '',
        'requirement-vc-checkout-time' => '',
        'requirement-rbt-custom-risk' => '',
        'requirement-has-linkage' => 'N',
        'requirement-rbt-analysis-setup-data' => '',
        'requirement-creation-time' => '2017-06-15',
        'requirement-rbt-use-custom-tl-and-te' => '',
        'release-milestones-count' => '0',
        'requirement-req-product' => 'Product 1',
        'requirement-target-rcyc' => undef,
        'requirement-rbt-use-custom-bsns-impact' => ''
  'test-vc-checkin-user-name' => '',
  'testcycl-name' => 'test1 [1]',
  'host' => 'EC2AMAZ-7BNIV3U',
  'draft' => 'N',
  'environment' => '',
  'test-id' => '1',
  'auto' => 1,
  'test-has-linkage' => 'Y',
  'test-step-param' => '0',
  'has-linkage' => 'N'

To put a first-level field into the mapping, the field name will be enough, e.g. testcycl-name:myMappingField.

To map a field from an array, e.g the name of the release, dot syntax is used: requirements.release-name:releaseName, where "requirements" is the name of the array and "release-name" is the name of the object in the array.

Examples and use cases

CloudBees CD live test statistics

Log file

Release notes

EC-ALM 1.2.4

  • Documentation has been migrated to the documentation site.

EC-ALM 1.2.3

  • Renaming to "CloudBees CD"

EC-ALM 1.2.2

Renaming to "CloudBees"

EC-ALM 1.2.1

  • Configurations can be created by users with "@" sign in a name.

EC-ALM 1.2.0

  • Support of Release Command Center 9.0 has been added.

  • The plugin icon has been updated.

EC-ALM 1.1.2

  • Configured the plugin to allow the ElectricFlow UI to create configs inline of procedure form.

  • Icon for ElectricFlow Dashboards has been added.

EC-ALM 1.1.1

  • Configured the plugin to allow the ElectricFlow UI to render the plugin procedure parameters entirely using the configured form XMLs.

  • Enabled the plugin for managing the plugin configurations in-line when defining an application process step or a pipeline stage task.

EC-ALM 1.1.0

  • Added drill-down support for release command center.

EC-ALM 1.0.9

  • CollectReportingData procedure has been added.

EC-ALM 1.0.8

  • Fixed issue with configurations being cached for IE.


  • ElectricCommander is renamed to ElectricFlow.


  • Fixed manifest file.


  • Fixed unblessed reference in Run method.


  • Procedure name(s) were changed in the step picker section.


  • Fixed tooltips.


  • Changed Help page style.


  • Fixed Step picker category

  • Changed properties to make parameters display properly.


  • HP ALM 11 Integration