Contents

1. Overview

When Jira Data Center is migrated to Jira Cloud, the Polarion server still addresses the old Data Center instance in two places: the OSLC links its workitems hold towards Jira issues, and the Linked Data Associations connecting each Polarion project to a Jira project. This tool finds both and rewrites them to their Cloud broker equivalents.

The migration runs in two steps, with an auditable Excel file in between. Nothing is written to Polarion until you have had the chance to review exactly what will change.

The Atlassian ID mapping is needed for associations only. Jira issue keys survive the migration, so a link target such as …/cm/change-request/PROJ-1 keeps its key and only changes host. Numeric Jira project IDs, however, are reassigned: indexing associations needs the DC→Cloud ID mapping, fetched with --cloud or read from a CSV file with --idmappings.
Companion guides: This document covers the Polarion-side migration (index-polarion and update-polarion). For the Jira-side migration of remote links, GC version associations and broker project associations, refer to the main Migration Helper User Guide. For an IBM Engineering Lifecycle Management server, refer to the ELM Migration Helper User Guide.

2. How It Works

The process follows a fixed sequence of steps. index-polarion and update-polarion are the two commands in this package.

0
Jira DC → Cloud migration (Atlassian Migration Assistant)

Your Jira projects are migrated using Atlassian's tool. Jira issue keys survive the migration, so links need no ID mapping afterwards; associations do, because numeric project IDs are reassigned. This is the starting point.

1
Run index-polarion

Connects to Polarion, walks the OSLC service provider catalog to find every project, then collects the workitem links (sheet links) and the Linked Data Associations (sheet associations) that point at the Jira DC instance. Writes one Excel file per project to the working directory. --resource-types selects links, associations or both (the default).

2
Review the Excel files

Open the generated Excel files and inspect the results. Each row represents one link or association and shows its current status. You can optionally mark rows to be skipped or reprocessed before moving on.

3
Run update-polarion

Reads the Excel files and, for each workitem, fetches the current resource, replaces the Data Center link targets with their Cloud equivalents, and writes the resource back. For each project, repoints the associations to the Cloud service provider. The outcome of each row is written back into the same files.

4
Validate

Open the migrated workitems in Polarion and confirm that their links to Jira now point to the Cloud-side broker instead of the old DC instance. For associations, create a link to Jira Cloud from a workitem of each migrated project.

Safe to re-run: Both commands can be run multiple times without side effects. index-polarion appends newly discovered links and leaves existing rows untouched, except that a row already marked UPDATED whose link is discovered again is reset to INDEXED. update-polarion skips UPDATED and OMIT rows, retries FAILED_UPDATE rows, and processes REPROCESS rows again.

Which links are migrated

There is no fixed list of link types. Every link on a workitem is considered, and the target decides:

A link is migrated when its target URL starts with the Jira DC base URL configured in rest.properties.

3. Prerequisites

Software & environment
Component Requirement Notes
Java Version 21 or later The java executable must be available on the system PATH. Run java -version to check.
Polarion server OSLC API available The Polarion server must be running and reachable from the machine executing this tool, at the URL specified in polarion.properties. See Polarion endpoints for the endpoints used.
Jira Data Center Migrated to Jira Cloud The Atlassian Cloud Migration Assistant must have been used to migrate the Jira projects whose issues are linked from Polarion. Its base URL is used to recognise the links and associations to migrate. Jira DC is contacted only when associations are indexed without --idmappings, to fetch the DC→Cloud ID mapping.
OSLC Connect for Jira Cloud (broker) Any supported version The broker.baseUrl is used by update-polarion to construct the new link and association targets. The broker is not contacted by this tool.
Required permissions

The Polarion account configured in polarion.properties must be able to:

Associations also require a user name and password: a Personal Access Token alone is not enough. See Linked Data Associations.

Network connectivity

The machine running this tool must be able to reach the Polarion server. When associations are indexed without --idmappings, it must also reach Jira Data Center, to fetch the DC→Cloud ID mapping. No connection to Jira Cloud or the OSLC Connect broker is made.

4. Configuration Files

Three properties files control how the tool connects to each system. Template files for all three are included in this package. Edit them with a plain text editor before running anything.

Security notice: These files contain passwords and API tokens. Store them in a secure location, restrict access to authorized personnel only, and never commit them to source control.
config/polarion.properties Used by: index-polarion & update-polarion

Configures access to the Polarion server. Polarion is a single application, so one file describes one server.

PropertyWhat to enter
polarion.baseUrl Base URL of the Polarion server, including the context path.
Example: polarion.baseUrl=https://polarion.example.com/polarion
polarion.timeoutMs HTTP timeout in milliseconds. Default: 30000 (30 seconds).
polarion.token Polarion Personal Access Token, sent as Authorization: Bearer <token>. Preferred credential form for links.
polarion.username Polarion user name. Required for associations (form login). For links, used as Basic authentication only when polarion.token is absent.
polarion.password Password for the Polarion user above. Required for associations. For links, used only when polarion.token is absent.
Example
polarion.baseUrl=https://polarion.example.com/polarion
polarion.timeoutMs=30000

# Personal Access Token, sent as: Authorization: Bearer <token>
polarion.token=...

# User name and password. Required for associations (form login).
# For links, used as Basic authentication only when polarion.token is absent.
#polarion.username=...
#polarion.password=...
Authentication: configure at least one credential form, and complete pairs only. Setting neither, or only one half of the user name/password pair, is rejected when the file is loaded — so you find out at startup rather than through a 401 halfway through a run. When both are set, links use the token and associations use the user name and password: a token alone is not enough for associations.
config/rest.properties Used by: index-polarion --rest

Describes the Jira DC instance. The base URL identifies which Polarion links and associations point to Jira DC resources. When associations are indexed without --idmappings, the file is also used to reach the DC→Cloud ID mapping service on Jira DC; otherwise Jira DC is never contacted.

PropertyWhat to enter
rest.baseUrl Base URL of the Jira DC instance, including any application context path, e.g. https://jira-dc.example.com/jira.
rest.username Jira DC user name, used to fetch the ID mapping when associations are indexed without --idmappings. Otherwise not used, but required by the file validation: any non-empty value is accepted.
rest.password Password or personal access token for the user above, used in the same case. Otherwise not used, but required by the file validation: any non-empty value is accepted.
config/cloud.properties Used by: update-polarion --cloud & index-polarion --cloud

Describes the OSLC Connect broker and the Jira Cloud site. update-polarion uses the broker URL to build the new link and association targets. index-polarion uses the Cloud site URL to fetch the DC→Cloud ID mapping, needed for associations unless --idmappings is given. Neither Jira Cloud nor the broker is contacted.

PropertyWhat to enter
rest.baseUrl The Jira Cloud site URL, e.g. https://your-org.atlassian.net. Used by index-polarion to fetch the ID mapping for associations; otherwise not used, but required by the file validation.
rest.username Not used by the Polarion commands, but required by the file validation: any non-empty value is accepted.
rest.token Not used by the Polarion commands, but required by the file validation: any non-empty value is accepted.
broker.baseUrl The base URL of the OSLC Connect for Jira broker application, including the context path.
Example: https://broker.example.com/oslc-connect-jira
Required for update-polarion — the updater builds the new link and association targets from this property.

Step-by-Step Guide

0 Meet the Prerequisites

1 Prepare Your Configuration Files

  1. Open config/polarion.properties and fill in your Polarion base URL and credentials (a Personal Access Token, or a user name and password; associations need the user name and password).
  2. Open config/rest.properties and fill in your Jira DC base URL. It is used to identify the links and associations that point at Jira DC. Fill in the user name and password too if associations are indexed without --idmappings; otherwise they are not used but must be set.
  3. Open config/cloud.properties and fill in the broker URL, used to build the new link and association targets, and the Jira Cloud site URL (rest.baseUrl), used to fetch the ID mapping for associations. The other properties are not used but must be set.

2 Run the Indexer (index-polarion)

Open a terminal in the folder where this package is installed and run one of the commands below. The Indexer connects to the Polarion server to discover the OSLC links held by the workitems of each project and the projects’ Linked Data Associations, and writes one Excel file per project into the output folder.

Only links and associations whose URL starts with the Jira DC base URL are indexed. Those pointing to other servers are silently skipped.
Linux — make scripts executable first: Shell scripts shipped in a zip archive lose their execute permission. Before running any .sh file for the first time, grant the permission with:
chmod +x bin/index-polarion.sh bin/update-polarion.sh
Run the Indexer (all projects) — Windows
bin\index-polarion.bat --polarion config\polarion.properties --rest config\rest.properties --cloud config\cloud.properties --dir output\ --all-projects
Run the Indexer (all projects) — Linux
bin/index-polarion.sh --polarion config/polarion.properties --rest config/rest.properties --cloud config/cloud.properties --dir output/ --all-projects
Run the Indexer (specific projects) — Windows
bin\index-polarion.bat --polarion config\polarion.properties --rest config\rest.properties --cloud config\cloud.properties --dir output\ --projects proj,demo
Run the Indexer (specific projects) — Linux
bin/index-polarion.sh --polarion config/polarion.properties --rest config/rest.properties --cloud config/cloud.properties --dir output/ --projects proj,demo
Links only (no ID mapping, a token is enough) — Windows
bin\index-polarion.bat --polarion config\polarion.properties --rest config\rest.properties --dir output\ --all-projects --resource-types links
Links only (no ID mapping, a token is enough) — Linux
bin/index-polarion.sh --polarion config/polarion.properties --rest config/rest.properties --dir output/ --all-projects --resource-types links
Associations only, ID mapping from a CSV file — Windows
bin\index-polarion.bat --polarion config\polarion.properties --rest config\rest.properties --idmappings output\id-mappings.csv --dir output\ --all-projects --resource-types associations
Associations only, ID mapping from a CSV file — Linux
bin/index-polarion.sh --polarion config/polarion.properties --rest config/rest.properties --idmappings output/id-mappings.csv --dir output/ --all-projects --resource-types associations
All available options
OptionDescription
--polarion <file> Path to config/polarion.properties. Always required.
--rest <file> Path to config/rest.properties. Its base URL identifies the links and associations that point at Jira DC; unless --idmappings is given, it is also used to reach the DC→Cloud ID mapping service. Always required.
--cloud <file> Path to config/cloud.properties, used to fetch the DC→Cloud ID mapping. Required for associations unless --idmappings is given.
--idmappings <file> A DC→Cloud ID mapping CSV file, used instead of fetching the mapping through --rest and --cloud. Associations only.
--resource-types <types> Comma-separated list of resource types to index: links, associations. Defaults to both. Associations require polarion.username and polarion.password.
--dir <path> Folder where Excel files are written. Defaults to the current directory.
--all-projects Index every project advertised by the Polarion OSLC service provider catalog. Mutually exclusive with --projects; exactly one must be specified.
--projects <ids> Comma-separated list of Polarion project IDs to index (e.g. proj,demo). Mutually exclusive with --all-projects; exactly one must be specified.
--cloud on index-polarion is used only to fetch the DC→Cloud ID mapping for associations. Links need no mapping; the Cloud broker URL is applied by update-polarion.
A project ID the catalog does not advertise aborts the run, naming the unknown ID and listing the ones available. A typo should not look like “that project had no links to migrate”. Matching is case-sensitive, because Polarion project IDs are.
Output

After the Indexer finishes, you will find one Excel file per project in the output folder, named polarion_<projectId>_migration.xlsx. For example, with projects proj and demo:

output/
  polarion_proj_migration.xlsx
  polarion_demo_migration.xlsx

Each file contains a links worksheet listing the OSLC links pointing to Jira DC issues, and an associations worksheet listing the Linked Data Associations pointing to Jira DC projects. See the Appendix for the full column reference.

Files are only created when at least one link or association to migrate is found for the project. Projects with nothing to migrate produce no output file.

3 Review the Excel Files

Open the generated Excel files and review the results before running the Updater. Each row represents one link or association and includes a status column that tells you the outcome of the indexing step.

Common status values after indexing
Status Meaning What to do
INDEXED The link or association points at Jira DC. It is ready to be migrated. Nothing — the Updater will process it automatically.
FAILED_INDEX Associations only: the Jira DC project is absent from the ID mapping. Re-index once the project is migrated, or set to OMIT.
UPDATED On a re-run of the Indexer: the link was migrated by a previous Updater run and has not been discovered again. Nothing — the Updater will skip it.

→ Full list of all status values in the Appendix

Optional adjustments you can make

You can manually edit the status column of any row to control how the Updater handles it:

Do not edit any other columns (old_id, new_id, resource data columns) — those values are used by the Updater to construct the API calls and must remain intact.

4 Run the Updater (update-polarion)

The Updater reads the Excel files produced by the Indexer and, for each workitem, replaces the Jira DC link targets with their Cloud equivalents on the Polarion server in a single request. The outcome of each row is written back into the same files, so you always have a full audit trail.

Linux — make scripts executable first: If you have not done so already, grant execute permission with:
chmod +x bin/index-polarion.sh bin/update-polarion.sh
Run the Updater (all files) — Windows
bin\update-polarion.bat --polarion config\polarion.properties --cloud config\cloud.properties --dir output\ --all-projects
Run the Updater (all files) — Linux
bin/update-polarion.sh --polarion config/polarion.properties --cloud config/cloud.properties --dir output/ --all-projects
Run the Updater (specific projects) — Windows
bin\update-polarion.bat --polarion config\polarion.properties --cloud config\cloud.properties --dir output\ --projects proj,demo
Run the Updater (specific projects) — Linux
bin/update-polarion.sh --polarion config/polarion.properties --cloud config/cloud.properties --dir output/ --projects proj,demo
Validate the files without updating

Use --verify to parse and validate all input files without writing anything to Polarion. Associations are still loaded, so the Polarion user name and password are needed: for each project, the list that would be saved is written next to its workbook, as polarion_<project>_serviceproviders.xml. It has the format of the file Polarion keeps the associations in, <project>/.polarion/oslc/serviceproviders.xml, and holds the whole list: review it, or put it in place of that file to apply the change yourself. Useful to check the state of the working directory before committing updates.

Validate the files without updating (all files) — Windows
bin\update-polarion.bat --polarion config\polarion.properties --cloud config\cloud.properties --dir output\ --all-projects --verify
Validate the files without updating (all files) — Linux
bin/update-polarion.sh --polarion config/polarion.properties --cloud config/cloud.properties --dir output/ --all-projects --verify
All available options
OptionDescription
--polarion <file> Path to config/polarion.properties. Always required.
--cloud <file> Path to config/cloud.properties. Always required. Must include broker.baseUrl.
--dir <path> Folder containing the Excel files produced by index-polarion. Defaults to the current directory.
--verify Validation mode: parses and validates all input files without writing anything to Polarion, and writes the associations that would be saved next to each workbook.
--all-projects Process every polarion_*_migration.xlsx file in the working directory. Mutually exclusive with --projects; exactly one must be specified.
--projects <ids> Comma-separated list of Polarion project IDs (e.g. proj,demo); the matching migration files are resolved in the working directory. Mutually exclusive with --all-projects; exactly one must be specified.
What the Updater does for OSLC links

The Updater processes each workitem through a GET–replace–PUT cycle on the Polarion server:

  1. GET workitem — fetches the current RDF/XML representation of the workitem and its ETag header.
  2. Replace links — in the fetched RDF/XML, replaces each DC link with the corresponding Cloud link built from new_id and broker.baseUrl. If the Cloud link is already present alongside the DC link, the DC link is simply removed.
  3. Skip or PUT — if no DC link was found (the workitem is already up to date), the PUT is skipped entirely and the rows are marked as UPDATED. Otherwise, a PUT is sent with the modified RDF/XML body and an If-Match header carrying the ETag from the GET response.

All the links of one workitem are grouped and sent in a single request, whatever their types. Because of the If-Match header, a workitem someone else changed in the meantime fails with 412 instead of silently overwriting their edit; the rows of that workitem are marked FAILED_UPDATE.

Safe to re-run: UPDATED and OMIT rows are always skipped. FAILED_UPDATE rows are retried automatically with no data loss. No special flags are needed to resume after a partial failure.
What the Updater does for associations

For each project, the Updater loads the project’s Linked Data Associations, repoints the ones the associations sheet names to the Cloud service provider, and saves the list back. See Linked Data Associations for how the project is protected along the way.

Associations: migrate one project first. Run with --projects <one project> --verify, then without --verify, then create a link to Jira Cloud from a workitem of that project in the Polarion UI. Migrate the other projects once that works.

5 Validate

After the Updater finishes, verify that the migration was successful:

The Updater can be safely re-run at any time. Rows already marked UPDATED are skipped; rows marked FAILED_UPDATE are retried automatically.

Linked Data Associations

A Linked Data Association connects a Polarion project to a remote OSLC service provider — here, a Jira project — and is what the Polarion UI offers when a user creates a new link to Jira. After the migration it still names the Jira DC service provider, so new links would be created against the old instance.

An association is migrated when its URL starts with the Jira DC base URL configured in rest.properties, the same rule as for links. Associations to another Jira instance, or already on the Cloud broker, are left as they are. As for ELM, every domain is migrated: Jira DC publishes a service provider per domain, so a project associated in both CM and QM has two associations, each repointed to the Cloud service provider of its domain. Only the URL changes; the friend name, provider, domain and any other field are carried through. The new URL is:

<broker.baseUrl>/<domain>/provider/<Cloud project ID>

where <domain> is the short name of the association’s OSLC domain (cm for http://open-services.net/ns/cm#). The Cloud project ID comes from the DC→Cloud ID mapping; a DC project absent from it is marked FAILED_INDEX.

User name and password required. Polarion exposes associations in no documented API; the tool uses the endpoint the Polarion administration UI uses, which authenticates by form login. Indexing or updating associations therefore needs polarion.username and polarion.password; the run stops at startup, naming the missing properties, rather than half-way.

How the update protects the project

Polarion saves a project’s associations as a whole: the list sent replaces the project’s entire configuration, and an association missing from it is deleted. The updater is built around that fact:

Supported Polarion versions

Associations are migrated on Polarion 2310.

Appendix

A. Excel columns

links sheet
ColumnContent
old_idComposite key: source URL, link type and target URL joined by a pipe.
new_id/cm/change-request/ followed by the Jira issue key.
source_urlURL of the Polarion workitem holding the link.
link_typeThe link property URI exactly as Polarion advertised it, e.g. http://open-services.net/ns/cm#relatedChangeRequest.
target_urlThe Jira Data Center URL being replaced.
statusSee below. Editable.
status_detailHuman-readable outcome, including the server’s message on failure.
associations sheet
ColumnContent
old_idThe Jira Data Center service provider URL the association holds.
new_idThe Jira Cloud project ID, from the ID mapping.
friend_nameThe OSLC friend (remote server) the association goes through.
providerThe service provider name, as shown in Polarion.
domainThe OSLC domain URI.
extraAny additional value Polarion stores; usually empty.
statusSee below. Editable.
status_detailHuman-readable outcome, including the reason on failure.

B. Status values

The status column can hold the following values:

Value Set by Meaning
INDEXED index-polarion The link or association points at Jira DC. Ready for the update-polarion step.
FAILED_INDEX index-polarion Associations only: the Jira DC project is absent from the ID mapping. The Updater skips the row; re-index once the project is migrated.
UPDATED update-polarion Polarion link or association rewritten successfully (the DC target replaced with its Cloud equivalent).
FAILED_UPDATE update-polarion The update on the Polarion server failed. See status_detail for the exact cause. The row will be retried automatically on the next update-polarion run.
OMIT User Intentionally skipped. The Updater will not process this row, and re-indexing leaves it alone. Only set by the user editing the Excel file.
REPROCESS User Force the Updater to process this row again even if it was previously UPDATED. If the workitem or association already holds its Cloud URL, no write is sent and the row is marked UPDATED again.

Re-running index-polarion is safe. One behavior is worth knowing: a row already marked UPDATED that is discovered again is reset to INDEXED. The indexer only ever finds links that still point at Jira Data Center, so rediscovery means the link came back and needs migrating again.

C. Polarion endpoints

PurposeRequest
Project discoveryGET {polarion.baseUrl}/oslc/services/catalog
Workitem query capabilityGET each project service provider, taking the unfiltered .../workitems/oslc.query/ base
Workitem queryGET {queryBase}?oslc.select=*, following oslc:nextPage while present
Read a workitemGET {workitem}
Rewrite a workitemPUT {workitem} with If-Match
Load / save associationsGWT-RPC POST to the Polarion UI’s UniversalService, after a form login

All OSLC requests carry OSLC-Core-Version: 2.0 and the configured Authorization header. GET requests are made with Accept: application/rdf+xml; the PUT request sends the RDF/XML document as application/xml, with Accept: application/xml.

Known Limitations

OSLC links to unmigrated issues are not detected

OSLC links are not validated against any mapping. Every link targeting the Jira DC base URL receives INDEXED status regardless of whether the target issue actually exists in Jira Cloud.

The Atlassian ID mapping payload cannot be used for this validation because Jira DC OSLC resource URLs contain the issue key (e.g. ALPHA-1), not the numeric issue ID. The mapping payload only holds numeric ID pairs (serverId,cloudId), and resolving a key to its numeric ID would require querying the Jira DC instance, which may already be decommissioned by the time the migration tool runs.

If the target issue was not part of the Jira Cloud migration scope (e.g. its project was not selected for migration), update-polarion will overwrite the original DC link in the Polarion workitem with a Cloud broker URL that does not resolve. The original working DC link is lost.

Recommendation: ensure that all Jira DC projects referenced by Polarion OSLC links have been migrated to Cloud before running index-polarion and update-polarion. Rows whose target belongs to an unmigrated project can be set to OMIT.
OSLC links with historical issue keys may resolve to unintended issues

The indexer extracts the Jira issue key from the DC OSLC resource URL stored in the Polarion workitem (e.g. ALPHA-1 from .../cm/change-request/ALPHA-1) and uses it verbatim in the Cloud broker URL (e.g. /cm/change-request/ALPHA-1). No DC-to-Cloud issue key resolution is performed, for the same reason described above: issue keys cannot be resolved to numeric IDs without the Jira DC instance.

The Cloud OSLC broker resolves issue keys by calling the Jira Cloud REST API (/rest/api/3/issue/{issueIdOrKey}), which handles historical keys transparently. In most cases this works correctly.

However, if a pre-existing Cloud issue has the same key as the one stored in the Polarion workitem, the Cloud API returns the pre-existing issue instead of the migrated one. This can happen when:

In both cases, Jira’s historical key conflict resolution rules (see Migration of Jira’s historical keys for issues and projects) cause the Cloud active key to take priority over the DC historical key. The link resolves without error but points to the wrong issue.

Recommendation: before running the migration, verify that no Polarion OSLC link targets use historical Jira issue keys that conflict with active keys in the Cloud instance.

Troubleshooting

Configuration

Missing required property
Missing required property: rest.username

The named property is missing or empty in rest.properties or cloud.properties. Some properties are not used by the Polarion commands but are still required when the file is loaded; any non-empty value is accepted. See Configuration Files.

Polarion credentials rejected at startup
No credentials configured: set polarion.token, or polarion.username + polarion.password
polarion.username and polarion.password must be configured together

At least one credential form must be configured in polarion.properties: a Personal Access Token, or both a user name and a password.

Associations need a user name and password
Linked Data Association work needs polarion.username and polarion.password: ...

Associations are indexed or updated, but polarion.properties holds only a token. Add polarion.username and polarion.password, or index links only with --resource-types links. See Linked Data Associations.

Indexing (index-polarion)

Indexing associations needs the DC->Cloud ID mapping
Indexing associations needs the DC->Cloud ID mapping: provide --cloud, or --idmappings.

Associations are indexed (the default) but neither --cloud nor --idmappings was given. Add one of them, or index links only with --resource-types links.

Unknown Polarion project(s)
Unknown Polarion project(s): Proj. Available: demo, proj

A project ID given with --projects is not advertised by the Polarion OSLC catalog, and the run is aborted. Project IDs are case-sensitive: use them exactly as listed after Available:.

index-polarion failed: HTTP … from …/oslc/services/catalog
index-polarion failed: HTTP 401 from https://polarion.example.com/polarion/oslc/services/catalog: ...

The OSLC catalog could not be read, so no project can be indexed and the run is aborted. A 401 or 403 means the Polarion credentials are invalid or not allowed; a 404 usually means polarion.baseUrl is missing the context path (e.g. /polarion).

No Polarion project to index

The OSLC catalog was read but advertised no project. Check that the Polarion account can see the projects to migrate (see Required permissions).

No workitem query capability found
[proj] No workitem query capability found, skipping

The project’s service provider does not advertise the unfiltered workitem query capability (a query base ending in /workitems/oslc.query/), so its links cannot be read. The project is skipped and no file is written for it.

Skipping link with no trailing ID
Skipping link with no trailing ID in target URL: https://jira-dc.example.com/...

The link points at Jira DC but its target URL does not end with an issue key, so it cannot be rewritten. The link is not written to the Excel file and stays unchanged in Polarion.

Failed to index project
[proj] Failed to index project, skipping

A Polarion request failed while reading this project; the logged exception carries the HTTP status and response body. The other projects are still indexed. An HTTP 401 or 403 means the Polarion credentials are invalid or lack read access to the project.

Updating (update-polarion)

broker.baseUrl is required
broker.baseUrl is required in cloud.properties for the update-polarion step.

Set broker.baseUrl in cloud.properties, including the context path (e.g. https://broker.example.com/oslc-connect-jira).

No Polarion migration files found / File not found
No Polarion migration files found in /path/to/output
File not found: output/polarion_proj_migration.xlsx

Check that --dir points to the folder written by index-polarion, and that the IDs given with --projects match the project IDs in the file names. A project with no migratable links has no file.

FAILED_UPDATE with status 412

The workitem was modified in Polarion between the Updater’s read and its write, so the write was refused rather than overwriting the other change. Re-run update-polarion: the workitem is read again and the rows are retried.

FAILED_UPDATE with status 401 or 403

The Polarion account cannot modify the workitem. Check that it has write access to the workitems carrying the links (see Required permissions), then re-run update-polarion.