Identifying Flows that used any Keywords like Script Include or Hardcoded sys_id or Assignment Group in Inline scriptsIssue How to Identify which flows are using any Script Include or Assignment group or sys_id hard coded or any Keyword in the Inline ScriptsReleaseAny ReleaseResolution1. There is no direct way to find the flows that uses any Script Include or Assignment group or sys_id hard coded or any Keyword So we need to use the below script to identify the flows. 2. Replace inlineScriptValue's value "Your Script Include Name" with the Name of the script include or Keyword or or Assignment group or sys_id for which we need to search for 3. Run the script in a lower instance first to test its functionality before running it in production. 4. Review the results to see which flows contains the Script Include or Assignment group or sys_id hard coded or any Keyword. var flowInfo = { flows: 0, affectedFlowIds: {} }; // for v1 (regular saved flow) var inputTable = "sys_hub_input_scripts"; var inlineScriptValue = "Your Script Include Name"; // Please replace your "Your Script Include Name" with the name you want to search for var referenceTableField = "referenced_table"; var instanceTableField = "instance"; var instanceFlowTableField = "flow"; var gr = new GlideRecord(inputTable); gr.addQuery("script", "CONTAINS", inlineScriptValue); gr.query(); while(gr.next()) { var tableName = gr.getValue(referenceTableField); var recordId = gr.getValue(instanceTableField); var grInstance = new GlideRecord(tableName); grInstance.get(recordId); var flowId = grInstance.getValue(instanceFlowTableField); var flowName = grInstance.getDisplayValue(instanceFlowTableField); flowInfo.affectedFlowIds[flowName] = 1; flowInfo.flows += 1; } // for v2 (saved flow json) var componentInstanceTable = "sys_hub_flow_component"; var classNameFieldName = "sys_class_name"; var classNames = "sys_hub_flow_logic_instance_v2,sys_hub_action_instance_v2,sys_hub_sub_flow_instance_v2"; var flowComponentGR = new GlideRecord(componentInstanceTable); flowComponentGR.addQuery(classNameFieldName, 'IN', classNames); flowComponentGR.query(); while (flowComponentGR.next()) { var childTableName = flowComponentGR.getValue("sys_class_name"); var childId = flowComponentGR.getValue("sys_id"); var childGr = new GlideRecord(childTableName); childGr.addQuery("sys_id", childId); childGr.query(); childGr.next(); var valueFieldName = "values"; if(childTableName === "sys_hub_sub_flow_instance_v2") { valueFieldName = "subflow_inputs"; } var encodedValue = childGr.getValue(valueFieldName); var parentFlowId = childGr.getDisplayValue("flow"); if(encodedValue == null) { gs.info("Encoded value is null for component with sys_id: " + childId); continue; } var decodedValue = ""; try { decodedValue = GlideCompressionUtil.expandToString(GlideStringUtil.base64DecodeAsBytes(encodedValue)); }catch (e) { // gs.info("Failed Decode: " + encodedValue); } try{ var objArr = JSON.parse(decodedValue); if(objArr && objArr.length > 0) { for(var i = 0; i < objArr.length; i++) { var obj = objArr[i]; if(obj.scriptActive) { var keys = Object.keys(obj.script); var scriptObj = obj.script[keys[0]]; var scriptText = scriptObj.script; var hasCatalogTask = scriptText.indexOf(inlineScriptValue); if(hasCatalogTask) { flowInfo.flows += 1; flowInfo.affectedFlowIds[parentFlowId] = 1; } } } } }catch (e) { // gs.info("Failed Parse: " + decodedValue); } } gs.info("Flows that contains the given KeyWord are: "); gs.print("======================================================="); var uniqueList = Object.keys(flowInfo.affectedFlowIds); gs.print("Flows are " + uniqueList.length); gs.print("\nflowIds: "); for(var i = 0; i < uniqueList.length ; i++) { gs.print(uniqueList[i]); } >>Sample output looks like below *** Script: Flows that contains the given KeyWord are:*** Script: =======================================================*** Script: Flows are 12*** Script: flowIds: *** Script: Catalog Builder - Item review base flow*** Script: Fetch suppliers from SAP ECC v2*** Script: AIS RAG reranker*** Script: Detect Language V4*** Script: Amazon Bedrock Chat Completions*** Script: Update PR/PO*** Script: Parallel processor job for supplier from SAP ECC v2*** Script: Fetch materials from SAP ECC v2*** Script: Cancel purchase lines*** Script: Chat Completions SSE - Wrapper*** Script: Google Cloud Completions - Vertex AI*** Script: Registered contact m2m mapping