maplemale
maplemale

Reputation: 2046

Change a functiod value without redeploying orchestration?

I have a simply value mapping functoid with a hard-coded string value in a Biztalk Transform which I need to change. I'd rather not re-deploy and regression test an entire orchestration just for this one value. Is there any way to change this on production without re-deploying the orchestration?

Upvotes: 0

Views: 139

Answers (3)

mahieddine
mahieddine

Reputation: 565

You have two solutions :
1 - Like said before by @Vikas isolate map and deploy just this artefact
2 - You can and should rather put your value is a SSO Storage and retrieve it at runtime in your orchestration https://seroter.wordpress.com/2007/09/21/biztalk-sso-configuration-data-storage-tool/ so no need to redeploy at all

Upvotes: 1

Dan Field
Dan Field

Reputation: 21661

  1. BizTalk best practices here dictate that different artifact types should be in different projects. This allows you to deploy just the Maps assembly, like so (after unenlisting any orchestration that uses maps directly):

    btstask AddResource /A:<ApplicationName> /T:System.BizTalk:BizTalkAssembly /Ov /So:Maps.dll /Op:GacOnAdd,GacOnImport,GacOnInstall
    
  2. When possible, put transforms on ports rather than in orchestrations. This helps alleviate the problem of having to unenlist orchestrations, and should perform better, but isn't always practical (sometimes an orchestration needs to decide which map, or use multiple maps, or ...). In a case like that, you can redeploy the maps assembly and restart your host instances without redeploying orchestrations.

  3. Avoid hard coded values in maps and orchestrations. Point them to a static variable in a static C# utility class. The C# assembly can be redeployed without redeploying a map or orchestration (just GAC the C# assembly and restart your host instance). The C# assembly can also be directed to point to some other storage, such as SSO, a database, a WCF/Web service, etc.

Upvotes: 2

Vikas Bhardwaj
Vikas Bhardwaj

Reputation: 1510

You should put your maps in a separate assembly and while installing you just need to GAC the map assembly. Depending on the deployment model you use, it can vary how you GAC BizTalk assembly. But if you just separate your assemblies in this way, you can isolate the change.

Upvotes: 1

Related Questions