Automated Transaction reporting from orchestrator

Hi All,

Just wondering if there is a way I can extract the Orchestrator queue data for reporting purposes. I know this can be exported manually from Orchestrator but I am looking for an automated solution that can run on a daily/weekly/monthly basis and extract transaction data from the queue to provide the performance of the BOT ( successful vs business vs system exceptions). The transaction data volumes to be 1000s

Thanks.

Hi @ajp,

There are many ways to go about what you are looking for. UiPath has their Insights and would probably provide you with what you are seeking (I have not used it myself).

In our setup [On-Prem Enterprise] we make use of additional NLog Targets on the Orchestrator Nodes. (You could also do this on the Robot, but we find a central point to flow the log events easier to maintain).

Keep in mind our current setup has been in place since Orchestrator 2018 and we are currently on 2020.10 so there may be newer features [Output, Performance attributes] of Queue Items you could make further use of.

image

As part of our workflows we maintain a Dictionary of ‘output’ data points we want to keep track of and when Setting the transaction status we attach that dictionary to in_TransactionItem.Output and immediately after the Set transaction status we write an Info Log sandwiched between Add Transaction log fields and Remove Transaction log fields in this we attach the in_TransactionItem
as queueItem which is the last log event for the Transaction ID

In doing this whether the queue items was Successful, Business Exception, or Application Exception we have data points relevant to the business process that can be used for both KPIs but also for general reporting by our business groups.

We flow our Robot logs into Splunk and provide dashboards that are used both by our Operations team and by the Business groups and we end up with something that looks like the following. Being able to build reports based on the Input (SpecificData, Output, and transaction status), we also further refine the definition of ‘success’ for the business group depending on what the business exception is and calculate different ROI for each scenario.

Below is an example of one log event (when setting the transaction status), but we combine the dashboards with the Start / End events to build the whole transaction and from that we get a pretty good picture of performance and other KPI metrics.

{
  "timeStamp": "2021-10-22 03:03:06.4302950-00:00",
  "jobId": "414353ef-ee14-4ae6-876f-8119019be44e",
  "organizationUnitId": "1",
  "tenantId": "1",
  "level": "4",
  "windowsIdentity": "username",
  "processName": "process_name",
  "message": "Log Message",
  "rawMessage": {
    "message": "Log Message",
    "level": "Error",
    "logType": "User",
    "timeStamp": "2021-10-21T21:03:06.430295-06:00",
    "fingerprint": "81cc7a79-0b62-44db-b5f2-746c5b35de61",
    "windowsIdentity": "username",
    "machineName": "machinename",
    "processName": "process_name",
    "processVersion": "1.0.7578.25813",
    "jobId": "414353ef-ee14-4ae6-876f-8119019be44e",
    "robotName": "MegaMan-B",
    "machineId": 37,
    "organizationUnitId": 1,
    "fileName": "SetTransactionStatus",
    "runId": "FriOct22",
    "logF_BusinessProcessName": "Framework",
    "account": "99999999999",
    "queueItem": {
      "Status": 2,
      "SpecificContent": {
        "account": "99999999999",
        "repId": "8888",
        "username": "username"
      },
      "LastProcessingOn": null,
      "RetryNo": 0,
      "Id": 1671420,
      "ItemKey": "5b10ba5a-e80b-4490-807c-119ffecbcb51",
      "QueueDefinitionId": 4,
      "AssignedTo": null,
      "QueueName": "queuename",
      "Priority": 0,
      "Reference": "99999999999",
      "RowVersion": "AAAAAAA9Z5I=",
      "ProcessingException": null,
      "StartTransactionTime": "2021-10-21T21:03:04.5552888-06:00",
      "ReviewStatus": "None",
      "Progress": "",
      "Output": {
        "Account": "99999999999",
        "result": "--",
        "ErrorCode": "2006",
        "Branch": "MAN",
        "BillableStatus": "Off",
      },
      "DueDate": null,
      "DeferDate": null
    },
    "logF_TransactionField2": "",
    "logF_TransactionField1": "",
    "logF_TransactionID": "",
    "logF_TransactionNumber": "1",
    "logF_TransactionStatus": "BusinessException"
  },
  "robotName": "MegaMan-B",
  "machineId": "37"
}

I have few posts kicking around that may over some insight if you do a quick search, but please let me know if you have any questions.

The other thing that you could look into is Webhooks if you are not interested in all the logs. as well as other targets for NLog (Elastic Search / ELK Stack, database, etc.)