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.