
- Post History
- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
03-08-2024 02:23 AM - edited 07-22-2024 12:41 PM
Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field
Hi there,
Turning the Release Testing Preview (RTP) Release Notes for the Washington DC release inside out, there was a wow moment... "Let your catalog item requesters save drafts of catalog item forms so that requesters can edit the drafts later." Saving catalog items as draft, is such an often-heard question from customers!
Since the Product documentation on this subject is limited, let's dig into how "Save as Draft" works and documenting the undocumented.
Save as Draft
Viewing a random catalog item on an out-of-the-box Employee Center (and also Service Portal), you will very quickly notice the Save as Draft feature in the Order Item Section.
Save as Draft lets a user save the Catalog Item to edit it later if they don't want to discard the form. To edit a Catalog Item saved as a draft, a user can find drafts on the Request page.
Widgets, System Properties, and Table involved
As always with new Service Portal-related features, for a good chunk of customers new features will not be visible and/or won't break. The most obvious reason would be using cloned/edited Widgets.
What artifacts are involved with Save as Draft? Viewing a Catalog Item on Employee Center the "HRM Catalog Item" Service Portal Widget is used. This Widget actually gets Widget "SC Catalog Item" [id=widget-sc-cat-item-v2], which is the same Widget used on the Service Portal.
The updated Widget first checks on if on a Catalog Item Save as Draft is enabled. For this a new field on the "sc_cat_item" table has been added, "Hide 'Save' as Draft" [no_save_as_draft]. If this field is not visible on your ServiceNow instance, this might be due to form lay-out changes in the past and this should be listed within the Skipped Updates of the Washington DC upgrade.
Within the Widget Server Script also two System Properties are checked:
- System Property "glide.sc.disable.save_as_draft" should not be "true". Out-of-the-box this System Property does not exist, so should evaluate to false.
- System Property "glide.sc.enable.save_as_draft.portal." followed by the URL suffix of the Service Portal the user is on.
If you are working on a different Service Portal, a custom Service Portal, or a Service Portal with a changed URL suffix: you can add the System Property in the format described above.
So where are the draft catalog items stored? I did see a ServiceNow Community question where one of the answers was that this is not stored(...). Of course that's not true 😂. Digging into the SC Catalog Item widget, functions from Script Include "SPCart" are called. Another part of the puzzle that got updated with the Washington DC release. Within the SPCart Script Include, several functions are performing GlideRecord queries against the Items table [sc_cart_item].
Draft catalog item
Lastly here is an example of a catalog item saved as a draft within the Items table.
And that's it, documenting the undocumented and providing a bit more technical details of what is involved with the new Save as Draft feature introduced with the Washington DC release.
---
That's it. Hope you like it. If any questions or remarks, let me know!
C |
If this content helped you, I would appreciate it if you hit bookmark or mark it as helpful.
Interested in more Articles, Blogs, Videos, Podcasts, Share projects I shared/participated in? |
Kind regards,
Mark Roethof
Independent ServiceNow Consultant
9x ServiceNow MVP
---
- 35,210 Views
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Mark Roethof is your favorite developer's favorite developer.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi @Mark Roethof That's a great explanation. However, where can the 'Widget Server Script' be found?

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@matthew_hughes that's a field on the Widget.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi @Mark Roethof Which field is it and on what Widget?

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@matthew_hughes "Viewing a Catalog Item on Employee Center the "HRM Catalog Item" Service Portal Widget is used. This Widget actually gets Widget "SC Catalog Item" [id=widget-sc-cat-item-v2], which is the same Widget used on the Service Portal."
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi @Mark Roethof How do you navigate to that screenshot showing 'SC Catalog item' widget as I'm trying to apply the same for my portal? I've created the system property to match the out of the box ones, but it still won't display the Save as Draft button.

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@matthew_hughes the images are from the Widget Editor, though you can also open the Widget through the Widget table [sp_widget].

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Mark,
Have you noticed an issue when saving a draft of a catalog item that uses the "Clear value" option in a catalog UI policy action, the value is not saved in the draft? We use this option quite frequently and are wondering if this is a bug or intended functionality.
Thanks,
Sarah
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi @Mark Roethof - love this article, so helpful! I have this save as draft feature working but I cant for the life of me find the draft saved within the items table. How did you get to the view in your last screenshot? Any help much appreciated 🙂
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
This write up is very helpful. Say someone saves a draft of a catalog item, and then a new mandatory variable is added before they have submitted. When they go to edit that draft, will the new variable be required? Another question, what would happen to the draft if the catalog item was set to inactive?
Edit for anyone else who has the same questions...if a draft is saved and then the catalog item is updated (such as adding new variables), when the draft is opened, a message appears explaining why the draft was deleted. If the catalog item is set to inactive, the draft is inaccessible.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@leilani-heather this is available via the sc_cart_item table. You can then filter via the draft_items cart column
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
We had an issue with our Saved Drafts/Wish List not showing the drafts in the service portal. We located the values entered in the sc_cart_item.list as a draft. If this is the correct location, how can we move that data back as a saved draft to the users service portal?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Really Helpful. Thanks @Mark Roethof .
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Thanks @Mark Roethof , really useful stuff. Do you happen to know if this can be implemented for Order Guides or it only applies to individual items?
Thanks again!
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@Sarah Travis1 Did you get a response/solution to your query on this topic?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
This is a great article! Thanks for all the detailed research!
Do you or anyone happen to know how long these drafts live for - do they time out eventually? Can users have many draft versions or do they have limits?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
I noticed in a bit of our testing of this that field onChange client scripts dont seem to be honoured when opening a draft? Have you observed the same behaviour or had any advice from ServiceNow on how to treat these types of items and item compatibility requirements, I'm assuming default position here is just to disable save as draft for these items?
I suspect the widget is just loading the values but isnt executing required client scripts for field validations as it isn't necessarily concious of sequencing for these types of items.
These seems to be very similar in nature to the UI Policy considerations above and 'clear value' handling.
Steve
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Great article, as always.
Not sure it is the place to add, but if you update a catalog item/record producer that a user has drafted, then their draft gets deleted. Depending on your record producers/catalog and the number of variables you have to enter, this can be really annoying for a user that needs to gather information to complete a form. So, a heads up before just committing updates to your forms and to check if any users have drafts waiting to be completed.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Has anyone had complaints around reference values or ui policies being ignored when coming back to a draft record? If so, what workarounds may have been configured.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Yes I have had significant issues with this also and have a couple of support cases open, no great response yet and havent really found a way for this to work without disabling the save as draft feature. Super interested in hearing from the community if anyone else has found anything, I seem to recall the old wishlist feature was a LOT better at handling this (with a few message relabels to it isnt called wishlist anymore)
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
We use catalog client scripts and catalog ui policies fairly heavily for a lot of our catalog items. We use them for typical behavior like conditionally displaying fields/variables on a request form based on a value entered or selected from another field/variable on the form, for example. I'm sure this is a very common use case for most ServiceNow customers for these request forms.
We too have found that some catalog client scripts/catalog ui policies aren't applied/executed when a draft is 'reopened' at a later time. I suppose it makes sense that the onChange client scripts don't execute when a draft is opened. The only catalog client script that runs when a draft is opened is an onLoad client script. However, this is causing problems with the new Save as Draft feature when drafts are 'reopened'. For example, certain fields that were displayed on the request form before it was saved as a draft will not display when the draft is reopened if that display relies on an onChange script or ui policy.
What I'm doing to address this is basically taking the code from the onChange client scripts and applying that same script to the onLoad client script so that it executes when a draft is reopened. This is somewhat of a simplified explanation without all the details. Of course for those request forms that have a lot of this dynamic/conditional type of behavior, making these changes so that the Save as Draft functionality works as it should can be a time consuming, frustrating experience. It also means potentially more maintenance/development in the future in order to ensure the behavior we want will also work with Save as Draft feature. We also found this to be a bit of a head scratcher, so if anyone has any better solutions or answers I would be interested in hearing them.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@Mark Roethof @SteveGHarland @Sarah Travis1
I saw the comments regarding the clear value behavior with catalog ui policies and I'm seeing something that seems weird to me. I don't think this is necessarily tied to the Save as Draft feature, but instead may be tied to the new options on ui policy actions, specifically the Value action field for a ui policy action.
Below in the first image you can see the ui policy actions for a ui policy. The variable named select_users_needing_access has the Clear the variable value attribute set to false. This is how we had it configured before we upgraded to Washington DC.
However, you can see in the second image that if I click on that ui policy action, the new field labeled Value action has been defaulted to 'Clear value'. This seems odd to me and may explain why a variable value is being cleared unexpectedly.
Is there a problem here??
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
The biggest issue we have found with this in our exploration of Save as Draft, as that typically when writing UI Policies you will use the "reverse if false" checkbox to not have to write UI Policies for the false condition. If you have a UI Policy action that has the "Clear value" value action, this will also clear the value on the "reverse" execution of the UI Policy, which means any of those variables you have filled in on your draft get cleared on load. So if you write 2 UI Policies for the true and the false of a condition, you can make sure that your UI Policy that shows a field for example doesn't clear the value, but you can keep your hide field action set to clear it.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Jordan,
Thanks for the reply and the suggestion. If I understand you correctly, you're saying that you basically doubled the number of ui policies in order to make sure the Save as Draft feature works as expected? I guess I could see where that might work in some situations, but I'm not sure it's all that practical if you have a lot of ui policies for a given catalog item.
For example, we have one request form that has a lot of 'drill down' behavior, where answering one question will then display another question, and so on and so forth. This behavior is all controlled by ui policies and for that one catalog item we have about 80 ui policies. So, if we followed your idea, we would end up with about 160 ui policies for just that one catalog item. I'm surprised there isn't more documentation on this or other users talking about this subject at this time.
As I pointed out in my last post, I don't understand how, after the upgrade to Washington, the new Value action field got set to 'Clear value' for all of our ui policy actions that had Clear variable value set to false. According to the script action named Migrate clear value actions (which runs during the upgrade), only those ui policy actions that had Clear variable value set to true should have had the new Value action field set to 'Clear value'. After the upgrade we ended up with something like this...
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
While using the save as draft on a record producer, I have noted that attachments (using the paperclip add attachment), are not getting carried over to the form (HR Case or Incident) after the request is submitted. This is happening when attachments are added before or after save as draft. Has someone experienced the issue? If so, does anyone have a fix? Or am I missing something? Thank you!
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
You're right! I just tried the save as draft on a record producer and if i save as draft and there is an attachment (using the attachment paper clip at the bottom of the form or an attachment type variable on the form itself), the attachment doesn't get preserved and isn't available on the form after the submit of the request. It doesn't matter if the attachment was added before or after saving as a draft. It doesn't work either way. If I add an attachment and don't save as draft, everything works as expected after submission. Not sure about a fix, but add this to the list of potential issues with the save as draft feature..
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@JG9
We are seeing that attachments are being saved with the draft and loaded with the draft in all cases we've tried, however, we have another issue that I currently have a HIWAVE case open for: When an external user (with the sn_gsm.constituent role) saves a draft, then later comes back and loads the draft, they are not able to upload attachments to attachment fields. So far no word on a solution to this, so save as draft will continue to be a pipe dream until it actually works for the catalog items that need it.
Yeah, it's not ideal at all. Support barely seems to know about the feature, so unfortunately they couldn't provide us with a better solution than just duplicating every single UI Policy that clears values. We also have some catalog items with loads of UI Policies, and until a better way is found out (if the above issue gets fixed so we can actually use it) we aren't turning the feature on for those catalog items.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@jammer
I'm glad and not glad to hear we're not the only ones having this issue. We're also opening a HIWAVE ticket with Support for assistance. Seems to be a system flaw/error.

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
For all these kind of issues or potential bugs, do raise a Support Case! Not doing so, will definitely not change a thing.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@Jorge Fernandez - any word on whether this works for Order Guides?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Is anyone else have any issues with form sections not carrying over with the draft version, despite them being saved in [sc_cart_item]? For context I am using a record producer and the form sections are container starts and ends.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
This is not happening with me. I do not see 'draft'
I do not get 'Save Draft' is there something more I need to do? Thanks

- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@Donna12 I haven't checked this for Platform UI, this article is focussed on Portal.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
This was very insightful. I have a user where the Draft item has disappeared from the Portal.
I was able to find the document. Any suggestions on how to restore it so they can complete the catalog item?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Thanks for this. However it lacks the function to save more drafts of the same catalog item. There should be a solution, since the draft items are stored with a unique sys_id as the screenshots from @Mark Roethof are showing. Why was this feature missed? Or does anyone have an easy fix for this?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Using the /sp suffix for our Service Portal, I do not see the Drafts tab enabled. I do see the option to Save as Draft for each Catalog Item that should have this, but I do not see the following below.
Our Instance
Reading some other forum post, it may have to do with Widgets, but I'm not exactly sure what needs configuration so that users can access the saved drafts.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
check for the system property glide.sc.enable.save_as_draft.portal.sp and verify that it exists and is set to true.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
We've run into a similar issue with the Save as Draft feature in the GSP portal. When external users (with the sn_gsm.constituent role) save a draft without attachments, they can't upload attachments when reopening it. The button says "Uploading" but reverts without adding the file. Even when attachments are initially added and then deleted, the same issue happens. Interestingly, I don’t experience this problem when logged in as an admin. Has anyone else experienced this or found a workaround?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Thanks @Jordan William1 + @jammer for your notes on the UI policies/cleared variables. I ran into the same issue with my variables clearing and your posts explained why.
I was curious if either of you got any farther along than duplicating the policies (creating a true policy and a false policy) since your posts back in July... or if HIWAVE had any other ideas for you.
Thanks in advance.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@jcmings We also submitted a HI ticket for the issues we ran into. However, we haven't been provided any solution yet.
For now, we have decided we won't use the Save as Draft feature. We just uncheck the 'Save as Draft' checkbox on all of our catalog items until some of the issues have been addressed.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Could have been a nice feature, but it does not work as it should.. it should load the form and change the values as they were saved. This way all the catalog client script would continue to work.
As it is it does not, so to enable one should re-write all client script taking into account new onload logics which, when you have multiple variables, dependencies between variables, and even between options in the choice lists of variables.. well it's easier to just disable the save as draft feature.
It's ironic because it would have been more needed on complex, long to fill in forms, than in 2 field forms.. but it will just work on the latter.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
The draft version gets timed out after some time.
Does anybody know how and from where this is controlled? is it via some system property?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@Ankur Bawiskar do you have any details on timeframe for the timeout you experienced? days, weeks?
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
I haven't got a chance to check regarding this.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi @Mark Roethof , great explanation!!
Just a doubt. Is it possible to use this 'Drafts' tab to store all the 'Draft' HR Cases for subject person for example?
As if yes, how? What do we custom?
Thanks!
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@rafas_10 All of the logged-in user's draft cases (catalog items/record producers they have explicitly clicked "Save as Draft" for) would be stored on that Drafts tab.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@jcmings , Hi!!
Okay but in our record producer configuration we don't have the 'Save as draft' option. How do you think we are able to add HR Cases on the 'Drafts' tab when, for example, an user creates a 'Draft' state HR Case and does not click on 'Save as draft'
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
@rafas_10 You will need to create a (true) boolean system property in Global scope titled glide.sc.enable.save_as_draft.portal.esc where esc is the name of your portal. Try searching for *draft on the system property table to see if any properties exist already on OOTB portals.
There is also a checkbox on the Portal Settings tab of catalog item/record producer itself to hide the "save as draft" functionality. Make sure that's unchecked.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hello Everyone!
The case we opened received an update. We have upgraded to Xanadu and we can confirm that the issue for external users is now resolved.
Most Probable Cause:
I found that your issue is related to an existing Problem PRB1725506 at our side.
Please note that you can now view the status of the Problems associated to your Cases by navigating to: Self Service -- Problems.
Solution Proposed:
I am pleased to inform you that this issue has been resolved in our Washington DC Patch 7 release which is now available for upgrade!
To schedule an upgrade, please go to:
https://hi.service-now.com/hisp?id=hisp_manage_instances
As a solution is available, we are placing this Case into Solution Proposed.
- Mark as Read
- Mark as New
- Bookmark
- Permalink
- Report Inappropriate Content
Hi @Mark Roethof, Is there a JavaScript API available to create this in draft mode? I was looking through the ServiceNow documentation, but I couldn’t find anything specifically for the Washington DC release. Could you let me know if there’s an API or ScriptInclude that has function to support that we can use? Thank you!