Error: "savings" is not defined, from Azure Aged Snapshots Recommendations flowDescriptionCloud Cost Management includes the Azure Aged Snapshots Recommendations subflow, that uses action Azure Aged Snapshots Response Processor which runs function updateSavingsForRecommendations in script include AzureSnapshotsResponseProcessor. That has a code issue that causes a "savings" is not defined error when the flow runs.Steps to Reproduce Install or upgrade to Cloud Cost Management 8.2.0 (this is not seen in earlier versions)Set up Unused resources analysis for Microsoft Azure Flow execution contexts will have the error:Azure Aged Snapshots Recommendations / Azure Aged Snapshots Response Processor: Error: "savings" is not defined.,Detail: "savings" is not defined. Appnode localhost logs will show something like this, confirming the function updateSavingsForRecommendations in script include AzureSnapshotsResponseProcessor is the issue:You're likely to see this while the "Create cloud request with timeout subflow" subflow runs. 2025-02-10 19:37:31 (159) worker.1 worker.1 txid=4b6d0c179723 SysLog WARNING *** WARNING *** Evaluator: com.glide.script.RhinoEcmaError: "savings" is not defined. sys_script_include.44ce0f3a434121104a1033879fb8f25f.script : Line(197) column(0)2025-02-10 19:37:31 (161) worker.1 worker.1 txid=4b6d0c179723 GlidePFLogger SEVERE *** ERROR *** Encountered error executing instruction: OpInstruction{id=24, opClass=com.snc.process_flow.operation.script.ScriptOperation, io=Io{input={mid_selection=RefOrValue{value=auto_select, isRef=false}, capabilities=RefOrValue{value=, isRef=false}, connection_alias=RefOrValue{value=, isRef=false}, application=RefOrValue{value=35aa573fd7802200bdbaee5b5e610375, isRef=false}, mid_server=RefOrValue{value=, isRef=false}, mid_cluster=RefOrValue{value=, isRef=false}, required_run_time=RefOrValue{value=instance, isRef=false}, ci_chunk=RefOrValue{value=in.ci_chunk, isRef=true}, host=RefOrValue{value=, isRef=false}, mid_selection_type=RefOrValue{value=any, isRef=false}, request_sys_id=RefOrValue{value=c3o.cloud_api_request, isRef=true}, script=RefOrValue{value=(function execute(inputs, outputs) { var helper = new sn_clin_azure.AzureSnapshotsResponseProcessor(inputs.ci_chunk); // Process Describe Response and create recommendations. helper.describeResponseProcessor(inputs.request_sys_id); // Update the recommendations with savings. helper.updateSavingsForRecommendations();})(inputs, outputs);, isRef=false}}, output={__step_status__=s2o.__step_status__}, defaultOutput={}}, name=ca980253434521104a1033879fb8f279, parentActionId=bdc70613434521104a1033879fb8f221}com.snc.process_flow.exception.OpException: Error: "savings" is not defined.,Detail: "savings" is not defined. at com.snc.process_flow.operation.script.ScriptOperationBase.handleScriptResult(ScriptOperationBase.java:64) at com.snc.process_flow.operation.script.ScriptOperationBase.runScript(ScriptOperationBase.java:52) at com.snc.process_flow.operation.script.ScriptOperation.run(ScriptOperation.java:75) at com.snc.process_flow.engine.Operation.run2(Operation.java:90) at com.snc.process_flow.v2.exec.OpRunner.runOperation(OpRunner.java:75) at com.snc.process_flow.v2.exec.OpRunner.runOperation(OpRunner.java:69) at com.snc.process_flow.v2.exec.OpInstructionExecutor.runOperation(OpInstructionExecutor.java:60) at com.snc.process_flow.v2.exec.OpInstructionExecutor.execute(OpInstructionExecutor.java:27) at com.snc.process_flow.v2.exec.OpInstructionExecutor.execute(OpInstructionExecutor.java:16) at com.snc.process_flow.v2.exec.EngineV2.executeInstructions(EngineV2.java:181) at com.snc.process_flow.v2.exec.EngineV2.run(EngineV2.java:106) at com.snc.process_flow.v2.exec.EngineRunner.lambda$run$0(EngineRunner.java:28) at com.snc.process_flow.v2.exec.enviroment.execution.ExecutionScopeRunner.run(ExecutionScopeRunner.java:37) at com.snc.process_flow.v2.exec.EngineRunner.run(EngineRunner.java:28) at com.snc.process_flow.engine.EngineV2Adapter.runWithExecutionResult(EngineV2Adapter.java:253) at com.snc.process_flow.engine.ProcessAutomation.runWithExecutionResult(ProcessAutomation.java:109) at com.snc.process_flow.engine.ProcessAutomation.run(ProcessAutomation.java:70) at com.snc.process_flow.engine.GlideProcessAutomation.runSync(GlideProcessAutomation.java:234) at com.snc.process_flow.engine.GlideProcessAutomation.runWithDomain(GlideProcessAutomation.java:380) at com.snc.process_flow.engine.GlideProcessAutomation.lambda$runAsUserSync$1(GlideProcessAutomation.java:345) at com.snc.process_flow.engine.PFSessionClone.run(PFSessionClone.java:71) at com.snc.process_flow.engine.GlidePFSession.runPlanAsUserSession(GlidePFSession.java:42) at com.snc.process_flow.engine.GlideProcessAutomation.runAsUserSync(GlideProcessAutomation.java:343) at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:440) at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:404) at com.snc.process_flow.engine.PFContext.processOnContextTermination(PFContext.java:582) at com.snc.process_flow.engine.PFContext.savePlan(PFContext.java:485) at com.snc.process_flow.engine.steps.ISavePlan.savePlan(ISavePlan.java:16) at com.snc.process_flow.engine.GlideProcessAutomation.persistPlan(GlideProcessAutomation.java:1235) at com.snc.process_flow.engine.GlideProcessAutomation.persist(GlideProcessAutomation.java:1240) at com.snc.process_flow.engine.ProcessAutomation.runWithExecutionResult(ProcessAutomation.java:123) at com.snc.process_flow.engine.ProcessAutomation.run(ProcessAutomation.java:70) at com.snc.process_flow.engine.GlideProcessAutomation.runSync(GlideProcessAutomation.java:234) at com.snc.process_flow.engine.GlideProcessAutomation.runWithDomain(GlideProcessAutomation.java:380) at com.snc.process_flow.engine.GlideProcessAutomation.lambda$runAsUserSync$1(GlideProcessAutomation.java:345) at com.snc.process_flow.engine.PFSessionClone.run(PFSessionClone.java:71) at com.snc.process_flow.engine.GlidePFSession.runPlanAsUserSession(GlidePFSession.java:42) at com.snc.process_flow.engine.GlideProcessAutomation.runAsUserSync(GlideProcessAutomation.java:343) at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:440) at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:404) at com.snc.process_flow.engine.PFContext.processOnContextTermination(PFContext.java:582) at com.snc.process_flow.engine.PFContext.savePlan(PFContext.java:485) at com.snc.process_flow.engine.steps.ISavePlan.savePlan(ISavePlan.java:16) at com.snc.process_flow.engine.GlideProcessAutomation.persistPlan(GlideProcessAutomation.java:1235) at com.snc.process_flow.engine.GlideProcessAutomation.persist(GlideProcessAutomation.java:1240) at com.snc.process_flow.engine.ProcessAutomation.runWithExecutionResult(ProcessAutomation.java:123) at com.snc.process_flow.engine.ProcessAutomation.run(ProcessAutomation.java:70) at com.snc.process_flow.engine.GlideProcessAutomation.runSync(GlideProcessAutomation.java:234) at com.snc.process_flow.engine.GlideProcessAutomation.runWithDomain(GlideProcessAutomation.java:380) at com.snc.process_flow.engine.GlideProcessAutomation.lambda$runAsUserSync$1(GlideProcessAutomation.java:345) at com.snc.process_flow.engine.PFSessionClone.run(PFSessionClone.java:71) at com.snc.process_flow.engine.GlidePFSession.runPlanAsUserSession(GlidePFSession.java:42) at com.snc.process_flow.engine.GlideProcessAutomation.runAsUserSync(GlideProcessAutomation.java:343) at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:440) at com.snc.process_flow.engine.GlideProcessAutomation.messageFlow(GlideProcessAutomation.java:413) at com.snc.process_flow.engine.ProcessHubEventHandler.doSendMessage(ProcessHubEventHandler.java:536) at com.snc.process_flow.engine.ProcessHubEventHandler.process(ProcessHubEventHandler.java:156) at com.snc.process_flow.engine.ProcessHubEventHandler.process(ProcessHubEventHandler.java:119) at com.snc.process_flow.engine.FlowEventManager.processEvents(FlowEventManager.java:179) at com.glide.job.EventHandlerJob.execute(EventHandlerJob.java:50) at com.glide.schedule.JobExecutor.lambda$executeJob$1(JobExecutor.java:195) at com.glide.schedule.JobExecutor.executeJob(JobExecutor.java:198) at com.glide.schedule.JobExecutor.execute(JobExecutor.java:178) at com.glide.schedule.JobExecutor.execute(JobExecutor.java:168) at com.glide.schedule_v2.SchedulerWorkerThread.executeJob(SchedulerWorkerThread.java:609) at com.glide.schedule_v2.SchedulerWorkerThread.lambda$process$2(SchedulerWorkerThread.java:402) at com.glide.worker.TransactionalWorkerThread.executeInTransaction(TransactionalWorkerThread.java:35) at com.glide.schedule_v2.SchedulerWorkerThread.process(SchedulerWorkerThread.java:402) at com.glide.schedule_v2.SchedulerWorkerThread.run(SchedulerWorkerThread.java:178)2025-02-10 19:37:31 (162) worker.1 worker.1 txid=4b6d0c179723 GlidePFLogger SEVERE *** ERROR *** Encountered error executing instruction: ActionErrorEvalInstruction{id=26, conditions=[], statusKey=c4o.__action_status__, dontTreatAsErrorKey=c4o.__dont_treat_as_error__}, errorMessage:Error: "savings" is not defined.,Detail: "savings" is not defined., errorCode:1WorkaroundThis problem is currently under review and targeted to be fixed in a future release. Subscribe to this Known Error article to receive notifications when more information will be available. The workaround is to correct the variable name in the AzureSnapshotsResponseProcessor script include. From: recomGr.setValue('monthly_savings', savings); To: recomGr.setValue('monthly_savings', savingsAmount); // Workaround for PRB1852803. Revert after upgrading to Cloud Cost Management v9.x An Update set is attached containing that workaround for instances running Cloud Cost Management 8.2.0Related Problem: PRB1852803