Disabling ports and/or orchestrations on deployment.

Topics: General Questions
Nov 25, 2009 at 12:18 PM
Edited Nov 25, 2009 at 12:19 PM

I have several receive locations in a solution that I don't want to start automatically on deployment, in particular fileshare locations where a large number of files could be queuing up during a redeploy. Orchestrations and send ports should still be started.

In the documentation it says:

" In your MyProject.Deployment.btdfproj file, provide a definition for the property 'portsToExcludeFromStart' - a comma separated list of send port groups, send ports, and receive locations that should not be started. "

So, in my .btdfproj file I included <portsToExcludeFromStart>NameOfReceivePort, NameOfReceiveLocation</portsToExcludeFromStart> right after the property <UseIsolatedAppDomain>, but is has no effect.

Am I using it wrong?

Should the list be something other than explicit receive location names?

Should the property be defined somewhere else in the btdfproj file?

I had trouble using this feature with version 4 and was rather hoping it would work with version 5.

Has anyone been successful in using this property?

Coordinator
Dec 2, 2009 at 5:50 AM

This feature has never been supported when using the Deployment Framework with BizTalk 2006 or newer.  Prior to BizTalk 2006 there were no BizTalk "applications," so the Framework separately controlled ports, orchestrations, etc.  Starting with BizTalk 2006, we start and stop applications, and BizTalk takes care of all the individual artifacts that reside within the application.  The documentation is still, unfortunately, out-of-date.  In order to provide this level of control, we would need to go away from applications back to separate control of all the individual artifacts.

I am not aware of a workaround off the top of my head.  Perhaps someone reading has another idea, otherwise I'm sorry that this isn't the answer you hoped for!

Tom

Dec 2, 2009 at 4:04 PM

If I am understanding the intent of the question, you should be able to edit the PortBindingsMaster.xml file and find the receive location(s) that you want disabled and set the Enable node to false.

i.e. /ReceivePortCollection/ReceivePort/ReceiveLocations/ReceiveLocation/Enable

<ReceivePortCollection>
  <ReceivePort>
    <ReceiveLocations>
      <ReceiveLocation>
        <Enable>false</Enable>

When you deploy, all of the locations set like that will be disabled.

Hope this helps.

Dec 3, 2009 at 10:21 AM

Thanks for the tip, it doesn't seem to work for me though. Does it need to be pre-processed in any way?

I found a work-around for my most critical applications, using <StartApplicationOnDeploy>false</StartApplicationOnDeploy> in the .btdfproj file. Even though I have to start all artefacts manually, at least no queue of waiting messages is started automatically causing messages to be suspended.

Coordinator
Apr 14, 2010 at 6:51 PM

V5.0.16 supports a new boolean property <EnableAllReceiveLocationsOnDeploy> that lets you prevent receive locations from enabling during deployment.  When this property is set to true, everything in the BizTalk app will be started/enabled except for receive locations.

Tom