Why is the "MachineName" value NULL when using /odata/QueueItems?$expand=Robot API call when using machine templates?
Some organizations previously using Standard machines have calculated total (utilization) processing time per machine using the <base URL>/odata/QueueItems?$expand=Robot API call, which retrieves queued items for each Robot with the details for the machine that processed each queue item.
The “MachineName” property under the “Robot” identifies the machine used to process a specific queue item when using Standard Machines.
However, once Robots are deployed using Machine Templates, the QuedItems API call will return a null value.
This may cause concern, as the machine template can be used across a large number of machines, making it harder to determine total utilization per machine.
The machine that ran each standard, unqueued job is still available using <base URL>/odata/Jobs API call, but Jobs are not correlated to Queue Items. If a pool of users is present and a pool of machines assigned to a specific process, without the “MachineName” value, it is impossible to determine which machine from the pool was picked to process a specific queue item, especially if there are jobs that may have more than one Robot assigned to them.
Resolution: The easiest way to calculate an automation’s return on investment (ROI) is,
(Time it would take a human)*(Cost of the human)*(number of executions/year)
Note that the above calculation assumes the existence of the automation platform and returns the ROI of a single robot license on a single process.
Alternatively, to retain some equivalence with legacy ROI utilization calculations, processes can be restricted robots to single machines, which should enable closer approximations to the previous utilization calculation, as Robot==Machine, mirroring standard machine usage. This will likely reduce the realized ROI, as the Robot’s functionality is limited to the assigned processes.
The product team has confirmed there is no correlation maintained in the database between the QueueItems and Jobs tables in the database by design, so the API will not return a MachineName in QueueItem queries. The entities are independent in the database, such that any job can pull any queue item, do full or partial work, and mark the work it has done if required.
The API was changed as machines were decoupled from other runtime functions, meaning a Robot can run anywhere without issue. This gives better availability, redundancy, and flexibility with greater license allocation and utilization.
Use analytics data to log transaction-specific machine usage information on queued items going forward. Setting the Enforce unique references toggle on the target queues ensures data validity. The Specific Data, Output Data, and Analytics Data captured are defined in the JSON schema uploaded to each target queue.
In order to log failed transactions in analytics data, use Automation Cloud or Orchestrator 2022.10 or later with UiPath.System.Activities 2022.10.3 or later.