5

My understanding is that with SDL Web 8, the need for MSDTC was removed (assuming you do not have any of the following http://docs.sdl.com/LiveContent/content/en-US/SDL%20Web-v1/GUID-34B24945-6280-4533-AC9E-A4C81DB27726)

I have installed the Translation Manager module, via the CMS installer, and specified the TM database (separate database created via "Install Translation Manager database" script)

However, when I send items for translation, I get an error consistent with the requirement for MSDTC configuration

Translation Job id: 2 Translation Job title: Copy of Test Translation Component Source Publication URI: tcm:0-4-1 Source Publication title: 020 Content Master (-)(EN-US)

The partner transaction manager has disabled its support for remote/network transactions. (Exception from HRESULT: 0x8004D025)

at System.Transactions.Oletx.OletxTransactionManager.ProxyException(COMException comException) at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken) at System.Transactions.TransactionStatePSPEOperation.PSPEPromote(InternalTransaction tx) at System.Transactions.TransactionStateDelegatedBase.EnterState(InternalTransaction tx) at System.Transactions.EnlistableStates.Promote(InternalTransaction tx)
at System.Transactions.Transaction.Promote() at System.Transactions.TransactionInterop.ConvertToOletxTransaction(Transaction transaction) at System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts) at System.Data.SqlClient.SqlInternalConnection.GetTransactionCookie(Transaction transaction, Byte[] whereAbouts) at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx) at System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx)
at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction) 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, TaskCompletionSource 1 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.DatabaseUtilities.GetConnection()
at Tridion.ContentManager.Data.AdoNet.DatabaseUtilities.ExecuteNonQuery(StoredProcedureInvocation storedProcedureInvocation, FieldDictionary& dataFields) at Tridion.ContentManager.Data.AdoNet.DatabaseUtilities.ExecuteNonQuery(StoredProcedureInvocation storedProcedureInvocation) at Tridion.ContentManager.Data.AdoNet.IdentifiableObjectDataMapper.Tridion.ContentManager.Data.IIdentifiableObjectDataMapper.IsExistingObject(TcmUri id) at Tridion.ContentManager.Session.IsExistingObject(String uri) at Tridion.TranslationManager.DomainModel.CoreServiceProxy.CallWithErrorHandling[T](Func 1 callMethod, String traceFormatString, Object[] traceParameters)
at Tridion.TranslationManager.DomainModel.TcmItemTranslationInfo.ResolveTcmUriForAppdataStorage(TcmUri uri) at Tridion.TranslationManager.DomainModel.TcmItemTranslationInfo..ctor(TcmUri itemUri, IDictionary 2 preloadedItems, IDictionary 2 preloadedAppDataDocuments, UserContext userContext) at Tridion.TranslationManager.DomainModel.Service.SendForTranslationTask.<>c__DisplayClass3c.b__39(<>f__AnonymousType32 2 <>h__TransparentIdentifier26) at System.Linq.Enumerable.<>c__DisplayClass7_0`3.b__0(TSource x) at System.Linq.Enumerable.WhereSelectEnumerableIterator 2.MoveNext() at Tridion.TranslationManager.DomainModel.Service.SendForTranslationTask.<>c__DisplayClass3c.b__28(TransactionScope scope) at Tridion.TranslationManager.DomainModel.TmSession.<>c__DisplayClass66.b__65(TransactionScope scope) at Tridion.TranslationManager.DomainModel.TmSession.ExecuteInTransactionScope[T](TransactionScopeOption scopeOptions, TransactionOptions transactionOptions, Func 2 func)
at Tridion.TranslationManager.DomainModel.TmSession.ExecuteInTransactionScope(TransactionScopeOption scopeOptions, TransactionOptions transactionOptions, Action 1 action) at Tridion.TranslationManager.DomainModel.TmSession.ExecuteInTransactionScope(TransactionScopeOption scopeOptions, Action 1 action) at Tridion.TranslationManager.DomainModel.Service.SendForTranslationTask.FinalizeTmsJob(TranslationJob job, TranslationSystemJobRequest jobRequest, IEnumerable 1 itemRequests) at Tridion.TranslationManager.DomainModel.Service.SendForTranslationTask.ProcessClient(TranslationJob job, String clientId, List 1 resolvedItems) at Tridion.TranslationManager.DomainModel.Service.SendForTranslationTask.Process() at Tridion.TranslationManager.DomainModel.Service.ServiceTask.ThreadMethod()


The partner transaction manager has disabled its support for remote/network transactions. (Exception from HRESULT: 0x8004D025)

at System.Transactions.Oletx.IDtcProxyShimFactory.ReceiveTransaction(UInt32 propgationTokenSize, Byte[] propgationToken, IntPtr managedIdentifier, Guid& transactionIdentifier, OletxTransactionIsolationLevel& isolationLevel, ITransactionShim& transactionShim) at System.Transactions.TransactionInterop.GetOletxTransactionFromTransmitterPropigationToken(Byte[] propagationToken)

Is there an alternate configuration to avoid requiring MSDTC configuration with Translation Manager?

2 Answers 2

5

You need to install the cm and tm databases into a single database - as far as i know, all you need to do is specify the same database name (and user I assume) when running the database install scripts.

Make sure the database information is 100% identical. For example, avoid using "(local)" for CM and "localhost" for TM. Casing does matter here.

2
  • 1
    I've updated my installation to point to the main content manager database (and deleted the separate Translation Manager database). However I still get the same error. I've updated the log to reflect the detailed error message Jul 7, 2016 at 0:28
  • 1
    Usually this is mean that you have different connection strings in Tridion.ContentManager.config and TranslationManager.xml Connection strings for CM and TM should be 100% identical. Character by character Oct 25, 2017 at 11:37
4

In addition to Lars' answer about having to install both the Translation Manager database (tables) and the Content Manager database (tables) into one database, you also need to make sure that both the CMS and Translation Manager are accessing the database with the same database credentials (username and password).

This was implied by Lars' suggestion to "Make sure the database information is 100% identical". However, I thought I'd make this extra clear as we had a similar problem using RDS recently.

Hope this helps!

Your Answer

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

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