Sample scripts

reference australia Updated Sep 10, 2026 3 min read cpq-sample-scripts.md
Raw file servicenow.com

View a selection of commonly requested sample scripts.

This article shows some commonly requested sample scripts. If you would like to see more examples, please send a message to documentation@logik.io with your suggestions.

Sample number field determination:

JavaScript
var count64 = 0;var count32 = 0;var perCoreProcessing = 40; //assuming 8 processors with 5 TFlops computevar cpu64Processing = 64*perCoreProcessing;var cpu32Processing = 32*perCoreProcessing;var cpu16Processing = 16*perCoreProcessing;var remainingCompute = cfg.estPeakOps;if(cfg.allowCPU64 == true) { //64 core allowed so divide by that	count64 = remainingCompute/cpu64Processing;	remainingCompute = remainingCompute%cpu64Processing;}if(cfg.allowCPU32 == true) {	count32 = remainingCompute/cpu32Processing;	remainingCompute = remainingCompute%cpu32Processing;}return count32;

Sample text field determination:

JavaScript
var retStr = "";retStr = retStr + "64 vCPUs: " + Math.round(cfg.cpu64Count);retStr = retStr + "\\n32 vCPUs: " + Math.round(cfg.cpu32Count);retStr = retStr + "\\n16 vCPUs: " + Math.round(cfg.cpu16Count);retStr = retStr + "\\n8 vCPUs: " + Math.round(cfg.cpu8Count);retStr = retStr + "\\n1 vCPUs: " + Math.round(cfg.cpu1Count);return retStr;

Sample product rule script:

JavaScript
//Base Productvar baseProductP2ID = "BP_ID";var inputs = {"g2BaseProduct": cfg.g2BaseProduct};var resultSet = lookup("SELECT Product2Id, ProductName FROM Dummytable WHERE ProductCode = :g2BaseProduct", inputs);for (var row of resultSet) {	ProductList.id = row.get("Product2Id");	ProductList.quantity = cfg.orderQty;	ProductList.bomType = "SALES";	ProductList.uom = "EA";	ProductList.level = 1;	ProductList.notes = row.get("ProductName");	ProductList.parentProduct = "01t5f000000uJgoAAE"; //parent product identifier. In this case top product being configured from SFDC	baseProductP2ID = row.get("Product2Id");	ProductList.uniqueIdentifier = baseProductP2ID; //Parent	...SF ProductID; not req'd if this has no other children	ProductList.next();	break;}

Sample product rule script with for loop:

JavaScript
//var timesReplicate = cfg.numberOfComputeClusters; //this doesn't work yet.. If it does, we will replicate that many times easiervar timesReplicate = [1,1,1,1,1,1,1,1,1,1]; //dummy 10 times loop based on 10x boolean true, Double loop for 100for (var parentStep of timesReplicate) {	for (var step of timesReplicate) {		if(cfg.cpu16Count > 0) {			ProductList.id = "01t5f000000v50CAAQ";			ProductList.quantity=Math.round(cfg.cpu16Count);			ProductList.notes="Provisioning " + Math.round(cfg.cpu16Count) + " number of 16 core vCPUs";			if(cfg.sendDirectlyToProvisioning == true) {				ProductList.bomType = "Manufacturing";				ProductList.level = 2;			} else {				ProductList.bomType = "SALES";			}			ProductList.next();		}		if(cfg.cpu8Count > 0) {			ProductList.id = "01t5f000000v50DAAQ";			ProductList.quantity=Math.round(cfg.cpu8Count);			ProductList.notes="Provisioning " + Math.round(cfg.cpu8Count) + " number of 8 core vCPUs";			if(cfg.sendDirectlyToProvisioning == true) {				ProductList.bomType = "Manufacturing";				ProductList.level = 2;			} else {				ProductList.bomType = "SALES";			}			ProductList.next();		}		if(cfg.cpu32Count > 0) {			ProductList.id = "01t5f000000v50BAAQ";			ProductList.quantity=Math.round(cfg.cpu32Count);			ProductList.notes="Provisioning " + Math.round(cfg.cpu32Count) + " number of 32 core vCPUs";			if(cfg.sendDirectlyToProvisioning == true) {				ProductList.bomType = "Manufacturing";				ProductList.level = 2;			} else {				ProductList.bomType = "SALES";			}			ProductList.next();		}		if(cfg.cpu64Count > 0) {			ProductList.id = "01t5f000000v50JAAQ";			ProductList.quantity=Math.round(cfg.cpu64Count);			ProductList.notes="Provisioning " + Math.round(cfg.cpu64Count) + " number of 64 core vCPUs";			if(cfg.sendDirectlyToProvisioning == true) {				ProductList.bomType = "Manufacturing";				ProductList.level = 2;			} else {				ProductList.bomType = "SALES";			}			ProductList.next();		}		if(cfg.cpu1Count > 0) {			ProductList.id = "01t5f000000v50SAAQ";			ProductList.quantity=Math.round(cfg.cpu1Count);			ProductList.notes="Provisioning " + Math.round(cfg.cpu1Count) + " number of 1 core vCPUs";			if(cfg.sendDirectlyToProvisioning == true) {				ProductList.bomType = "Manufacturing";				ProductList.level = 2;			} else {				ProductList.bomType = "SALES";			}			ProductList.next();		}	}}console.log("Added line items 100 times");return ProductList;

Sample array and map functions:

JavaScript
var productidArr = ["test123", "chtest123"];var inputs = {"productids": productidArr};var resultSet = lookup("SELECT uniqueidentifier, bomtype FROM bominformation WHERE productid IN (:productids)", inputs);
var prodTypeMap = new Map();for (var row of resultSet) {	prodTypeMap.set(row.get("uniqueidentifier"), row.get("bomtype"));}var itemTypeManuf = productidArr.every((value) => {return prodTypeMap.get(value) != "Manufacturing";});if (isGood == false) {	return "Sales type item found";}var summary = "";productidArr.forEach((item, index) => {summary += index + " " + item + ". ";});return summary;

How to pull multi-select picklist values from SFDC to twinned multi-select picklist field in ServiceNow CPQ in the On Configure/Reconfigure enrichment:

JavaScript
let x = (cfgRequest.yourTwinnedLogikField.value).split(";");cfgRequest.yourTwinnedLogikField.set("value", x);return cfgRequest;

How to concatenate field values into a string:

JavaScript
stringVar = "";stringVar = stringVar.concat(cfg.varible1, cfg.variable2, cfg.variable3);return stringVar;// returns selected values of "variable1variable2variable3"

How to imitate a CONTAINS function:

JavaScript
var yourVariable = "Field Value"; // Replace with your actual Field valueif (yourVariable.includes("CU")) {	// Code you wish to execute when Field Value contains "CU"} else if (yourVariable.includes("AL")) {	// Code you wish to execute when Field Value contains "AL"} else {	// Code you wish to execute when Field Value doesn't contain "CU" or "AL"};

Related topics

ServiceNow CPQ scripting language reference

Search documentation
Search document titles and file paths on the australia branch