It is ServiceNow’s new release season! With the Paris release in Early Access, we will show some enhancements targeted around being more effective and efficient as a developer. These tools are specifically for developers and scripting on the Now Platform.
Global Scoped Applications Support for Source Control
You might be aware that scoped application development was enhanced in Orlando with the addition of:
- Selective / Partial Commits
- Editing outside platform / Branching & Merging
- Automation for deployment from source control
If you are unfamiliar with source control or wish to learn what ServiceNow resources are available, you can find them here. In Paris, those source control enhancements have been extended to Global Scoped Applications. By default, Studio and the Guided Application Creator (GAC) hide the option to create globally scoped application scope bundles. To enable this, you need to create a system property: sn_g_app_creator.allow_global and set it to true. Details are available on the Docs site. Once that option is enabled, you can then create Global App Scopes in GAC under the advanced settings -> Global as seen below.
Once your global scope is created, you can associate application files to that scope in Studio. File -> Add Existing Files can claim existing application files from an update set or searching from the table or file name. Once the app files are claimed, they will appear in Studio’s interface. A single app file can only be claimed with one global scope at a time.
Adding application files into a global scoped app isn’t new, but the claims process under the hood is new in Paris. The claim process has ramifications that are important to understand. The claim is stored in a new table sys_claim and will travel along with the application commits and deployments. Multiple applications may claim the same application file, as well as release a claim. When a global app claims an app file, an entry is created along with a notation of the other current claims, which helps resolve conflicts.
The new claims resolver engine, similar to the upgrade engine, helps resolve the various claim scenarios. When deploying an application, the claims resolver will use the claim entries and the claims’ priority order to have a predictable and deterministic result. There are two possible outcomes from the claims resolution process.
- One global app will have the best claim, and the version of the application file from the best claim application is deployed or kept, and other claims get a skipped entry in the sys_upgrade_history_log table.
- In the case of equal claims a conflict entry will be generated and must be resolved with the Merge Diff Tool. Those claim resolutions will appear in your upgrade history in the new related list table Claim Conflicts to Review.
One of the most exciting enhancements in Paris for improving Developers quality of life is Delta Loading of Applications. Switching branches, apply remote changes, switching versions, and similar operations now only do a delta load of the changes needed. The change brings a more natural flow and process to the developers and eases the burden of using branches for development. Data stored in tables will be retained during these operations, lowering the need to load demo data back into the application after a reinstall/branch change operation.
Delta loading is enabled by default on any upgrade, Paris, or later. If you don’t wish to have the delta loading enabled for some reason, you can adjust the property glide.source_control.allow_delta_loading_in_scopedapp and set it to false. Files not changed during a delta load will be marked as ‘unchanged’ in the upgrade history. Removals of claims for global applications will use the claims resolver engine to pick the scope with the next best claim, or if none have a claim, it will be abandoned to global.
I hope you enjoyed the highlight of these new features. If you desire a deeper dive into one of these topics, let the Developer Program team know below by adding a comment. The changes are focused directly on helping developers work faster and easier. They were chosen based on previous feedback from you, the developer. Provide feedback for further enhancements to these areas of the platform below to drive our future enhancements or to the idea portal.