Skip to main content

BizTalk Deployment Framework fix for compatibility issues with BizTalk 2016

1     Objective

My objective was to modify BizTalk Deployment framework source, with the intend of getting it to work with BizTalk 2016, as it does not work out of the box with BizTalk 2016.

2     Source Location

BizTalk Deployment Framework source is located at CodePlex and downloaded from below link
It has BTDF 6.0 under dev folder and BTDF 5.0- 5.6 under release folder.
BTDF 5.6 release version is more suited, as it is a stable release, hence it is modified to suit our need. All the references going forth are from the 5.6 release folder.

3     Modifications

Below is the modification that were done in order to get BTDF 5.6 release version, working.
1.    Added copy of BizTalk 2016 SSOClient to \Tools\SSOSettingsFileImport\ExternalReferences\BTS2016\Microsoft.BizTalk.Interop.SSOClient.dll, we will use as reference later.
 2.    In solution, \Tools\SSOSettingsFileImport\SSOSettingsFileImport.sln clone projects SSOSettingsEditorBTS2013R2, SSOSettingsFileImportBTS2013R2 and  SSOSettingsFileReaderBTS2013R2 projects, rename then as BTS2016 as shown below,
a.    SSOSettingsEditorBTS2016
b.    SSOSettingsFileImportBTS2016
c.    SSOSettingsFileReaderBTS2016
For the above projects change target .net framework to 4.6, add reference to SSOClient.dll and in post build make appropriate changes
3.    In solution, \Installer\BizTalkDeploymentFrameworkInstaller.sln, change RuntimeComponents.wxi by adding reference to BizTalk 2016 and added step to GAC SSOFileReader dll, apart from being coped to installation folder, for reference your reference the file @ link,
4.    In wix file located at Developer\GenericBizTalkMSI.wxs, add reference to BizTalk 2016, for your reference check file @ link,
The resulting MSI after the fix is loaded @ link

4     Developer Scripts

As BTDF Visual Studio add-in is not compatible with Visual Studio 2015, use below command to execute the reqired task instead,
Note: There are two set of command but the variation is for configuration variation of the project

Quick Deploy
MSBuild.exe <btdfproj file path> /nologo  /p:Configuration=Debug /t:UpdateOrchestration
MSBuild.exe <btdfproj file path> /nologo  /p:Configuration=Release /t:UpdateOrchestration

Update SSO
MSBuild.exe <btdfproj file path> /nologo  /p:Configuration=Debug /t:DeploySSO
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Release /t:DeploySSO

Preprocess Bindings
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Debug /t:PreprocessBindings
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Release /t:PreprocessBindings

Bounce BizTalk
MSBuild.exe <btdfproj file path> /nologo /t:BounceBizTalk

Import Bindings
MSBuild.exe <btdfproj file path> /nologo /t:ImportBindings /p:Configuration=Debug
MSBuild.exe <btdfproj file path> /nologo /t:ImportBindings /p:Configuration=Release

Export Settings
MSBuild.exe <btdfproj file path> /nologo /t:ExportSettings /p:Configuration=Debug
MSBuild.exe <btdfproj file path> /nologo /t:ExportSettings /p:Configuration=Release


Undeploy Rules
MSBuild.exe <btdfproj file path> /nologo /t:UndeployVocabAndRules /p:Configuration=Debug;RemoveRulePoliciesFromAppOnUndeploy=true
MSBuild.exe <btdfproj file path> /nologo /t:UndeployVocabAndRules /p:Configuration=Release;RemoveRulePoliciesFromAppOnUndeploy=true

Deploy Rules
MSBuild.exe <btdfproj file path> /nologo /t:DeployVocabAndRules /p:Configuration=Debug;ExplicitlyDeployRulePoliciesOnDeploy=true
MSBuild.exe <btdfproj file path> /nologo /t:DeployVocabAndRules /p:Configuration=Release;ExplicitlyDeployRulePoliciesOnDeploy=true

Deploy
MSBuild.exe <btdfproj file path> /nologo /t:Deploy /p:Configuration=Debug
MSBuild.exe <btdfproj file path> /nologo /t:Deploy /p:Configuration=Release

Undeploy
MSBuild.exe <btdfproj file path> /nologo /t:Undeploy /p:Configuration=Debug
MSBuild.exe <btdfproj file path> /nologo /t:Undeploy /p:Configuration=Release

Build MSI
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Debug /t:Installer
MSBuild.exe <btdfproj file path> /nologo /p:Configuration=Release /t:Installer

Comments

Popular posts from this blog

Undoing the mistake of selecting Sticky Notes as notes keep

Sticky Notes seems straight forward means to keep notes that you need handy, like quick notes on command you use frequently. Unfortunately, once your notes reaches certain number, the program starts to lag in response i.e. your click or select will not register and you end getting frustrated. I been there and I resorted to copying and pasting notes from sticky notes to more awesome OneNote. I soon got tired of unresponsive sticky note and resorted to finding where the data is stored and how to retrieve it.

Following are my finding(or googling),
1. In Windows 10, Sticky notes stores data at %LocalAppData%/Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState and inside file with extension *.sqlite.
2. Now to open the file we can use windows tools under sqlite.org download page. I used sqlite3.exe
3. Type in following commands after getting to folder where sqlite3.exe exists,

sqlite3.exe - This is to get to sqlite prompt.excel - This is to specify that following command shoul…

Automating adding user to user groups

Every now and then, I would come across situation, where I have to add new member to project. As part of the process, I have to give the new guys user permission to the machine (mostly BizTalk Server machines). When you have multiple servers, the task gets monotonous. During once such, instance, I sought the enlightenment google caters and found below script to do the same, in matter of seconds. I am not sure which article guided me to the solution, so I am not referencing it.

Below is the script for adding users to group, generally for stand alone BizTalk machine,

$group = [ADSI]"WinNT://localhost/Users"
$group.psbase.Invoke("Add",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/BizTalk Application Users"
$group.psbase.Invoke("Add",([ADSI]"WinNT://<domain>/<username>").path)

$group = [ADSI]"WinNT://localhost/BizTalk Isolated Host Users"
$group.psbase.Invoke("Add&…