BT 2010 Party Settings

Topics: Bindings File, Settings Management and SSO, General Questions, Getting Started/Beginner
May 4, 2011 at 11:17 PM

If an application is already deployed, I am running into an error when the framework is attempting to undeploy the application.  The error stems from the fact that party settings are associated with that application.  The error message doesn't say that, but deleting the party settings solves the issue.  the error is below for your reference.  I am running the latest version on the download tab.  Any assistance with a supported way to take care of this issue would be fantastic.  

Thanks,

Nathan

 

  Information: Removing application "PHP.BizTalk5010" from BizTalk configuration database (server="VIEWWIN7DV108", database="BizTalkMgmtDb")...  Error: Error while removing application "PHP.BizTalk5010".  Error: Failed to delete resource(s).  Error: Change requests failed for some resources.  Error: Unable to process delete change request for BizTalk binding "". Import bindings (unbind) failed.  Error: Failed to update binding information.  Error: Column 'nvcName' does not belong to table bts_party_sendport.

Coordinator
May 5, 2011 at 5:47 AM

Hey Nathan,

That's just a goofy error... nvcName does not belong to table bts_party_sendport.  Makes me think this is something outside of the Deployment Framework's control.  You don't by chance have any BAM artifacts deployed with this solution?  Have you tried removing the app manually with BTSTask.exe (which is all the Framework is doing) and playing with the command-line options to see if you get the same error, or if you can get past it with a different combination of switches?

I'll be honest, I have not used the party features so I have no idea how or if they would interact with the Deployment Framework.  Still, the remove-app command in BTSTask is usually good at zapping absolutely everything related to an app, so I'm surprised that it would get blocked with such a weird error.

Thanks,
Tom

May 5, 2011 at 10:44 PM

Looks like I am running into the following from the Biztalk 2010 documentation:

http://msdn.microsoft.com/en-us/library/aa577446(v=bts.70).aspx

"You cannot delete an application if it contains a send port that is referenced by a party. You can delete the reference from the party, delete the send port, or move the send port to a different application. For instructions on performing these tasks, see How to View or Edit a PartyHow to Delete a Send Port, or How to Move an Artifact to a Different Application."

So would I just need to add a task to do this delete before it executes the remove command?  Hope Microsoft might clean up that error.  Appreaciate the reply and let me know if you have another idea.  And for the record, no BAM currently although we plan to establish a generic BAM definition at some point.

 

Thanks!

 

Nathan

 

May 6, 2011 at 9:37 PM

I have confirmed that adding a CustomDeployTask and executing a modified version of the sample DeleteParty(from the SDK) seems to work around the issue.  Any downstream ramifications to this workaround dealing with MSI building etc?

 

Thanks,

Nathan

 

Coordinator
May 13, 2011 at 9:23 PM

Hi Nathan,

Thanks for the update.  Those targets come in a pair: CustomDeployTarget and CustomUndeployTarget.  You could add the delete party step to the undeploy target instead.  It runs very early in the undeploy process.

Are you running the party delete as PowerShell?  You need to ensure that if you have any dependent DLLs, EXE's, etc. that they are packaged into the MSI.  You can do that with an AdditionalFiles ItemGroup.

Thanks,
Tom

May 19, 2011 at 1:00 AM
Edited May 19, 2011 at 1:01 AM

I was unable to get it to execute soon enough using the undeploy target.  This seems odd, but none the less it works.  The problem I am facing now is with the AdditionalFiles.  Its included the deleteparty.exe in the msi, but trying to execute from a path a level deeper then it places the file.  The file is located in:

C:\Program Files (x86)\PHP.BizTalk5010 for BizTalk\1.0

But the installer script is looking for it:

C:\Program Files (x86)\PHP.BizTalk5010 for BizTalk\1.0\Deployment

Here is the xml I added to the btdfproj:

  <AdditionalFiles Include="deleteparty.exe">    <LocationPath>..\$(ProjectName).Deployment</LocationPath>  </AdditionalFiles>

I am sure there is an easy solution but its escaping me at the moment.

Thanks,

Nathan

Coordinator
May 19, 2011 at 6:43 AM

You didn't include your Exec task... but I think all you need to change is to use a Command attribute in the Exec like "..\deleteparty.exe params params".  Every path in the .btdfproj will be resolved with the Deployment project folder as the starting point (working directory).  When executing on the server, deleteparty.exe will be at ..\deleteparty.exe.

If you happen to need that path to vary (in the Exec) between local and server deployments, you can use a Condition attribute on the Exec task.  Use Condition="'$(Configuration)' == 'Server'" for servers, and != operator for local deploys.

Thanks,
Tom

May 20, 2011 at 6:47 PM

Tom,

 

Thanks so much, I knew I was missing something.  Also using it in the deploy and undeploy tasks now makes sense to me once I had the MSI created.  Great work as always!

 

Thanks,

Nathan

Coordinator
May 23, 2011 at 4:47 AM

Thanks Nathan, you're very welcome!

Tom