Making a record producer and catalog item public on a CMS page
It is common for users to request that record producers and catalog items be made public on the Content Management System. Since Service Now locks everything down, it can be difficult to make this work. Here are the steps based on the base system ESS Portal.
Before the administrator proceeds with the steps below, it is required to have elevated security privileges, and to check the access control rules allowing on the sc_cat_item table and fields.
1. Make the CMS public
The first thing you need to do is make your CMS public. To do this make the Login Page field blank on your site.
Note: If you notice that certain blocks are not rendering, check the block and make sure the logged in check box is not checked.
2. Public Page
UI Pages by default require a login. We can change this by making them public. Go to the sys_public table and add these to the UI Page:
If you have another page that requires a login, check the url and the page ending in .do. Add this to the Public Pages.
You also might have a page in an iframe where the main layout renders, but the content in the iframe is requesting a login. To fix this, use the browser’s developer tool and select the iframe. You should see something like this.
<iframe width="100%" height="1484" frameborder="0" border="0" src="com.glideapp.servicecatalog_category_view.do?sysparm_nameofstack=1b5cea177bc2020026ef707d784d4d0a&sysparm_parent=d258b953c611227a0146101fb1be7c31&sysparm_clear_stack=yes" allowtransparency="true" name="gsft_main" scrolling="no" id="gsft_main"></iframe><
Look for the part with the src” Just like the url, you will want to make the .do public.
3. Making the Catalog Item public
To make a Catalog Item/Record Producer public, make both the item and the variables public.
- To make the item public, make sure the roles field is on the form and add the public role to it. If the role field does not show, you’ll need to change the property glide.sc.use_user_criteria to false. Making Catalog Item Public will work only with Entitlements and User Criteria needs to be disabled for Service Catalog.
- Set two step check out to false. (glide.sc.checkout.twostep = false).
- To make the variables public, add Write, Read, and Create roles to the related list.
This should make most variables public. There are a few exceptions.
- Checkbox cannot be made public. Instead, use a Yes/No variable or Lookup Select Box with two options.
- Variables that reference other tables will require further work. List Collectors will not work. References will require read ACLs with the public role and tablename_list added to sys_public (reference icon will work, autocomplete will not). Lookup Select Boxes that reference another table will require read ACLs with the public role.
WARNING: As a side effect of making service catalog public, if the session of an authenticated user expires before checkout, the subsequent request and requested item records are created with user fields as "Guest".