Approval Workflow Variables for Change Requests

This topic provides a list of variables supported in approval and pre-provisioning workflows for change requests. For general information on variables, see Adding Commander Metadata to Workflows With Variables.

If you need a variable that isn't documented, contact support@snowsoftware.com, and if the variable is available, we'll provide you with the variable name. We'll also add it to the list of documented variables in the next release.

Change Request Approval Workflows

VariableExpressionDescription
Auto Scaling Group
Auto Scaling Group Desired Capacitytarget.desiredCapacityDesired number of instances for this auto scaling group.
Auto Scaling Group Launch Configuration Nametarget.launchConfigurationNameThe launch configuration used to launch the instances in the auto scaling group.
Auto Scaling Group Maximum Sizetarget.maxSizeThe maximum number of instances that should be running in this auto scaling group.
Auto Scaling Group Minimum Sizetarget.minSizeThe minimum number of instances that should be running in this auto scaling group.
Auto Scaling Group Virtual Cloudtarget.virtualCloud.nameThe auto scaling group virtual cloud.
Commander
Directorysystem.directoryDirectory where Commander is installed.
IP Addresssystem.addressThe IP address for the Commander server.
Portsystem.portThe port number used by Commander.
Configuration
Connection Statetarget.connectionStateIndicates whether a VM is connected to the cloud account. Values can be: Connected, Disconnected, Inaccessible, Invalid, Orphaned, or Unknown.
Hardware Versiontarget.hardwareVersionThe VM's hardware version (ESX 4.0 and later). Returns Unknown for SCVMM. Not supported for public cloud instances.
Image IDtarget.imageIdThe VM's image ID.
Database
Allocated Storagetarget.allocatedStorage.gbThe allocated storage size of the database, in gigabytes.
Database Nametarget.dbNameFor MySQL, SQL Server and PostgreSQL: The name of this instance's initial database provided at creation time, if a name was specified when the DB instance was created. This same name is returned for the life of the DB instance. For Oracle: The Oracle System ID (SID) of the created DB instance. Not shown when the returned parameters do not apply to an Oracle DB instance.
End pointtarget.portThe database's endpoint.
Engine Typetarget.engineTypeThe database type, for example, mysql or postgres.
Engine Versiontarget.engineVersionThe database version, for example, 5.6.22 or 9.3.6
Instance Statustarget.instanceStatusThe status of the database (for example, available, running, rebooting, deleting).
IOPStarget.iopsThe number of I/O operations per second (IOPS) that the database should provision.
Guest Tools
Running Statustarget.tools.runningStatusThe operating status of VMware Tools. Values can be: Starting, Not Running, Running, or Unknown.
Versiontarget.tools.versionThe version of VMware Tools.
Version Statustarget.tools.versionStatusThe version status of VMware Tools. Values can be: Unknown, Current, Not Installed, Out Of Date, Third Party, Error, Unsupported New Version, or Unsupported.
Infrastructure
Cloud Account Addresstarget.cloudAccount.addressThe address of the cloud account that the VM is running on. For AWS, this is the account number of the instance owner (the Owner property in AWS). For Microsoft Azure, this is the subscription ID.
Cloud Account Nametarget.cloudAccount.nameThe name of the cloud account.
Cloud Account Tenant IDtarget.cloudAccount.tenantIdThe Microsoft Azure tenant ID of the cloud account that the VM is running on.
Cloud Account Typetarget.cloudAccount.typeThe cloud account type. Values can be vc (for VMware), ms_scvmm, amazon_aws, googlecloud, ms_arm (for Azure Resource Manager), or k8s (for Kubernetes).
Clustertarget.cluster.nameThe name of the cluster on which the VM is located. Not supported for public cloud instances.
Datacentertarget.datacenter.nameThe name of the datacenter in which the VM is stored. AWS availability zones are represented as datacenters in Commander. Not supported for Azure Resource Manager.
Hosttarget.host.nameThe VM's host name. Not supported for public cloud instances.
Managed Bytarget.managedByThe remote id of the resource responsible for managing the current instance. The instance could be a host object or a VM.
Regiontarget.region.nameThe component's region.
Resource Grouptarget.resourceGroup.nameThe name of the resource group in which the VM is located. Supported only for Azure Resource Manager.
Resource Pooltarget.resourcePool.nameThe name of the resource pool to which the VM is assigned. Not supported for AWS or Azure Resource Manager.
Virtual Networktarget.virtualNetwork.nameThe name of the virtual network in which the VM is located. Supported only for Microsoft Azure.
Input Variables
Input VariableinputVariable['*']The value provided for the module specified input variable
Instance Type
ECUstarget.instanceType.ecuThe number of EC2 Compute Units associated with the instance type.

For custom cost calculations, this variable is supported for deployed services only (not for requests). Supported for Amazon EC2 only.
Memorytarget.instanceType.memory.gbThe amount of memory associated with the instance type, in gigabytes.
Remote IDtarget.instanceType.remoteIdThe instance type ID (for example, t1.micro, m3.2xlarge).
Storagetarget.instanceType.storage.gbThe amount of storage assigned to the instance type, in gigabytes.
vCPUstarget.instanceType.vcpuThe number of vCPUs assigned to the instance type.

For custom cost calculations, this variable is supported for deployed services only (not for requests).
Licensing
Azure Hybrid Benefittarget.azureHybridBenefitThe Azure Hybrid Benefit for the Azure instance. This could be for the VM or database.
Image Sourcetarget.licensing.imageSourceThe VM's image source.
Tenancytarget.licensing.tenancyThe VM's AWS tenancy.
Load balancer
Healthy Instance Healthtarget.healthyInstanceCountThe number of healthy instances associated with this load balancer.
Schemetarget.schemeFor load balancers attached to Amazon VPC, indicates the load balancer type. Values can be: internal (a load balancer with a DNS name that resolves to private IP addresses) or internet-facing (a load balancer with a publicly resolvable DNS name, which resolves to public IP addresses).
Unhealthy Instance Healthtarget.unhealthyInstanceCountThe number of unhealthy instances associated with this load balancer.
Unknown Instance Healthtarget.unknownInstanceCountThe number of instances associated with this load balancer whose health is unknown.
Operating System
Guest OStarget.guestOSThe guest operating system in a long format string.
Guest OS Familytarget.osFamilyThe type of operating system used by the VM. Values can be: Windows, Linux, Novell, Solaris, FreeBSD, or Other.
Request
Change in CPUsrequest.changeInCpuCountFor new requests: The difference between the number of CPUs requested and the number of CPUs configured in the service catalog. If using legacy component forms, the requested value is compared to the source template value.

For change requests: The difference between the requested number of CPUs and the actual number of CPUs.

Change in Memoryrequest.changeInMemory.gbFor new requests: The difference between the amount of memory requested and the amount of memory configured in the service catalog, in gigabytes. If using legacy component forms, the requested value is compared to the source template value.

For change requests: The difference between the requested memory and the actual memory, in gigabytes.

Change in Storagerequest.changeInStorage.gbFor new requests: The difference between the amount of storage requested and the amount of storage configured in the service catalog, in gigabytes. If using legacy component forms, the requested value is compared to the source template value.

For change requests: The difference between the requested storage and the actual storage, in gigabytes.

Date Submittedrequest.requestDateThe date when the request was submitted. Value is a date string.
Form Namerequest.form.nameThe name of the service request form.
Maintenance Window Schedulerequest.maintenanceScheduleTimeThe maintenance window schedule for fulfilling the request.
Primary Owner Emailrequest.primaryOwner.emailThe email address of the primary owner specified on the request form. If the Primary Owner element is not on the request form, returns the primary owner of the source component.
Reboot Requiredrequest.rebootRequiredIndicates whether the target requires a reboot to fulfill the change request. Returns true when a reboot is required and false if no reboot is required.
Request IDrequest.idThe unique identifier for the service request.
Resources Changedrequest.resourcesChangedIndicates whether any of the requested CPU, memory, instance type or storage values differ from the values configured in the service catalog (for new requests) or on the VM (for change requests). Values can be: true, false.
Rightsizing Recommendation Directionrequest.rightsizingDirectionIndicates the rightsizing recommendation direction. Values can be: up, down, or unknown.
Rightsizing Recommendation is Automatedrequest.automatedRightsizingIndicates whether the rightsizing recommendation is automated. Returns true when it is automated and false if it is not.
Total CPUs Requestedrequest.cpuCountThe total number of CPUs in a service request; the sum of existing CPUs and any additional CPUs requested.
Total Memory Requestedrequest.memory.gbThe total memory in a service request; the sum of existing memory and any additional memory requested, in gigabytes.
Total Storage Requestedrequest.storage.gbThe total storage in a service request; the sum of existing storage and any additional storage requested, in gigabytes.
Requested Component
CPUstarget.settings.cpuCountThe number of CPUs, if changed.

For change requests, a value of -1 indicates that the value is the same as set on the source service.

Dynamic Listtarget.settings.dynamicList['*']The value of the specified dynamic list from the request. Replace * with the name of the dynamic list.
Expiry Datetarget.settings.expiryDateThe date set for the service to expire. Values can be: Date, No Expiry Date Set, or Never Expires.
Input Fieldtarget.settings.inputField['*']The value of the specified input text field from the request. Replace * with the name of the input text field.
Instance Type Remote IDtarget.settings.instanceType.remoteIdThe instance type ID (for example, t1.micro, m3.2xlarge).
Key Pairtarget.settings.keyPair.nameThe name of the requested key pair.
Memorytarget.settings.memory.gbMemory of the VM, if changed, in gigabytes.

For change requests, a value of -1 indicates that the value is the same as that set in the service catalog (or on the source template, for legacy component forms).

Network Adapterstarget.settings.nicCountThe number of network adapters requested.
Primary Owner Emailtarget.settings.primaryOwner.emailThe email address of the primary owner specified on the request form.
Requester's Organizationtarget.settings.organization.nameThe requester's organization, or the organization requested on the form. Empty if an organization change is requested and the organization cannot be determined.
Required Bytarget.settings.dueDateThe instance type ID (for example, t1.micro, m3.2xlarge).
Schedule Typetarget.settings.scheduleTypeThe type of fulfillment schedule requested. Values can be: "Immediate", "Maintenance Window", or "Specific Time".
Specific Timetarget.settings.specificTimeThe scheduled fulfillment time requested for the service, in the format yyyy/mm/dd hh:mm:ss.
Total Storagetarget.settings.storage.gbFor new requests, the total of all storage, in GB.

For change requests, this value represents existing storage plus any changes.

Uploaded Filetarget.settings.uploadedFile['*']The name(s) of the specified uploaded file(s) from the request. Replace * with the display label of the File Upload control.
Uploaded File Contenttarget.settings.uploadedFile['*'].file[x].contentThe content of the file for an File Upload control in the request. Replace * with the name of the File Upload control. Replace [x] with a number starting with [1]; for example, [2] represents the second file in the File Upload control.
Uploaded File Nametarget.settings.uploadedFile['*'].file[x].fileNameThe filename for an File Upload control in the request. Replace * with the name of the File Upload control. Replace [x] with a number starting with [1]; for example, [2] represents the second file in the File Upload control.
Requested Component Custom Attributes
Custom Attributetarget.settings.customAttribute['*']The value of the specified custom attribute from the request. Replace * with the name of the custom attribute.
Requested Service Cost
Dailyrequest.cost.dailyThe daily estimated cost for the requested service.
Daily Markuprequest.cost.markup.dailyThe daily estimated markup/discount cost for the requested service.
Monthlyrequest.cost.monthlyThe monthly estimated cost for the requested service.
Monthly Markuprequest.cost.markup.monthlyThe monthly estimated markup/discount cost for the requested service.
Quarterlyrequest.cost.quarterlyThe quarterly estimated cost for the requested service.
Quarterly Markuprequest.cost.markup.quarterlyThe quarterly estimated markup/discount cost for the requested service.
Weeklyrequest.cost.weeklyThe weekly estimated cost for the requested service.
Weekly Markuprequest.cost.markup.weeklyThe weekly estimated markup/discount cost for the requested service.
Yearlyrequest.cost.yearlyThe yearly estimated cost for the requested service.
Yearly Markuprequest.cost.markup.yearlyThe yearly estimated markup/discount cost for the requested service.
Requester
Organization Contact Emailsrequest.requester.organization.emailA comma-separated list of email addresses of the organization's primary contact(s). Supported in the Address List field. If the Organization element is not on the request form, returns the requester's organization.
Organization Namerequest.requester.organization.nameThe organization of the user requesting the VM.
Parent Organization Contact Emailsrequest.requester.parentOrganization.emailA comma-separated list of email addresses for the parent organization's primary contacts. Supported in the Address List field. If the Organization element is not on the request form, the variable returns the requester's organization. The parent organization is determined by the selected organization or the requester's organization.
Parent Organization Namerequest.requester.parentOrganization.nameThe parent organization of the user requesting the VM.
Requester Emailrequest.requester.emailThe email address of the requester.
Requester Full Namerequest.requester.nameThe full name of the requester.
Requester UserIdrequest.requester.userIdThe user ID of the requesting user.
Resources - CPU
CPU Limittarget.cpuLimit.ghzThe maximum CPU allocation for the VM. Each unit represents a GHz.

For custom cost calculations, this variable is supported for deployed services only (not for requests). Not supported for public cloud instances.
CPU Reservationtarget.cpuReservation.ghzThe guaranteed CPU allocation for the VM, in GHz.

For custom cost calculations, this variable is supported for deployed services only (not for requests). Not supported for public cloud instances.
CPU Sharestarget.cpuSharesThe CPU shares for a VM as part of a parent's total. Sibling virtual machines share resources according to their relative share values bounded by the reservation and limit.

For custom cost calculations, this variable is supported for deployed services only (not for requests). Not supported for public cloud instances.
Number Of Corestarget.numCoresThe total number of cores of the deployed target.
Total CPUstarget.cpuCountThe total number of CPUs of the deployed target.
Resources - Memory
Memory Limittarget.memLimit.gbThe maximum amount of the host's memory that the VM can use, in gigabytes. Can be -1 for unlimited.

For custom cost calculations, this variable is supported for deployed services only (not for requests). Not supported for public cloud instances.
Memory Reservationtarget.memReservation.gbThe amount of memory reserved for the VM, in gigabytes.

For custom cost calculations, this variable is supported for deployed services only (not for requests). Not supported for public cloud instances.
Memory Sharestarget.memSharesA relative metric for allocating memory capacity (Low, Normal, High and Custom) – compared to the sum of all shares of all virtual machines on the server and, if applicable, the server console. Not supported for public cloud instances.
Total Memorytarget.memory.gbThe total amount of memory of the deployed target, in gigabytes.
Resources - Network
IP Addresstarget.ipAddressThe VM's IP address. For public cloud instances, this is the public IP address.
IPv4 Addressestarget.ipv4AddressesA list of the VM's IPv4 addresses. Not supported for public cloud instances.
IPv6 Addressestarget.ipv6AddressesA list of the VM's IPv6 addresses. Not supported for public cloud instances.
MAC Addresstarget.macAddressesThe unique address assigned to a virtual network adapter. Not supported for public cloud instances.
Networktarget.networksThe VM's network. Not supported for public cloud instances.
NIC Counttarget.nicCountThe number of Ethernet adapters for the VM. Not supported for public cloud instances.
Private IP Addresstarget.ipAddressPrivateThe private IP address for fenced VMs or the private IP address for public cloud VMs.
Resources - Storage
Committed Storage Spacetarget.storage.spaceCommitted.gbThe space occupied by all VMDK files + Other Files in the VM's directory (even if they are unrelated to the VM), in gigabytes.

For custom cost calculations, this variable is supported for deployed services only (not for requests).
Consumed Storage Spacetarget.storage.spaceConsumed.gbThe sum of all VM hard drives configured in vCenter (that is, all VMDK files) as reported by vCenter, in gigabytes.

For custom cost calculations, this variable is supported for deployed services only (not for requests).
Container Storage Usedtarget.containerSpaceUsed.gbThe sum of all physical disks as reported by the guest OS, in gigabytes.

For custom cost calculations, this variable is supported for deployed services only (not for requests).
Datastoretarget.datastore.nameThe datastore on which the VM is located. For Microsoft Azure, returns the name of the OS disk's storage account.
Disk Counttarget.storage.diskCountThe total number of disks on the VM (including hard disks, CD-ROMs, etc.).
Provisioned Storagetarget.provisionedStorage.gbThe maximum storage available to the VM regardless of whether the storage is actually used by the VM, in gigabytes. Can be a value of 0 if data is unavailable.

For custom cost calculations, this variable is supported for deployed services only (not for requests).
Scanned Storage Spacetarget.storage.spaceScanned.gbThe size of the VMDK file + log file + snapshots + swap files + all other VM files in folder, in gigabytes. Supported for pre-vCenter 4.0 systems.

For custom cost calculations, this variable is supported for deployed services only (not for requests).
Storage Free Spacetarget.storage.spaceFree.gbThe amount of unused space on all logical disks as reported by the guest OS, in gigabytes.

For custom cost calculations, this variable is supported for deployed services only (not for requests). For public cloud VMs, returns Unknown.
Storage Free Space Percentagetarget.storage.spaceFreePercentThe amount of free disk space as a percentage of the total space, as reported by the guest OS.

For custom cost calculations, this variable is supported for deployed services only (not for requests). For public cloud VMs, returns Unknown.
Storage Logical Sizetarget.storage.logicalSize.gbThe sum of all logical disks partitioned on the physical disks as reported by the guest OS, in gigabytes.

For custom cost calculations, this variable is supported for deployed services only (not for requests). For public cloud VMs, returns Unknown.
Total Storagetarget.storage.gbThe total of all storage of the deployed target, in gigabytes.

For custom cost calculations, this variable is supported for both requests and deployed services.
Unallocated Storage Spacetarget.storage.spaceUnallocated.gbThe virtual disk size minus the physical disk size, in gigabytes. Only returns a value during the time interval between adding a new disk to a VM in vCenter and running the next Commander datastore scan.

For custom cost calculations, this variable is supported for deployed services only (not for requests).
Unpartitioned Storage Spacetarget.storage.spaceUnpartitioned.gbThe physical disk size minus the logical disk size, in gigabytes.

For custom cost calculations, this variable is supported for deployed services only (not for requests).
Target
All Owners Emailtarget.allOwners.emailSemicolon-separated list of email addresses of the service's or component's owners.
Availability Settarget.availabilitySet.nameThe availability set of the target. Supported only for Microsoft Azure.
Chef Nodetarget.chefNodeTrue if this VM is managed by Chef.
Chef Node Nametarget.chefNodeNameThe name of the Chef node associated with this VM.
Deployed Nametarget.deployedNameThe deployed name of the component.
DNS nametarget.dnsNameThe DNS name of the VM. For AWS VMs, which have both a private and a public DNS name, this is the public DNS name.
Expiry Datetarget.expiryDateThe date set for the VM to expire. Values can be: Date, No Expiry Date Set, or Never Expires.
Management Server Typetarget.mediatorTypeThe management server type. Values can be: Unknown, Vim2, Vim2.5, Vim4, Vim4.1, Vim5, Vim5.1, VIM55, MS SCVMM, Amazon Web Services, Microsoft Azure, or Kubernetes.
Number of VMstarget.vmCountThe number of VMs in the virtual service.
Organization IDtarget.organization.idThe unique identifier of target VM's organization.
Power Statetarget.stateThe power state of the VM. Values can be: Creating, Failed, Not running, Running, Saved, Starting, Stopping, Suspended, Suspending, or Unknown.
Primary Owner Emailtarget.primaryOwner.emailThe email address of the primary owner assigned to the target.
Puppet Nodetarget.puppetNodeTrue if this VM is managed by Puppet.
Puppet Node Nametarget.puppetNodeNameThe name of the Puppet node associated with this VM.
Remote IDtarget.remoteIdAn identifier for the VM/component in the cloud account. Do not use for customized VM naming.
Replication Errortarget.replicationErrorFor read replicas, displays errors that occurred during replication, if any.
Replication Statetarget.replicationStateFor read replicas, the state of the read replica (for example, replicating, replicated).
Target IDtarget.idThe unique identifier of the target VM.
Typetarget.typeThe component type. Values can be: Virtual Machine, Virtual Service, or Unmanaged Object.
Target Cost
Dailytarget.cost.dailyThe daily estimated cost for the VM.
Daily Markuptarget.cost.markup.dailyThe daily estimated markup/discount cost for the VM.
Monthlytarget.cost.monthlyThe monthly estimated cost for the VM.
Monthly Markuptarget.cost.markup.monthlyThe monthly estimated markup/discount cost for the VM.
Quarterlytarget.cost.quarterlyThe quarterly estimated cost for the VM.
Quarterly Markuptarget.cost.markup.quarterlyThe quarterly estimated markup/discount cost for the VM.
Weeklytarget.cost.weeklyThe weekly estimated cost for the VM.
Weekly Markuptarget.cost.markup.weeklyThe weekly estimated markup/discount cost for the VM.
Yearlytarget.cost.yearlyThe yearly estimated cost for the VM.
Yearly Markuptarget.cost.markup.yearlyThe yearly estimated markup/discount cost for the VM.
Target Custom Attributes
Custom Attributetarget.customAttribute['*']The value of the specified custom attribute for the deployed target. Replace * with the name of the custom attribute.

For custom cost calculations, this variable is supported for both requests and deployed services.
Workflow
Exit Codesteps[x].exitCodeReturns the exit code of the specified Execute Script step in the current workflow. Replace the x with either a step number or step name. For example, #{steps[1].exitCode} returns the exit code from the first step in the workflow. If using a step name, enclose the step name in single quotation marks.
Outputsteps[x].outputReturns the output of the specified Execute Script step in the current workflow. Replace the x with either a step number or step name. For example, #{steps[1].output} returns the output from the first step in the workflow. If using a step name, enclose the step name in single quotation marks.
Skippedsteps[x].skippedIndicates whether the specified step was skipped. Returns true if the specified step number was skipped; false otherwise. Replace the x with either a step number or step name. For example, #{steps[1].skipped} returns false if Step 1 in the current workflow executed successfully. If using a step name, enclose the step name in single quotation marks.
Workflow IDworkflowIdThe Unique ID of the workflow this step is part of

Change Request Approval Workflows: Address List Field Only

VariableExpressionDescription
Input Variables
Input VariableinputVariable['*']The value provided for the module specified input variable
Request
Primary Owner Emailrequest.primaryOwner.emailThe email address of the primary owner specified on the request form. If the Primary Owner element is not on the request form, returns the primary owner of the source component.
Requested Component
Primary Owner Emailtarget.settings.primaryOwner.emailThe email address of the primary owner specified on the request form.
Requester
Organization Contact Emailsrequest.requester.organization.emailA comma-separated list of email addresses of the organization's primary contact(s). Supported in the Address List field. If the Organization element is not on the request form, returns the requester's organization.
Parent Organization Contact Emailsrequest.requester.parentOrganization.emailA comma-separated list of email addresses for the parent organization's primary contacts. Supported in the Address List field. If the Organization element is not on the request form, the variable returns the requester's organization. The parent organization is determined by the selected organization or the requester's organization.
Requester Emailrequest.requester.emailThe email address of the requester.
Target
All Owners Emailtarget.allOwners.emailSemicolon-separated list of email addresses of the service's or component's owners.
Primary Owner Emailtarget.primaryOwner.emailThe email address of the primary owner assigned to the target.
Target Custom Attributes
Custom Attributetarget.customAttribute['*']The value of the specified custom attribute for the deployed target. Replace * with the name of the custom attribute.

For custom cost calculations, this variable is supported for both requests and deployed services.
Workflow
Outputsteps[x].outputReturns the output of the specified Execute Script step in the current workflow. Replace the x with either a step number or step name. For example, #{steps[1].output} returns the output from the first step in the workflow. If using a step name, enclose the step name in single quotation marks.