Troubleshooting Robot job "SendRejectionEmails.ActionUpdate" logs the error "Message: Value cannot be null." error
Who is this article for?Administrators finding this error in the Robot log.
IT Administrator permissions are required to resolve the issue.
You might find that the Robot log contains an error for the SendRejectionEmails.ActionUpdate job:
Message: Value cannot be null. Parameter name: uid
This article explains what causes the issue and how to resolve it.
1. Issue
This issue can be caused by a corrupted message on the Microsoft Message Queue. When the Robot attempts to process the message it fails, and the following error is logged:
1. Exception of type: ArgumentNullException - Message: Value cannot be null.
Parameter name: uid
at Pentana.Tng.Messaging.Guard.ArgumentNotNull(Object argumentValue, String argumentName)
at Pentana.Tng.Messaging.GetCall..ctor(UniqueKey uid, String[] paths)
at Pentana.Tng.Agent.AgentHelperInstance.GetEntities(IList`1 uids)
at Pentana.Tng.Agent.AgentHelperInstance.GetEntity(UniqueKey uid)
at Pentana.Tng.ServerRobot.SendRejectionEmails.DoWork(UniqueKey uid, SerializableDictionary`2 parameters)
at Pentana.Tng.ServerRobot.QueueJobBase.DoWork()
at Pentana.Tng.ServerRobot.JobBase.Invoke()
In addition, if logging is set to verbose, then the following will be logged:
SendRejectionEmails.ActionUpdate has failed. ExecutionTime: 1,9487647
VERBOSE:, Pentana.Tng.ServerRobot.RobotService, 15, 02/20/2025 09:37:02,
HandleQueue processed notification: {Guid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, Id=x, Mid=ActionUpdate}
2. Solution
To resolve this issue:
- Go to Computer Management.
- Select Message Queuing.
- Choose Private Queues.
- Expand the correct queue.
- Review the list of messages to ensure that all pending messages have been processed (except the faulty one).
- Right-click Queue Messages.
- Hover over All Tasks.
- Select Purge.
The next run of the job should succeed without error.
3. Identifying intended recipient
It is not possible to determine the intended recipient of the failed message from the message properties, because it is corrupt and cannot be opened.
If the error has been logged while the Robot is logging in verbose mode, you can use the logged record ID to find this information:
- Open the Robot log in a text editor.
- Find the error message.
Specifically the part showing the GUID and ID, e.g.:
HandleQueue processed notification: {Guid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, Id=x, Mid=ActionUpdate} - Substitute the ID in this query in order to find the name of the Action Update and the respondent:
SELECT AU.Name, P.Name
FROM ActionUpdate AS AU
INNER JOIN Person AS P
ON AU.RespondentID = P.ID
WHERE AU.ID = x;