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:
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, TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource
1 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(TaskCompletionSource
1 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:
- Verified that this happens for all users - yep, it's a show stopper for all, not just me.
- Verified that this happens in various browsers - yep, same problem in IE11 and Chrome
- Verified that we can create and edit other Tridion items just fine (e.g. Components, Pages, Categories, Keywords, Folders, SGs).
- Got the network guys to check if it's a firewall issue - They say they've checked the firewall settings and everything is open.
- 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)?