Running the postmigration utility for BMC Helix Digital Workplace
After you successfully perform the BMC Helix Digital Workplace data migration from version 20.08 or earlier to version 21.3.xx, you must run the postmigration script to perform basic checks on the target environment and correct any issues found. Run the postmigration utility irrespective of the migration type, on-premises-to-on-premises and on-premises-to-SaaS migrations.
Perform the following actions after the data migration:
Before you begin
- Download the DWP-A_Post_Migration_Utility ZIP file from BMC Electronic Product Distribution (EPD).
Log in to EPD .
You must log in with your BMC Support ID.- Select Product Downloads > Product Download Tool.
- On the All Products tab, in the search box, search for the BMC Helix Digital Workplace Advanced OnPrem product.
- Click the 21.3.06 product version.
- In the BMC Helix Digital Workplace Advanced OnPrem page, on the Product tab, navigate to and select BMC Helix Digital Workplace OnPrem Data Migration Utilities Version 21.3.06, and click Download.
The DWP-A_Post_Migration_Utility.zip file is downloaded.
Install Open JDK version 11.
Confirm the Java version by using the following command:c:/> java -versionIf you have Open JDK version 11 installed, the command returns an output similar to the following example:
c:/> openjdk version "11.0.1" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.1+13)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.1+13, mixed mode)If you do not have Open JDK version 11 installed, install it by using one of the following links, based on your operating system:
Windows OS: OpenJDK 11 for Windows installation options
Ensure that the JAVA_HOME variable value is set.
To check whether the JAVA_HOME variable is set, use the following command:Windows: echo %JAVA_HOME%
Linux: echo $JAVA_HOME
To run the utility
- Copy the ZIP file to the server where you want to run the utility.
Extract the DWP-A_Post_Migration_Utility.zip file to a folder.
The following files are extracted from the ZIP file:
File name
Description
application.properties
Properties file that contains all properties that are required to run the postmigration utility.
run.cmd
Script file to run the utility in a Windows OS.
run.sh
Script file to run the utility in a Linux OS.
DWPC_Input_Template.csv
Input for the utility to run BMC Helix Digital Workplace Catalog checks.
Important: Do not change anything in this file.
DWP_Input_Template.csv
Input for the utility to run BMC Helix Digital Workplace checks.
Important: Do not change anything in this file.
DWP-A_Post_Migration_Utility-1.0.0.jar
Utility source file.
Important: Do not delete this file.
Edit the application.properties file and set values for the properties as described in the following table:
Property name
Description
Default value
tool.output.type
Set this property to print the results to an output file after the utility is run.
Possible values are:- All : Print all types of results in the output file, namely Pass, Fail, Info, and Manual
- Pass: Print results only for checks that pass
- Fail: Print results only for checks that fail
- Info: Print results that contain only information
- Manual: Print results only for checks that need to be handled manually
All
input.performFix
Set this property to true if a fix needs to be applied for failed checks.
Set it to false if you want to review the results before applying the fix, set this property to false. This property applies only for BMC Helix Digital Workplace checks.
False
Target Environment Details (version 21.3.xx)
application.dwpc.available
Set this property to true if you are using BMC Helix Digital Workplace Catalog; otherwise, set it to false.
Note: If this property is set to false, BMC Helix Digital Workplace Catalog related checks are not executed.
True
application.bwf.available
Set this property to true if you are using BMC Helix Business Workflows, otherwise, set it to false.
Note: If this property is set to false, the utility will not validate the BWF Pluggable Provider in BMC Helix Digital Workplace.
True
feature.external.user.enable
Set this property to true if you are using the External User feature.
Note: If set to true, the utility will validate all configurations related to external user feature.
True
DWPC Admin Credentials (Optional)
Provide the BMC Helix Digital Workplace Catalog base URL, user name, and password.
Note: Configure this property if application.dwpc.available is set to true and you are using BMC Helix Digital Workplace Catalog.
Not applicable
Converged Database Credentials
Provide the database driver, JDBC URL, username, and password credentials.
Not applicable
DWP Admin Credentials
Provide the BMC Helix Digital Workplace base URL, user name, and password.
Not applicable
AR System Credentials
Provide the AR System host name, port, user name, and password.
Note: If the server IP address is not mapped to any host, specify the IP address instead of the host name.
Not applicable
Innovation Studio Credentials
Provide the BMC Helix Innovation Studio base URL, user name, and password.
Not applicable
Source Environment Details (Version: 20.08 or earlier):
Tenant Database Credentials (Optional)
Provide the database driver, JDBC URL, username, and password credentials.
Note: If your tenant database is up, provide these details to compare and fix the data in certain checks. If the customer chooses not to provide the information, do not delete or comment out the property names in the property file. For on-premises-to-SaaS migration, the source database might not be accessible from a SaaS environment. In such a case, ignore this property.
Not applicable
- Navigate to the folder where you extracted the files.
From the terminal or command prompt, run the utility by using one of the following commands:
Windows: run.cmd
Linux: run.sh
To view and analyze the results
Once complete, the utility creates an output folder in the current directory and generates the following files:
File name | Description |
---|---|
PROPERTY_VALIDATION<timestamp>.csv | Lists the properties (credentials) used for connections and reports whether their statuses are correct or incorrect. Important:
|
DWP_<timestamp>.csv | Contains the BMC Helix Digital Workplace results. |
DWPC_<timestamp>.csv | Contains the BMC Helix Digital Workplace Catalog results. Important: Check whether "Checklist No: 04 Check and fix next ID should be correct" is fixed by the utility. If it is, restart all AR pods. |
The file names are suffixed with a timestamp.
Contents of the output files
Based on the script run mode, the output files list the following statuses:
Run mode | Status | Description |
---|---|---|
Run mode = Check (input.performFix = false) | ||
Pass | Check is passed. | |
Info | Only a version check is performed, and the DWP/DWPC/platform version is printed. | |
Manual | Check failed. Follow the steps to fix manually. | |
Fail | Check failed, but the fix is available in the utility. If the utility is run in fix mode, it is fixed by the utility. | |
Run mode = Fix (input.performFix = true) | ||
Pass | Check is passed. | |
Info | Only a version check is performed, and the DWP/DWPC/platform version is printed. | |
Manual | Check failed. Follow the steps to fix manually. | |
Fail | Check the utility logs for more information about the failures. |
To manually fix issues
Check the output DWP_xx and DWPC_xx files for entries where the RESULT value is Manual. Use the following table for steps to manually correct these issues or, if required, perform additional steps. Users who perform these steps must have the following permissions:
- For BMC Helix Digital Workplace: MyIT Admin and MyIT Super Admin permissions
- For BMC Helix Digital Workplace Catalog: Catalog Admin permission
Checklist number | Description | Steps to fix |
---|---|---|
03 | Verify the Enhanced Catalog feature in BMC Helix Digital Workplace. If the feature is enabled, verify that its connectivity is proper. Note: This needs to be checked if BMC Helix Digital Workplace is used. |
|
06 | Verify connect properties, namely, connect.arsystem.hostName, connect.arsystem.password, and connect.arsystem.port in ConfigurationParams record def |
|
07 | Verify there is only one default subtenant. |
|
08 | Verify that the DWP Subtenant User Role Group is defined with production field value as dwp:DWP Subtenant User Role Group. |
|
09 | Verify the height and width properties of the rebranding image. |
|
10 | Verify that the DWP URL is configured in the security_iframe_allowurls parameter in the Action Request System Centralized Configuration settings. |
Important: If there are multiple URIs, the URIs must each be separated by a space. |
12 | Verify that the Value field in each row contains the DWPC URL. This value must be the same for all records, except for the record where SubTenantId=SUBTENANT_SEED_DATA.
|
|
14 | Check if all SbeUrl contain the same value as keyName with SbeUrl and respective dataaccessgroup according to its Subtenant. |
|
20 | Check for duplicate catalog sections in Admin console. |
|
21 | Validate Approval settings are migrated as per the source environment. |
|
Checklist number | Description | Steps to fix |
---|---|---|
04 | Check and fix next ID should be correct. | Important: Check whether "Checklist No: 04 Check and fix next ID should be correct" is fixed by the utility. If it is fixed, restart all AR pods.
|
08 | Check and fix Workflows that have Process Correlation ID instead $CURRENTTIMESTAMP$. |
|
09 | Check and fix Workflows that have inputs for Call Activity. |
|
10 | Check and fix Tenant Config > AttachmentFormat includes PNG or same as source. Open the DWPC Tenant Config table in BMC Helix Innovation Studio. Make sure that the AttachmentFormat field includes PNG or that it is the same as the source environment. |
|
11 | Check and fix Tenant Config should have one record. |
|
16 | Check and fix Workflows should not have unconnected nodes. |
|
17 | Check and fix Groups (custom) should be migrated. |
Query To Fix
Oracle: DECLARE count_vm_tag integer; time_stamp integer; schema_id_tag varchar2(5); SQLQuery varchar2(500); vm_new_tag_guid varchar2(50) := concat('VM',time_stamp); vm_tag_id varchar2(50); BEGIN SELECT (CAST(SYSDATE AS DATE) - CAST(TO_DATE('1970-01-01', 'YYYY-MM-DD') AS DATE)) * 86400 INTO time_stamp FROM DUAL; select schemaid INTO schema_id_tag from arschema where name = 'Tag'; select count(*) INTO count_vm_tag from tag t where t.tag_name = 'virtualmarketplace'; IF (count_vm_tag < 1) THEN SQLQuery := 'INSERT INTO T' || schema_id_tag || ' (C1,C2,C3,C4,C5,C6,C7,C8,C16,C179,C881,C56022) VALUES (''VM00001'', ''HDM'', ' || time_Stamp || ', NULL, ''HDM'', ' || time_stamp || ', 0, ''Tag'', 0, ''' || vm_new_tag_guid || ''', ''virtualmarketplace'',NULL)'; EXECUTE IMMEDIATE SQLQuery; END IF; select Tag_ID INTO vm_tag_id from Tag where Tag_Name = 'virtualmarketplace'; INSERT INTO TagMapping (Request_ID,Submitter,Submit_Date,Last_Modified_By,Last_Modified_Date,Status,Description,Notifier_Listening, Object_ID,Tag_ID,Object_Type,Tag_Mapping_ID,BUNDLE_SCOPE) select substr(gx.Unique_Identifier,1,11) || '_VM', 'HDM' , time_stamp, 'HDM',time_stamp,0,'tags',0,gx.Unique_Identifier , substr(gx.Unique_Identifier,1,11) || '_VM',0, vm_tag_id,'myit-sb' from group_x gx inner join myit_sb_VirtualMarketplaceGrou msvmg ON CAST(gx.Group_ID as varchar2(250)) = msvmg.GroupId where gx.Group_Name not in ( SELECT g.Group_Name FROM group_x g INNER JOIN tagmapping tm ON tm.object_id = g.unique_identifier INNER JOIN tag t ON t.tag_id = tm.tag_mapping_id WHERE t.tag_name = 'virtualmarketplace' ); END; Postgres: do $$ DECLARE count_vm_tag integer; createDate integer; vm_new_tag_guid text; vm_tag_id text; BEGIN createDate :=extract(epoch from now()); select count(*) into count_vm_tag from tag t where t.tag_name = 'virtualmarketplace'; if count_vm_tag < 1 then vm_new_tag_guid := 'vm' || createDate; INSERT INTO tag (request_id,submitter,submit_date,last_modified_by,last_modified_date,status,tag_long_name,notifier_listening,tag_name,tag_id, record_id) VALUES ('VM00001','HDM',createDate,'HDM',createDate,0,'Tag',0,'virtualmarketplace',vm_new_tag_guid,vm_new_tag_guid); end if; select Tag_ID into vm_tag_id from Tag where Tag_Name = 'virtualmarketplace'; INSERT INTO TagMapping (Request_ID,Submitter,Submit_Date,Last_Modified_By,Last_Modified_Date,Status,Description,Notifier_Listening, Object_ID,Tag_ID,Object_Type,Tag_Mapping_ID,BUNDLE_SCOPE, record_id) select substring(gx.Unique_Identifier,1,10) || '_VM', 'HDM' , createDate, 'HDM',createDate,0,'tags',0,gx.Unique_Identifier , substring(gx.Unique_Identifier,1,10) || '_VM',0, vm_tag_id,'myit-sb' , substring(gx.Unique_Identifier,1,10)|| '_VM' from group_x gx inner join myit_sb_VirtualMarketplaceGrou msvmg ON CAST(gx.Group_ID as text) = msvmg.GroupId where gx.Group_Name not in ( SELECT g.Group_Name FROM group_x g INNER JOIN tagmapping tm ON tm.object_id = g.unique_identifier INNER JOIN tag t ON t.tag_id = tm.tag_mapping_id WHERE t.tag_name = 'virtualmarketplace' ); end; $$; Because the Request IDs might have changed in the target system, it is important to confirm that the mappings of the Group List, under User, are mapped to the new target lists. The migration uses the following data enrichment for this field on the User form: Note: This issue is fixed in the utility run if the source DB information is provided. |
19 | Check and fix Logging (catalog) should not be in trace. |
|
20 | Check TenantConfiguration table has CompaniesWithoutOrgs set as source environment value. The query should return 1. GET /api/rx/application/datapage?dataPageType= com.bmc.arsys.rx.application.record.datapage.RecordInstance DataPageQuery&pageSize=-1&startIndex= 0&recorddefinition=myit-sb:TenantConfiguration& propertySelection=420003341 SELECT companieswithoutorgs FROM myit_sb_tenantconfiguration | This value should be same as in the source DB. Note: This issue is fixed in the utility run if the source DB information is provided. If you face any issues, contact BMC Support. |
21 | Check and fix SurveyTemplate > DefaultTemplate should be true and there should be no duplicate records. |
|
24 | Check and fix Tenant Config >"Auto-add dependent items to new requests" should be same in source. The following endpoint must return the same result for the source and target systems. /api/rx/application/datapage?dataPageType=com.bmc.arsys.rx. application.record.datapage.RecordInstanceDataPageQuery&pageSize =-1&startIndex=0&recorddefinition=myit-sb:TenantConfiguration | Compare the auto_add_dependency in myit_sb_TenantConfiguration with the source to target environment. If the AutoAddDependency value in the target environment is false, it should be the same in the source as well. Note: This issue is fixed in the utility run if the source DB information is provided. If you face any issues, contact BMC Support. |
28 | Check all categories are in a category group. |
SELECT distinct category_group_id FROM myit_sb_mp_search_categories WHERE NOT EXISTS ( SELECT 1 FROM myit_sb_mp_search_category_gro WHERE request_id = category_group_id) AND category_group_id <> '1' 2. Run the following query that returns a single category group (it cannot be more than one or less than one): SELECT * FROM myit_sb_mp_search_category_gro WHERE system_id = 'type-of-service' 3. If Step 2 returns only one record, run the following query for the update, use category_group_id from step 1 query: UPDATE myit_sb_mp_search_category_gro SET request_id = <category_group_ID_as_determined_above> WHERE system_id = 'type-of-service' |
31 | Verify that Questionnaires do not reference IS Foundation. |
|
33 | Check whether the workflows have new line issues. '$New Line' instead of $\NO$. |
|
37 | Banner and Service logs are broken in BMC Helix Digital Workplace Catalog. | Re-migrate with full migration for form myit-sb:ContentDefinitionform with an updated HDM version. |
38 | Check if there are any duplicate login IDs in CTM People. | If you see duplicate login IDs in CTM People, contact BMC support. |
To verify the checks after automated and manual updates
After you run the utility for the first time and manually fix any issues, we recommend that you run the utility again in Check mode to verify that the fixes are successful.
From the terminal or command prompt, run the utility in Check mode by using one of the following commands:
Windows: run.cmd
Linux: run.shCheck mode commandinput.performFix = false- Verify the contents of the output file.
If you continue to experience issues, contact BMC Support.