MQRC_UOW_ENLISTMENT_ERROR is mostly due to configuration issue, it can be reported by the application while enlisting the transaction for following reasons:-
If XA transaction processing is not enabled
If the DTC log on account does not have sufficient permission to make MQ calls
If the DTC log on account password is incorrect
Ensure XA transaction is enabled
Steps to enable XA transaction processing on Windows 7 :-
Start → Control Panel → Administrative Tools → Component Services → My Computers → Distributed Transaction Coordinator → Local DTC → Right-click on Local DTC and select "Properties" → On Security tab, click to select "Enable XA Transactions"
Note: You can check application event viewer logs for an informational event (Event ID 4202), this indicates that the MSDTC is starting up and gives a summary of the enabled options, looking at the description you will see a the value of 'Enable XA Transactions' if it is set to '0' you will need to enable XA Transactions for MQ to work.
Ensure DTC Logon account is configured with a user that has permissions to make MQ calls
Steps to configure DTC Logon account on Windows 7 :-
Start → Control Panel → Administrative Tools → Component Services → My Computers → Distributed Transaction Coordinator → Local DTC → Right-click on Local DTC and select "Properties" → On Security
tab under DTC Logon Account, type 'MUSR_MQADMIN' or any user from mqm group and valid password in the Account box.
Ensure XADLL registry key points to a valid XA resource manager dll
In order for a MSDTC transaction to use MQ, it must be able to load amqmtsxatm(c).dll, so ensure XADLL key (HKLM\SOFTWARE\(Wow6432Node\)Microsoft\MSDTC\XADLL) points to the right value and location.
For MQ Client installation, the Value added is of type REG_SZ and has a name of “WebSphere MQ Client (<Installation_Name>)” and a value data of the installed location of the dll (<MQ_INSTALL_PATH>\bin(64)\AMQMTSXATMC.DLL).
For MQ Server installation, the value added is of type REG_SZ and has a name of “WebSphere MQ QMgr (<QM_NAME>)” for each of the queue manager and a value data of the installed location of the dll (<MQ_INSTALL_PATH>\bin(64)\amqmtsxatm .DLL).
Apart from these, it also has 2 more values added of type REG_SZ with names amqmtsxatmc.dll and amqmtsxatm.dll and a value data of the installed location of the dll for each.
Another symptom that you may see is, AMQ8561 error and 2354 (MQRC_UOW_ENLISTMENT_ERROR) errors getting reported when MSDTC is configured to run under "network services@NT AUTHORITY"
From AMQERR01.LOG :-
15/04/2015 10:50:22 - Process(3028.991) User(ABCD) Program(amqzlaa0.exe)
AMQ8561: Domain controller unavailable.
WebSphere MQ was unable to contact the domain controller to obtain information
for user 'network service@NT AUTHORITY'.
Ensure that a domain controller for the domain on which user 'network
service@NT AUTHORITY' is defined is available. Alternatively, if you are using
a computer which is not currently connected to the network and have logged on
using a domain user ID, you may wish to log on using a local user ID instead.
----- amqzfubn.c : 4033 -------------------------------------------------------
MSDTC service runs under "network services@NT AUTHORITY" by default, however the Network Service account by default does not have permissions to access MQ objects, hence AMQ8561 and MQRC_UOW_ENLISTMENT_ERROR are reported. In order to resolve this error the Network Service account should be added to the local mqm group, so that the application is able to connect and run under this account.
This works, but does pose a security exposure, in that anyone could run a task under this userid and have full access to the queue manager. A work around for this problem is to install a security exit on the svrconn channel, which looks for the Network Service account and replaces it with another user id. Grant +connect authority to this userid using the setmqaut command. Run REFRESH SECURITY against your queue manager before attempting to connect after making the change
Use MUSR_MQADMIN or any users from mqm group as the DTC log on account (i.e Run MSDTC under an id that is authorized to make MQ calls)