BuildButler

HP ALM / OpenText ALM Integration — Automate Test Results from CI

Automatically upload Jenkins, GitHub Actions, and GitLab CI test results to HP ALM / Micro Focus ALM / OpenText ALM Quality Center. Replace manual exports, Bumblebee, and custom scripts with BuildButler's zero-code TCM integration.

If your team manually exports test results from Jenkins to HP ALM (now OpenText ALM / Quality Center), you already know the pain. Copy-pasting results into Test Lab. Writing fragile scripts that break when ALM upgrades. Spending hours every sprint on busywork instead of testing.

BuildButler eliminates all of that. Connect your CI system — Jenkins, GitHub Actions, or GitLab CI — define your mapping rules, and test results flow into ALM automatically on every build.

How it works

BuildButler exports test results to OpenText ALM (formerly HP ALM / Micro Focus ALM / Quality Center) by mapping CI test results to ALM Test Plan test cases, Test Lab test sets, test instances, and runs.

There are two integration modes:

  • Jenkins Local plugin — a post-build step configured per job in the Jenkins UI. Best for on-premise teams that want fine-grained per-job control.
  • Standalone / Cloud — a JSON mapping rule configured in BuildButler system settings. Best for centralized, pattern-based routing across all jobs.

Configuration example

Define JSON rules that pattern-match CI jobs and route results to ALM projects:

[
  {
    "jobPattern": "backend/*",
    "domain": "DEFAULT",
    "project": "BackendSuite",
    "testPlanDirectory": "Subject\\Automated\\Backend",
    "testLabDirectory": "Root\\Automated\\{jobName}",
    "testSet": "{jobName} #{buildNumber}",
    "customProperties": "Test Environment=CI, Test User 1=automation"
  },
  {
    "jobPattern": "regression/*",
    "domain": "DEFAULT",
    "project": "RegressionSuite",
    "testPlanDirectory": "Subject\\Regression",
    "testLabDirectory": "Root\\Regression\\{branch}",
    "testSet": "Regression {buildNumber}"
  }
]

Template variables

Use dynamic values in your configuration:

VariableDescription
{jobName}CI job name
{buildNumber}Build number
{branch}Git branch name

Supported test formats

BuildButler parses test results in all major formats:

  • JUnit**/target/surefire-reports/*.xml
  • TestNG**/target/surefire-reports/*.xml
  • TRX (.NET) — **/*.trx
  • Allure**/allure-results/*-result.json
  • Cucumber**/cucumber.json
  • Robot Framework**/output.xml

Test Plan modes

ModeBehaviour
find-only (default)Searches Test Plan for each test by name. Tests not found in ALM are silently skipped. Never writes to Test Plan.
create-minimalCreates a bare stub for tests not found in ALM. Existing tests are never modified.

Automatic defect management

BuildButler can automatically create, reopen, and close defects in ALM based on test results — no manual triage required.

PolicyWhat it does
CreateCreates a new defect for each failing test, or updates an existing open defect
ReopenCreates or reopens a defect for each failing test
ResolveCloses any open defect whose corresponding test now passes

Configure severity, status mappings, and custom field values to match your ALM workflow. Defect summaries are prefixed with [Build Butler] to distinguish them from manually created defects.

Bumblebee-compatible field mappings

If you're migrating from Bumblebee, BuildButler supports the same ALM Field Mappings XML format. Your existing XML configuration works as-is:

<mappings>
  <url url="https://alm.example.com:8080/qcbin">
    <domain name="DEFAULT">
      <project name="test_project">
        <mapping alm_field="TS_USER_01" label="test user 1"/>
        <mapping alm_field="CY_USER_01" label="test set user 1"/>
        <mapping alm_field="RN_USER_01" label="run user 1"/>
      </project>
    </domain>
  </url>
</mappings>

Why not use the OpenText plugin directly?

OpenText provides the Application Automation Tools plugin for Jenkins. It works, but it's Jenkins-only and requires YAML-based field mapping configuration. If you use GitHub Actions, GitLab CI, or multiple CI systems, you need separate solutions for each.

BuildButler gives you:

  • One configuration for all CI systems — Jenkins, GitHub Actions, GitLab CI, TeamCity, BuildKite
  • JSON rules with glob patterns — simpler than YAML field mapping
  • CI analytics alongside TCM — build trends, flaky test detection, Ask AI, JIRA integration
  • Bumblebee-compatible XML — drop-in migration from Bumblebee without rewriting config

Supported CI systems

ALM integration works with all CI systems BuildButler supports:

  • Jenkins (Local plugin or Cloud API)
  • GitHub Actions
  • GitLab CI
  • TeamCity
  • BuildKite

Getting started

  1. Sign up for BuildButler (free tier includes ALM integration)
  2. Connect your CI system (Jenkins plugin, GitHub Actions, GitLab CI, or API)
  3. Configure your ALM credentials in System Settings
  4. Define your job mapping rules
  5. Run a build — results appear in ALM automatically

See the full ALM configuration reference for all available fields and options.

On this page