BizTalk 2010 Party Migration Tool Issues & Workarounds

Introduction

Back during the BizTalk 2010 beta I was testing out the Party Migration tool. This tool enables a smoother migration path from BizTalk 2006 R2 and BizTalk 2009 to BizTalk 2010. It is very useful once you get it to run successfully. Back during the beta I experienced quite a few issues and apparently these issues remain in the final version (RTM) of the tool. This post will describe these issues and give the full steps for a workaround. I am using very similar steps I used during the beta here.

Issues

The party migration tool can be found on the install media at <install media path>\core\BT Server\PartyMigrationTool\PartyMigrationTool.exe. The help description found at http://technet.microsoft.com/en-us/library/aa578307(BTS.70).aspx mentions this should be run from a CD.  It would be nice to know this when trying to run the tool but this is not mentioned in the error messages.

Back during the beta the files were distributed just as they are now with the BizTalk 2010 Developer edition – as an extractable exe that does not come as an ISO. This is problematic because the intention for running this tool is that it will be loaded on an ISO or removable media. So you will need to either burn an ISO or use a workaround.

This tool does require you to right-click Run as Administrator or to execute it from an elevated prompt. Otherwise you will get odd CAS errors:

Request for the permission of type ‘System.Security.Permissions.UIPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’ failed.. For more details please see the event log.

Initially, if you are using the BizTalk 2010 Developer edition or have not burned an ISO, and try to open the PartyMigrationTool.exe you will receive assembly not found errors like this:

System.IO.FileNotFoundException was unhandled
Message: Could not load file or assembly ‘Microsoft.BizTalk.Migration.PartnerManagement, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified.

If you run off the ISO or removable media everything works but there is another way for this to work.

Workaround

  1. If you are using BizTalk Developer edition or did not make an ISO, go to the PartyMigrationTool folder. Keep this open.
  2. You will need to add 3 assemblies to the GAC next. I found it easiest to copy these three assemblies to the PartyMigrationTool folder to keep everything together. All of these assemblies are found on the BizTalk 2010 install media. The assemblies you will need are:
    a. Microsoft.BizTalk.B2B.PartnerManagement.dll in \core\BT Server\MSI\Program Files\Developer Tools
    b. Microsoft.BizTalk.Migration.PartnerManagement.dll in \core\BT Server\MSI\Program Files
    c. Microosft.BizTalk.Migration.PartnerManagement.XmlSerializers.dll in \core\BT Server\MSI\Program Files
  3. [Note]: I had previously recommended modifying the PartyMigrationTool.exe.config to redirect the assemblies but upon retrying with the RTM bits I thought it was just easier to GAC everything necessary. 2.a. fails anyway because there is not an entry for it in the config.

I did want to mention one other note. When you finally get the tool running, you will need to connect to SQL Server using Windows authentication, SQL authentication is not supported.

Thanks,

6 thoughts on “BizTalk 2010 Party Migration Tool Issues & Workarounds

Add yours

  1. Hello there ,

    After following your post, I ‘m, getting this error : “The underlying provider failed on Open. For more details please see the event log.”

    In event log, what I get is :

    Error Source: BizTalk Server Party Migration Tool Details:System.Data.EntityException: The underlying provider failed on Open. —>
    System.Transactions.TransactionManagerCommunicationException: Communication with the underlying transaction manager has failed. —>
    System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.
    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)
    — End of inner exception stack trace —
    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.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction)
    at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction)
    at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
    at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
    at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
    at System.Data.SqlClient.SqlConnection.Open()
    at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection,
    String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)
    — End of inner exception stack trace —
    at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection,
    String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)
    at System.Data.EntityClient.EntityConnection.Open()
    at System.Data.Objects.ObjectContext.EnsureConnection()
    at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
    at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator()
    at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source)
    at System.Data.Objects.ELinq.ObjectQueryProvider.b__1[TResult](IEnumerable`1 sequence)
    at System.Data.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot)
    at System.Data.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[S](Expression expression)
    at System.Linq.Queryable.FirstOrDefault[TSource](IQueryable`1 source)
    at Microsoft.BizTalk.B2B.PartnerManagement.TpmContext.TryGetPartner(String partnerName, Partner& partner)
    at Microsoft.BizTalk.Migration.PartnerManagement.PartyDataMigrationCommitter.CleanupExistingPartners(PartyDataMigrationModel model)
    at Microsoft.BizTalk.Migration.PartnerManagement.PartyDataMigrationCommitter.Commit(String destinationConnectionString)
    at Microsoft.BizTalk.Migration.PartnerManagement.UI.UpgradeHelperController.SaveCurrentState(String migrationConnectionString)
    at Microsoft.BizTalk.Migration.PartnerManagement.UI.UpgradeHelperController.InitializeAndAutoMigrate(Nullable`1 doNotMergeIds, Nullable`1 createDefaultAS2Agreement,
    String sourceServer, String sourceDatabase, String migrationServer, String migrationDatabase, Boolean overwriteMigrationDb)
    at Microsoft.BizTalk.Migration.PartnerManagement.UI.UpgradeHelperController.initializeWorker_DoWork(Object sender, DoWorkEventArgs workerEventArgs)
    at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
    at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)

    Any clue?

    The tool does create the table “bts_sendport” with all the send ports.

    1. So I am guessing you are getting this error in the middle of the part where it is scanning the current parties. So I am glad you got past the part where the tool was loading. I can see in the stack trace it is trying to create an AS2 agreement.

      I would just try running the tool again – a transaction exception could be related to load on the database server or other causes. I am guessing you are running this against a production BizTalk server right?

      If you get the error in exactly the same place then this might be a bug to talk to MS Support about. Let me know how it goes on a second attempt.

      Thanks

  2. I tried again, closing the application first, and got the same error.

    I’m trying this in the development servers first (both 2006R2 and 2010 servers are development environment).

    1. I just looked at http://social.msdn.microsoft.com/forums/en-us/adodotnetentityframework/thread/6BEA5E87-14D6-4C32-8B63-E684D35EAB3D and they said that this can occur if SQL is exposed on a non default port (so other than 1433). Are you connecting to SQL on a non default port?

      The party migration tool does assume you are connecting over Windows authentication and I am not sure if it works with a named SQL instance or not – it should be most of the defaults.

      I would also make sure the msdtc stuff is all setup – do you know if the dtc stuff might have been harded / turned off on the BizTalk or SQL Server you are testing against?

      Also, I would contact MS product support – they may not charge you if it is an issue they need to make a hotfix for.

      Thanks,

      1. Port 1433
        Default instancename
        MSDTC configured
        Windows Authentication Mode

        in both servers are as noted.

        I’m installing some updates in both machines and then will try again, if fails have to go to MS Support.

        Thanks.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Blog at WordPress.com.

Up ↑

%d bloggers like this: