Migration between environments

Migrations between environments is required when a cut of the latest data and logic is needed. Initially this can come from an on-premise database or periodically between cloud development and production databases.
Contents
Full Migration | Incremental Migration | Migrate Using Files | Migrate with Git
Full Migration
A full migration of a database may be performed during a copy from an on-premise database or an initial go-live from Development to Production. In these cases, all files from a data folder may be copied. Post migration, security will need to be updated in the Production environment where the real users reside. Work with your implementation partner who is familiar with these procedures.
Incremental Migration
After an initial go live, partial migrations will be performed to add new features or to address bugs. If it is a brand new object that does not exist in the target environment, you can safely copy over these files.
However, when a file already exists in the target environment, there may be different steps depending on the object type. For example, rule and TI process files can typically be copied as is between environments but there may be dependent objects that also need to be migrated. For other object types (.cub, .dim,...), overwriting files may not the right approach if data and metadata will differ between environments. Below are typical files that are migrated. See here for a complete list of file types: https://ibm.biz/CS_PAoC_FileTypes
File Extension |
Object Type |
Migration process |
.blb |
Rule formatting file |
Not recommended for incremental migration since it will be rebuilt if rules have changed |
.cho |
Chore |
Copy as is and determine if there are dependent TI Processes |
.cub |
Cube |
Copy only when a brand new cube since all data will be overwritten in target environment |
.dim |
Dimension |
Copy only when a brand new dimension since all metadata will be overwritten in target environment;
If new elements are manually added, it is advisable to do so manually in the target environment
|
.pro |
TI Process |
Copy as is and determine if there are object dependencies that need to migrated as well. For example elements, subsets, dimensions, cubes, views, |
.rux |
Rule |
Copy as is and determine if there are object dependencies that need to migrated as well. For example elements, subsets, dimensions, and/or cubes that are referenced |
Migrate using files
To perform a full or incremental migration by copying files, similar steps will be followed on each environment:
Source environment
1. Run SaveDataAll
2. Copy files to be migrated into a temporary directory
3. Archive files into a zip file with a descriptive name and date stamp to track changes. i.e. "Go-live-smartco-2024-05-01.zip"
4. Copy zip file to target environment's shared folder using any of these methods:
Target environment
1. Run SaveDataAll
2. Stop database
3. Perform backup of the whole data folder
4. Extract zip file from source environment and copy to data folder; overwrite when prompted
5. Start database
-
- If rule (.rux) files were migrated, allow for additional processing time feeder files files to be regenerated. You will notice that cube formatting (.blb) files for a cube will also be updated.
Migrate using a Git repository
Git repository integration was added in PAW 86 and allows for migration of objects without the need to stop and restart databases. This can be a huge timesaver for larger database and can be used to store common objects across multiple PA databases, enable version control on objects, or for migrating between environments. Documentation for this feature can be found here:
https://ibm.biz/CS_PA_GITIntro
Focusing on migration, the following must be done:
Create a Repository
PA supports three Git providers (Microsoft Azure, AWSCodeCommit, and Github) but for example, we will focus on GitHub.
- Create an account in https://ibm.biz/CS_GITJoin ; The account name should descriptive for your company / department
- Once your account is verified, start a new repository as per steps here: https://ibm.biz/CS_GIT_CreateRepo. It is advisable to name it similar to the PA database name and set to Private to allow you to control who can view and commit objects. You will have a new repository in the following format: https://github.com/myaccount/myrepository
- Download and install GitHub desktop from https://ibm.biz/CS_GIT_DownDesk
- Generate SSH keys using Git Bash https://ibm.biz/CS_GIT_GenSSHKeys. Do not lose the passphrase if being used and the two files for public (.pub) and private (no extension) keys since they are used to connect from PAW.
Push objects from Source Environment
When testing of newly developed or updated objects are completed in a source or development, you are now ready to push these to a Git repository that can be pulled into the target or production environment. In PAW Workbench logged into the source environment, click the ellipse next to the PA database you wish to add objects from. Select 'Remote repository operations' -> 'Add objects to repository'

In the dialogue box within the Authentication tab, enter the following with your account and repository names, keys, and passphrase if used. Take note of these settings as they will be used in the target environment as well and required each time you connect to GitHub.
URL: git@guthub.com:myaccount/myrepository.git
Public Key: full contents of .pub file
Private Key: from KEY file with no extension ensuring all all text is copied: -----BEGIN OPENSSH PRIVATE KEY----- ... -----END OPENSSH PRIVATE KEY-----
Passphrase: your
Click 'Next' to validate security
In the "Select Objects' tab, choose Objects that need to be added to the repository and Click 'Next'
In the "Run Process" tab, you can optionally define a TI Process to run before / after when pushing / pulling to and from a repository. This could be used to make changes to a database such as a dependent object in a rule that is being migrated.
Finally, in the "Select Branch" tab, use a meaningful name that describes the changes being made. i.e. "Budget 2025 add new companies initiative" could contain new rules and TI processes in order to handle a new budget cycle after an acquisition was made. Also include a message that describes in the detail the changes to objects before clicking 'Add.
Pull objects to Target Environment
With objects in Git, the next step is to pull these into your target environment.
In PAW Workbench, in the target environment, click the ellipse next to the PA database you wish to import objects into and select "Remote repository operations' -> 'Update model from repository'.
In the Authentication dialogue box, enter the same security details previously entered in the source environment and click "Authenticate"
In "Update model from repository' dialogue, select the branch to update from and click update.
Review the list of objects to be pulled and optionally any TI process that need to be run, and click "Execute"