Best Practice: Update Sets, Scoped Applications, or a Combination of the Two

jmiskey
Kilo Sage

We have been promoting Catalog Items with Workflows for years by creating them all in the Global scope and using Update Sets to promote.  We are just beginning to start using App Engine Studio to build Scoped Applications, which, if I understand it correctly, typically does not involve you having to use Update Sets, as you just publish them. 

 

It sounds great to me, but I admit I do not have a full understanding of App Engine Studio and Scoped Applications yet, as it pertains to this.  My question really revolves around, does EVERYTHING get picked up when you try to promote the published application?

 

For example, let's say that we start a new project using App Engine Studio, and do most of the development there, but let's say that there are some more "advanced" features that we want to do that we cannot seem to do using App Engine Studio, so we do it outside of it (i.e. it doesn't look like you can do Catalog UI Policies from App Engine Studio).  Will those things I do outside of App Engine Studio get picked up when I try to promote the published application, or will I need to promote an update set too (that contains things like the Catalog UI Policies)?

 

Or perhaps, maybe a better way of asking it is like this: is there ANYTHING that wouldn't get picked up when I try to publish/promote the application, that I would need to manually promote using an update set?  Does EVERYTHING created in that scope get promoted, regardless of how it is created?

 

I imagine that there may be some things that might require manual update promotion, if they are created in the Global scope.  For example, let's say that I create a Client Script that I want to share across multiple applications, so I create it in the Global scope, but elect to make it accessible from ALL applications.  I imagine that would not get picked up in the promotion since it lives outside of the Scoped Application (and is in the Global Application).  Is that right?

 

Thanks

 

1 ACCEPTED SOLUTION

Bert_c1
Kilo Patron

If you do publish your scoped app, the result will be that "everything" in that app will be included.  Data records not so as those are part of the app definition.  You will be creating 'new version' for updates.  If you do partial development in App Studio, and other development outside for the same scoped app, be sure you have the current Application scope selected and some update set to capture those.  But you not being able to make some changes (Catalog UI Policies) in App Studio doesn't seem right. Some others may comment on that aspect.  As you shouldn't need to apply update sets when publishing an app version. Here are some resources:

 

https://docs.servicenow.com/bundle/rome-application-development/page/build/app-creator/task/t_Publis...

and

https://docs.servicenow.com/bundle/rome-application-development/page/build/applications/concept/c_Sh...

 

You can publish to the 'application repository' as described in the above link.

View solution in original post

8 REPLIES 8

Bert_c1
Kilo Patron

If you do publish your scoped app, the result will be that "everything" in that app will be included.  Data records not so as those are part of the app definition.  You will be creating 'new version' for updates.  If you do partial development in App Studio, and other development outside for the same scoped app, be sure you have the current Application scope selected and some update set to capture those.  But you not being able to make some changes (Catalog UI Policies) in App Studio doesn't seem right. Some others may comment on that aspect.  As you shouldn't need to apply update sets when publishing an app version. Here are some resources:

 

https://docs.servicenow.com/bundle/rome-application-development/page/build/app-creator/task/t_Publis...

and

https://docs.servicenow.com/bundle/rome-application-development/page/build/applications/concept/c_Sh...

 

You can publish to the 'application repository' as described in the above link.

Danny Mortensen
Tera Contributor

I know this post is a couple of years old now but the question is still relevant so I thought I'd add in my two cents worth while I'm here.

Some of the tools that ServiceNow provide, like Studio and Mobile app tools, though wonderful, don't always cover all artefacts needed when building applications. This means that some of the less common artefacts required in an application need to be built outside of the tool (e.g. Studio).

For scoped apps, as long as the table you are working with is Update Set tracked, and your current Application Scope is set to your scoped application, then any changes you make will be captured within your Application Scope. When you publish them to an app repository or commit them to source control then all captured artefacts will be deployed.

For example Notification Email Scripts are update set tracked, but don't show up in Studio as either an Application File to create via the wizard, or in the Application Explorer menu when created externally to Studio. However, they will still be captured as an artefact in your application.

To check this you can add the Application column to a list view of your application tables to see what Application Scope [sys_scope] it belongs to. If the table doesn't have this field then it won't be update set tracked or if the Application displayed is not your application then it wasn't capture in the correct scope. What may be confusing is that the table itself may not be within your Application Scope (e.g. Email Script [sys_script_email] mentioned above (which is in the Global scope), but some of the records within that table may be within your application scope because they are configurations that were created and captured while your application scope was the current scope.

DannyMortensen_1-1730243927652.png

You can check if a table is update set tracked by making your way to the Dictionary records for that table. Open the "Collection" type record. If you view the attributes for the "Collection" type record you will see an attribute of "update_synch=true" if records within this table are Update Set tracked. If this attribute is missing then records within this table will not be capture automatically within an Update Set or your Application Scope. 

 

DannyMortensen_0-1730243147114.png

Note that even if it is a scoped application, it will still have update sets capturing changes behind the scenes, but within your application scope. However, you generally don't deploy your application this way. If you were to look at the files uploaded to a Git repository for example you will see the same Update Set looking XML files.

To your last point, you are correct. Anything created within another scope, Global or otherwise, will not be captured as part of your application and will need to be deployed separately.

abelal
Tera Contributor

What an incredibly complex setup to capture an applications state to move to another instance.

 

All I want to do is this.

 

In Development instance

1. Create a scoped application and publish as a version 1.0.0

2. Work on 1.0.0 and add make additional changes

3. Publish changes as 1.0.1

 

I'd like to be able to then publish either 1.0.0 or 1.0.1 to my production instance as a whole. How can I do this?

Dan O Connor
ServiceNow Employee
ServiceNow Employee

@abelal This can be done by using application repository. Your instances have a module called 'My Company Applications' where if you have your instances connected it can track and deploy changes as an application and includes version control. 

 

Can show your applications that are installed or in development and the various versions. 

 

Pretty straight forward method for managing applications and their deployment up from Dev to say Test and then PROD. A one button process