Idea Summary
Starting from APEX version 20.2 (or 20.1, I'm not sure) there are a few additional lines added to each exported application installation script like Manifest and p_default_id_offset parameter. While Manifest lines are not a problem, the p_default_id_offset is a problem in the terms of tracking changes using a version control system (like GIT) because it differs for each application.
What's more, in APEX 22.1, there were new export types introduced that give the possibility to export readable version of the scripts in YAML/JSON format. I started using it immediately and noticed that IDs keep changing for some components.
My idea is to improve the Export with Original IDs option in the Export Preferences section as well as the SQLCL's expOriginalIds parameter to keep original (unchanged) IDs for the following scripts parameters and YAML keys:
- SQL scripts parameters:
- p_default_id_offset;
- YAML keys/attributes:
- authorization-scheme (e.g. …readable/application/pages/pXXXXX.yaml file);
- id (in substitutions section of the readable/application/fXXX.yaml file);
- edit-authorization → add/update/delete (e.g. …readable/application/pages/pXXXXX.yaml file, related to interactive grids and edit privileges);
- id (in readable/application/supporting_objects/substitutions.yaml file);
- Supporting Object (in readable/application/supporting_objects/supporting_objects.yaml file).
Please see my Use Case below to fully understand what's the problem (the same should happen if you use only one application for development and accidentally reinstall the app from the scripts you exported before).
Use Case
I have the main application (ID 103). I exported this app without Original IDs and with YAML format as a ZIP (separate files) and added all the files to my GIT repository. Now, I would like to change the title of the application. I'm working in a team with other developers and we want to keep each developer's changes separately that's why I will create a separate branch on my repository and install a separate application on which I will do my changes.
As a source for my change-related application, I will use the app scripts that I have in the repository and install the application with ID 104. I will do my changes related to the title of the application and export my application with Original IDs and YAML format in order to avoid changes related to application ID, etc. in each file (this way it's easier to track changes).
When I copy my exported files (from app ID 104) to the repository folder and check changes in files, I will see changes not only related to the application title but also related to the p_default_id_offset parameter for almost all application components. What's more, there are also changes in IDs for YAML keys/attributes I mentioned in the Idea Summary section (please see screenshots below). It causes it very difficult to track changes and check what exactly has been changed.
As an interim solution, I created a script to remove the p_default_id_offset parameter from each exported file because it's the most annoying change in SQL scripts. Regarding YAML files, I'm excluding changes related to substitution IDs, authorization scheme etc. manually by restoring changes for impacted lines.
Preferred Solution (Optional)
-