6

I'm getting a really strange error every time I try to edit a Schema. You open the schema and can edit the General tab. However, when you click on the Design or Metadata Design tabs and no fields show up. After a few seconds the following message pops up on the Info Bar:

enter image description here

Here is the full stacktrace from the Event Viewer log:

Communication with the underlying transaction manager has failed. The MSDTC transaction manager was unable to push the transaction to the destination transaction manager due to communication problems. Possible causes are: a firewall is present and it doesn't have an exception for the MSDTC process, the two machines cannot find each other by their NetBIOS names, or the support for network transactions is not enabled for one of the two transaction managers. (Exception from HRESULT: 0x8004D02A)

Component: Tridion.ContentManager.CoreService Errorcode: 0 User: NT AUTHORITY\NETWORK SERVICE StackTrace Information Details: at System.Transactions.Oletx.ITransactionShim.Export(UInt32 whereaboutsSize, Byte[] whereabouts, Int32& cookieIndex, UInt32& cookieSize, CoTaskMemHandle& cookieBuffer) at System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts) at System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts) at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx) at System.Data.ProviderBase.DbConnectionPool.PrepareConnection(DbConnection owningObject, DbConnectionInternal obj, Transaction transaction) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource1 retry, DbConnectionOptions userOptions) at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) at System.Data.SqlClient.SqlConnection.Open() at Tridion.ContentManager.Data.AdoNet.Sql.SqlDatabaseUtilities.GetConnection() at Tridion.ContentManager.Data.AdoNet.Sql.SqlDatabaseUtilities.GetStoredProcedureCommand(StoredProcedureInvocation storedProcedureInvocation) at Tridion.ContentManager.Data.AdoNet.Sql.SqlDatabaseUtilities.Execute(StoredProcedureInvocation storedProcedureInvocation) at Tridion.ContentManager.Data.AdoNet.IdentifiableObjectDataMapper.Read(TcmUri id, StoredProcedureInvocation spInvocation) at Tridion.ContentManager.Data.AdoNet.IdentifiableObjectDataMapper.Tridion.ContentManager.Data.IIdentifiableObjectDataMapper.Read(TcmUri id) at Tridion.ContentManager.Session.GetDataObject(TcmUri id)
at Tridion.ContentManager.IdentifiableObject.Load(LoadFlags flags, Boolean forceReload) at Tridion.ContentManager.ContentManagement.VersionedItem.Load(LoadFlags flags, Boolean forceReload) at Tridion.ContentManager.IdentifiableObject.Load(LoadFlags flags) at Tridion.ContentManager.CoreService.CoreServiceBase.GetSubject(String id, ReadOptions readOptions) at Tridion.ContentManager.CoreService.CoreServiceBase.Save(IdentifiableObjectData deltaData, ReadOptions readBackOptions) at SyncInvokeSave(Object , Object[] , Object[] ) at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at Tridion.ContentManager.CoreService.CoreServiceInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs) at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

Our CM is hosted on Amazon EC2 and is set to only be accessible via the client's VPN.

Things we've tried:

  1. Verified that this happens for all users - yep, it's a show stopper for all, not just me.
  2. Verified that this happens in various browsers - yep, same problem in IE11 and Chrome
  3. Verified that we can create and edit other Tridion items just fine (e.g. Components, Pages, Categories, Keywords, Folders, SGs).
  4. Got the network guys to check if it's a firewall issue - They say they've checked the firewall settings and everything is open.
  5. Read the following article: http://support.microsoft.com/kb/250367 and http://blog.eldert.net/wcf-sql-adapter-using-msdtc-cross-domain/, but without a network guy by my side I can't verify any network settings.

The articles suggest updating various firewall settings, however, would it make sense that Tridion functionality other than editing Schemas would also be broken? We can edit and do all other functional stuff just fine. So why does this only happen when editing Schemas? Has anyone else encountered this error and can pinpoint the cause of the issue (other than a high-level "it's somewhere in your network/firewall)?

6
  • Hi Nick, Can you copy and paste items. This is often another symptom pointing to an MSDTC miss-configuration? Could be a different issue, but a similar one has stumped me before, hence this brain dump blog post: mrgn.co/2013/11/installing-sdl-tridion-beating-msdtc Commented Jul 8, 2014 at 23:26
  • Thanks Chris. I just checked and yes, I can copy and paste without problems. Thanks for the link to the blog - reading now... Commented Jul 8, 2014 at 23:37
  • 1
    If you can copy and paste, perhaps a different problem. You can also use DTCPing to test the connection between server and db server microsoft.com/en-us/download/details.aspx?id=2868 Commented Jul 9, 2014 at 0:18
  • Can also use "netstat -n" from command line to see what ports it is trying to communicate via, and if a connection is being established. Commented Jul 9, 2014 at 1:35
  • strange suggestion for a strange problem: Can you un-install and re-install your MSDTC followed by a system reboot and then doing the DTC setting again. Commented Jul 9, 2014 at 4:23

2 Answers 2

5

DTC is a hard thing to troubleshoot, so while all the suggestions are great they did not turn out to be the issue here at least. We checked the firewall and even turn the firewall off but that did not change anything. We checked the security setup and limited the ports but still nothing.

If you are having DTC issue DTCPing is a great place to start. We fired up DTC ping on our database server and app server. The app server got a success but the DB server failed with name resolution. This threw us of for a bit because from the DB server to the App server we could ping it by server name and IP. DTC however works off NetBIOS name. Normally these are the same for us, however our server name was 16 characters long, NetBIOS allows for a max of 15 so the NetBIOS name got truncated. Once we got app server NetBIOS name resolving from the DB server all was good. Hope it helps someone else.

1
  • Excellet Catch and Thanks for sharing as it will definitely help others to learn :) Commented Jul 11, 2014 at 8:28
9

I faced the similer issue while working on installation part of tridion 2013 sp1, I got same error while editing schema and creating the publication in cms, and after many hard seraching and lots of R & D, finally got the resolution.

Check the microsoft blog related to MSDTC and apply on both of your servers (CM server and DB server)

Blog url is : http://technet.microsoft.com/en-us/library/cc755250(v=ws.10).aspx

1
  • Also add the database port into the firewall inbound section in cms server,
    – Nash
    Commented Jul 9, 2014 at 9:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.