Issue in Order Guide - Two Step Checkbox (Portal view)

amit170
Tera Contributor

I want to have my order guide as two step in service portal instead of 3 steps. So I have checked The "Two Step" CheckBox in the Order Guide. System Properties Updated : "glide.sc.checkout.twostep" - true; "glide.sc.sp.twostep": false. It is working in Native View, however, in Portal, not working.

10 REPLIES 10

kaushal_snow
Giga Sage

@amit170 ,

 

System property glide.sc.sp.twostep controls the two step checkout behaviour in the Portal....... if it’s set to false, then even if glide.sc.checkout.twostep is true, the portal will continue using the 3 step checkout..........Also, most likely you are using a deprecated widget for catalog items/order guide in portal (for example SC Catalog Item Deprecated) instead of the current widget SC Catalog Item using the deprecated widget will prevent the two step checkout popup from appearing in portal.....Conclusion is, to get two step checkout working in the portal, make sure you set glide.sc.sp.twostep = true, then clear cache or test in a fresh session, and verify that the portal is using the up to date SC Catalog Item widget rather than the deprecated one......

 

If you found my response helpful, please mark it as ‘Accept as Solution’ and ‘Helpful’. This helps other community members find the right answer more easily and supports the community.

 

Thanks and Regards,
Kaushal Kumar Jha - ServiceNow Technical Consultant - ServiceNow Class of Legends 2025

I have validated all the details mentioned above. Regarding the Order Guide, the system is using the standard Service Catalog (SC) Order Guide, not the deprecated version. Each catalog item is also utilizing the out-of-the-box (OOB) SC Catalog Item widget. No customizations have been applied; however, the functionality is not working as expected in the baseline system. I tested this in my Personal Developer Instance (PDI) as well and encountered the same issue.

lauri457
Giga Sage

You can change the request method on order guide to submit or use the requested for variable on the guide.

//from widget controller
function showOrderConfirmation() {
		return $scope.data.sys_properties.twostep && $scope.data.sc_cat_item.request_method != "submit" && !$scope.data.sc_cat_item.has_requested_for_variable && $scope.requested_for_variable_count !== $scope.totalIncluded;
}

 

amit170
Tera Contributor

Changing the request method still doesn’t produce the expected result. Is the two-step functionality working for the Order Guide, or do we need to implement customization at the widget level?

Could you please clarify what you are trying to achieve? I think there is confusion as to what is two-step checkout because the "two step" checkbox on order guides just flips glide.sc.checkout.twostep for that particular order guide.

 

This is two-step checkout in portal, a modal that asks for more information regarding the order before checking out. In the core catalog it is a page with the cart in view as well. The other option is just instant order as in one-step checkout.

lauri457_1-1765322385315.png

To enable it your order guide needs to fulfill these four criteria. And to disable you need to fail any one of them.

 

1 The sys prop glide.sc.sp.twostep needs to be set true

/*	data.sys_properties = {
		twostep: gs.getProperty("glide.sc.sp.twostep", "true") == 'true',
                ......
/*
$scope.data.sys_properties.twostep

2 The request method on the order guide can't be submit

//Requeste method on order guide record
$scope.data.sc_cat_item.request_method != "submit"

lauri457_0-1765320928749.png

3 Your order guide can't have a requested for (type requested for, not type reference to sys_user) variable 

//order guide does not have variable of type requested for
!$scope.data.sc_cat_item.has_requested_for_variable

4 All your rule base items can't have a requested for variable but some of them can

//# of requested for variables should not match item count meaning all the included rule base items can't have a requested for type variable
$scope.requested_for_variable_count !== $scope.totalIncluded;