4 Ways to Publish a ServiceNow Application
Did you know there is more than one way to publish a scoped application? There are at least 4 methods that I know of, so let’s unpack them!
As a quick re-cap, scoped applications are ways to bundle configurations to ServiceNow, into a protected application scope. They can then be deployed to other instances outside of the one they are developed in via a Publish to create a new version and then a deploy.
#1 Native Studio UI
The most common way that everyone does it - through the native UI in studio.
#2 Using a Script
The undocumented mechanism to install a scoped app would be through a script.
publish: function(appID,version,devNotes){
var trackerID;
try { //run install command
var progress_name = "Upload to the App Repository";
var worker = new GlideScriptedHierarchicalWorker();
worker.setProgressName(progress_name);
worker.setBackground(true);
worker.setCannotCancel(true);
worker.setScriptIncludeName("sn_appauthor.ScopedAppUploaderAJAX");
worker.setScriptIncludeMethod("start");
var g_req = new GlobalRequest();
g_req.setPreference('sysparm_sys_id',appID);
g_req.setPreference('sysparm_version',version);
g_req.setPreference('sysparm_dev_notes',devNotes);
g_req.setPreference('sysparm_username', gs.getUserName());
g_req.setPreference('sysparm_password', '');
g_req.setPreference('sysparm_publish_to_store', 'false');
g_req.setPreference('sysparm_target_upload_URL', '');
worker.putConstructorArg('g_request',g_req);
worker.start();
trackerID = worker.getProgressID();
} catch (err) {
gs.error("Encountered error installing scoped app " + appID + ".\nError: " + err.message, this.type);
}
return trackerID;
},var GlobalRequest = Class.create();
GlobalRequest.prototype = {
initialize: function() {
this.parms = {};
},
setPreference: function(key, value){
this.parms[key] = value;
},
getParameter: function(key){
return this.parms[key];
},
type: 'GlobalRequest'
};#3 Update Sets
While it is officially documented, I feel like many people don’t know about this feature. You can publish a scoped app to an update set, which captures all the changes. Also a key benefit to using this method is that whichever instance you install the update set into, you can then open the app up in studio there.
#4 Using the CI/CD Spoke / API
For several releases now, ServiceNow offers a spoke and API for being able to publish an application.
Spoke Actions
Publish Application With ID
Publish Application With Scope
API: POST /sn_cicd/app_repo/publish
Publishes the specified application and all of its artifacts to the application repository.