{"id":20801903,"url":"https://github.com/philips-software/rtc-ads-migration-tool","last_synced_at":"2025-07-18T03:33:49.889Z","repository":{"id":96542377,"uuid":"547384705","full_name":"philips-software/RTC-ADS-Migration-Tool","owner":"philips-software","description":"Migrate work items from IBM RTC (Rational Team Concert) to ADS (Azure DevOps)","archived":false,"fork":false,"pushed_at":"2023-05-16T15:20:15.000Z","size":119,"stargazers_count":5,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-09T20:44:45.060Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/philips-software.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-07T15:39:39.000Z","updated_at":"2024-12-10T18:32:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"fa4c707f-57e8-43dc-af64-068a0d7a2b58","html_url":"https://github.com/philips-software/RTC-ADS-Migration-Tool","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/philips-software/RTC-ADS-Migration-Tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-software%2FRTC-ADS-Migration-Tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-software%2FRTC-ADS-Migration-Tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-software%2FRTC-ADS-Migration-Tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-software%2FRTC-ADS-Migration-Tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/philips-software","download_url":"https://codeload.github.com/philips-software/RTC-ADS-Migration-Tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/philips-software%2FRTC-ADS-Migration-Tool/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265696669,"owners_count":23812821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-17T18:25:27.700Z","updated_at":"2025-07-18T03:33:49.862Z","avatar_url":"https://github.com/philips-software.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RTC-ADS-Migration-Tool\nMigrate work items from IBM RTC (Rational Team Concert) to ADS (Azure DevOps)\n\n## Introduction \nThis project is a Python script which migrates work items from IBM RTC to Microsoft Azure DevOps and links parent/child hierarchy.\n\nIt uses the [Azure DevOps Python API](https://github.com/Microsoft/azure-devops-python-api) and a specific fork of [rtcclient Python package](https://rtcclient.readthedocs.io/en/latest/quickstart.html#) which works with older versions of RTC in order to perform operations via REST API.\n\n## This script currently supports migrating the following RTC Work Item Types:\n- Epic\n- Feature\n- Story\n- Defect Story\n- Documentation Story\n- Enhancement Story\n- AST Story\n- Assessment Story\n- Defect Story\n- SIT Story\n- Technical Spike\n\nSupport for more work items can be added in the CONFIG.py file\n\n# Setup\n\n## Python\n- **Python 3.8.1** was used during development\nAll dependencies are mentioned in the file scripts/requirements.txt. \nIn order to install the dependencies, run this command:\n```\npip install -r scripts/requirements.txt\n```\n\n## rtcclient\n- This repo uses a custom version of the rtcclient Python package based on version 0.6.0 which fixes an authentication error and adds some custom functions such as \"getUserEmail(userId)\". \nTo install this package locally, remove rtcclient if you already have it installed, and install the `rtcclient-custom` folder located in this repo by running the following commands:\n```\n    $ git clone https://github.com/philips-forks/rtcclient rtcclient-philips \n    $ cd ..\n    $ pip uninstall rtcclient\n    $ pip install -e ./rtcclient-philips/\n```\n\n## Config file auth variables\nTake the template ex_CREDENTIALS.py file, fill out the values, and rename it as `CREDENTIALS.py` In order to run this repo you will need to fill out the following varaible values:\n```\n# RTC Auth Creds\nRTC_USERNAME = \"\" # mypassword123\nRTC_PASSWORD = \"\" # myusername\n\n# Azure DevOps Auth Creds\npersonal_access_token = \"\"\n\n# RTC input location (STP ULT)\nRTC_URL = \"\" # https://rtcus1.ta.mycompany.com/ccm\nRTC_projectarea_name = \"\" # \"PROJECTARENAME\"\n\n# ADS output location\norganization_url = '' # https://dev.azure.com/ADS-Org-Name\nads_project_name = '' # \"Project-Name\"\n\n# RTC input email domain \nuser_domain = \"\" # \"@companyname.com\"\n\n```\n## Inputs\nCurrently there are two accepted input methods. RTC Query URLs, and a CSV file input. To enable one of these inputs, change this code in the `scripts/CONFIG.py` file:\n```\n###################################\n# Input Method (only one can be true at a time)\n###################################\ncsv_input = False \ncsv_filepath = \"csv_input\\\\frups ex.csv\"\nrtc_query_url_input = True \n```\n## Input method 1 RTC Query Urls\nGet RTC query URL's by copying the query link online like so:\u003cbr\u003e\n\u003cimg height=\"300px\" src=\"./README_media/copy_link_img.png\"\u003e\n\u003cbr\u003e\nMake sure your RTC Queries only query for one RTC Work Item Type at a time, so you have queries for Epics, queries for Features, etc.\nPaste your Query URLs (separated by commas) inside the CONFIG rtc_query_urls object like so:\n```\nrtc_query_urls = {\n    'epic':[\n        \"queryURL1\",\n        \"queryURL2\",\n        \"queryURL3\",\n        \n    ], \n    'feature':[\n      'queryURL1'\n    ],\n    ...\n}\n```\n## Input method 2: CSV input\nDownload a CSV file from the RTC query view, make sure all columns are selected. Save this CSV file inside the `csv_input` folder, and add the csv filename to `csv_filepath` inside `scripts/CONFIG.py`\n\n## Area / Iteration Path Mapping\nBefore you run a migration it is important to check your Azure DevOps project output to see what options are available for Area / Iteration Path:\n\u003cbr\u003e\n\u003cimg height=\"300px\" src=\"./README_media/iterations_areas_img.png\"\u003e\n\u003cbr\u003e\nYou will want to make sure that the values for `Planned For` in your RTC query URLs will be able to get brought over to ADS:\n\n\u003cimg height=\"300px\" src=\"./README_media/rtc_planned_for.png\"\u003e\n\u003cbr\u003e\n\n# Running a migration\nOnce your CONFIG file variables are all filled out, run a migration by running the file:\n```\npython scripts/migration.py\n```\nThis file will migrate every work item from your query URLs inside `rtc_query_urls`, it will format ADS Attributes using RTC Properties specified in the `work_items_property_map` CONFIG var. \n\nOnce each RTC Work Item has been migrated to Azure DevOps, the script will link every parent/child hierarchy between the migrated work items.\n\n\n# Devloping for this script:\n\n## How to view all fields in Azure Ticket:\n- Get orgnization, project, and work item id, add to url like so to view all fields:\n```\nhttps://dev.azure.com/{organization}/{project}/_apis/wit/workitems/{id}?$expand=fields\u0026api-version=7.1-preview.3\n```\nExample URL to view all fields in Azure DevOps work item with ID = 826:\n\nhttps://dev.azure.com/proj/ULT/_apis/wit/workitems/826?$expand=fields\u0026api-version=7.1-preview.3\n\n\n## How to view all fields in RTC Ticket\n- Go to url formatted like this with the RTC Work ID at the end to see xml data:\n\nhttps://rtc_url/ccm/oslc/workitems/168082\n\nUse this view to search for RTC Property values such as `rtc_cm:targeted_release`\n\n\n## How to run the Python rtcclient package from your terminal:\n```\npip uninstall rtcclient\npip install -e .\\rtcclient-custom\\\npython\n\u003e\u003e\u003e from rtcclient.utils import setup_basic_logging\n\u003e\u003e\u003e from rtcclient import RTCClient\n\u003e\u003e\u003e setup_basic_logging()\n\u003e\u003e\u003e myclient = RTCClient(\"RTC_URL\", \"RTC_USERNAME\", \"RTC_PASSWORD\", ends_with_jazz=False)\n\u003e\u003e\u003e myclient.getWorkitem(\"work item id\")\n\u003e\u003e\u003e myclient.getUserEmail(\"rtc user id\")\n```\n\n# How to delete created Azure tickets:\n- Go to organization / project search page:\n`https://dev.azure.com/{organization}/{project}/_workitems/recentlycreated/`\n- Search for tag 'RTC-Migration', change filter to search for 'Recently created' and 'Recently completed', select multiple, click on row options, delete.\n\n# rtcclient-custom \n- Started with rtcclient v0.6.0\n- Added the following code to the base.py file before `response = requests.get(url`:\n```\n        requests.packages.urllib3.disable_warnings()\n        requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += ':HIGH:!DH:!aNULL'\n        try:\n            requests.packages.urllib3.contrib.pyopenssl.util.ssl_.DEFAULT_CIPHERS += ':HIGH:!DH:!aNULL'\n        except AttributeError:\n            # no pyopenssl support used / needed / available\n            pass\n```\n- Added the following functions to client.py:\n  - getUserEmail()\n  - getFeaturePlannedForValue()\n  - getTeamTrackBool()\n  - getChildrenInfo()","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilips-software%2Frtc-ads-migration-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphilips-software%2Frtc-ads-migration-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphilips-software%2Frtc-ads-migration-tool/lists"}