When working with the Microsoft Dataverse platform, you sometimes get presented with error messages in the strangest circumstances. Take, for example, a recent scenario where we were getting the following error message whenever we attempted to save a Case row within Dynamics 365 Customer Service:
The user with SystemUserId=1e18d5cd-72a6-462a-98ab-eb76b1f17b79 in OrganizationContext=e1c03efe-c3a0-4a35-9ed7-05f49ab97918 is not licensed, and its SystemUserAccessMode=0 is not either of (NonInteractive=4, SetupUser=1)
The error would fire against any operation we targeted against the table - such as saving a row or executing a plug-in that performed some action against the table. A close reading of this error would suggest that something is going on as part of the transaction invoking the context of a user that is no longer active within the environment. The joys of inheriting a system from another project. 😉 We checked a few things in the first instance on any plug-ins registered on the Case table:
- The value of the Run in User’s Context setting on all appropriate plug-in steps to ensure that the original developer hadn’t put it to the disabled user.
- Verified that the code wasn’t impersonating the user in question.
Finally, as a punt, we noticed that the table had several real-time workflows executing against it. We decided to deactivate all of these workflows and then re-activate them, working on the assumption that something had been cached relating to the disabled user. This was despite the fact that another active service account owned the workflows. Doing this resolved the issue, and much to our surprise, the error no longer appeared.
I must say, this is the strangest Dataverse platform error I have faced for a while, and I’m still not 100% sure why the steps we followed resolved the issue. Answers on a postcard below if you can share any insights, but I hope this proves helpful if you encounter the same problem yourself in the future.