Could not load assembly “Microsoft.BizTalk.Interop.SSOClient, Ver=5.0.1.0” after BTS2013 upgrade

After successfully upgrading an existing BTS2010 and SSO installation to BTS2013 we found a custom pipeline component failing with the following error in the event log after some initial testing.

image

After reviewing the component source code, a reference to the Microsoft.BizTalk.Interop.SSOClient v5.0.1.0 assembly was found. Instead of recompiling the the solution using VS2012 and having to redeploying,  I decided to redirect the assembly version in the BizTalk config files BTSNTSvc.exe.config and BTSNTSvc64.exe.config.

Below is the assembly binding information that was placed between the existing <runtime> tags.

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v4.0.30319">
   <dependentAssembly>
      <assemblyIdentity name="Microsoft.BizTalk.Interop.SSOClient"
                        publicKeyToken="31bf3856ad364e35"
                        culture="neutral" />
      <bindingRedirect oldVersion="5.0.1.0"
                       newVersion="7.0.2300.0"/>
   </dependentAssembly>
</assemblyBinding>

See this link http://msdn.microsoft.com/en-us/library/7wd6ex19.aspx for more information on redirecting assembly versions.

 

Enjoy.

In-place upgrading of BTS2010 to BTS2013 missing DB permissions

After completing an in-place upgrade of BTS2010 to BTS2013 successfully, I found the ESB Portal no longer worked and displayed the following error:

image

Also some adaptors where failing with the following error:

The type initializer for ‘Microsoft.BizTalk.Adaptotrs.ODBC.Runtime.ODBCTransmitAdaptor.ODBCAdapterProperties’ threw an exeception.

The issue is when upgrading to BTS2013 it creates 2 new tables, bts_dynamic_sendport_handlers and bts_dynamicport_subids in the BizTalkMgmtDb. However these new tables do not have any permissions applied to allow the BTS roles to access them.

After the upgrade you will need to execute the following T-SQL script to apply the correct object permissions.

use BizTalkMgmtDb
go
GRANT DELETE ON [bts_dynamic_sendport_handlers] TO [BTS_ADMIN_USERS] AS [dbo]
GO
GRANT INSERT ON [bts_dynamic_sendport_handlers] TO [BTS_ADMIN_USERS] AS [dbo]
GO
GRANT SELECT ON [bts_dynamic_sendport_handlers] TO [BTS_ADMIN_USERS] AS [dbo]
GO
GRANT UPDATE ON [bts_dynamic_sendport_handlers] TO [BTS_ADMIN_USERS] AS [dbo]
GO
GRANT SELECT ON [bts_dynamic_sendport_handlers] TO [BTS_HOST_USERS] AS [dbo]
GO
GRANT SELECT ON [bts_dynamic_sendport_handlers] TO [BTS_OPERATORS] AS [dbo]
GO
GRANT DELETE ON [bts_dynamicport_subids] TO [BTS_ADMIN_USERS] AS [dbo]
GO
GRANT INSERT ON [bts_dynamicport_subids] TO [BTS_ADMIN_USERS] AS [dbo]
GO
GRANT SELECT ON [bts_dynamicport_subids] TO [BTS_ADMIN_USERS] AS [dbo]
GO
GRANT UPDATE ON [bts_dynamicport_subids] TO [BTS_ADMIN_USERS] AS [dbo]
GO
GRANT SELECT ON [bts_dynamicport_subids] TO [BTS_HOST_USERS] AS [dbo]
GO
GRANT SELECT ON [bts_dynamicport_subids] TO [BTS_OPERATORS] AS [dbo]
GO

Enjoy.

Since then Microsoft has released a patch to fix this issue: http://support.microsoft.com/kb/2832136