Millions of records in the BAMAlertsApplication and how to get rid of them (NSVacuum to the rescue)

/
February 3, 2011
/
Comments Off on Millions of records in the BAMAlertsApplication and how to get rid of them (NSVacuum to the rescue)

As a BizTalk consultant I always implement BAM to do basic auditing. This is besides the BAM a business analist would want to see. The basic functionality of this audit trial is:

  • When was the message received
  • Where did it came from
  • Where did it go
  • What happend to the message
  • Any important business decision made in an orchestration

I write this audit data into a BAM view, and it has proven to be valuable information. From time to time you will get questions regarding messages and it’s always nice to have this information. Besides that you can set nice alerts ( if you use them) on specific events and have people mailed in case things go wrong. So this is nice and i wouldn’t want to do an implementation without it.

But there is a downside to it. All these audit records also write some data in a not very well documented database BAMAlertsApplication. And over time there could be millions of rows in them. Below is a sample of the BAMAlertsApplication

The records are just piling up and are consuming more and more resources from your SQL server. I had noticed this behaviour before and posted a question about it on the MDSN forums see “How to clean up the BAMAlertsApplication database.” And the answer of a MS Employee was to open a case by Microsoft. Yesterday the BizTalk Administrator of the customer that I work for, asked me if there was anything I could do about the size of this database that just kept on growing and growing. The administrator even pointing me to my own discussion on MSDN and stated that he wanted to indeed start a case with MS.

This triggered me to have a look at the database and by looking at the stored procedures ( I was looking for remove/archive/delete stored procedures) I noticed the NSVacuum stored procedure. This triggered me to see what it did. So I turned to the almighty google to see what it knew  about NSVacuum. I got only 2 results !.The first post wasn’t really encouraging, since it increased the databases

.

 

But looking at the code of the stored procedure I was convinced that it did some cleaning. So I dropped the “BizTalk” keyword from the search to have another look…..

This was not too encouraging either, only three real results this time. But fortunately the first one pointed me to a Microsoft document with usefull information. It turned out that NSVaccum was exactly what we needed. And after some runs the databas has now shrunk to a more reasonable size. See the picture below.

 So, the takaway is….., do NOT forget to schedule NSVacuum if you are using BAM !….

I really hope this is usefull for other people in the future, if it is, please leave reaction on my blog, it will keep me motivated to share my BizTalk experiences with the community !

Getting rid of : WCF-Custom" raised an error message. Details "System.Data.SqlClient.SqlException: Timeout expired

/
December 22, 2010
/
Comments Off on Getting rid of : WCF-Custom" raised an error message. Details "System.Data.SqlClient.SqlException: Timeout expired

I had a nice setup in my BizTalk environment. I had 4 receive locations polling for data (in the same table) and it all boiled down to execute a stored procedure with different parameters. I used the WCF adapter with SQL bindings for that.
For some obscure reason, I would get timeouts in the eventlog. Below is a screenshot of the receive port setup I had. Only one is shown but I had four of them.

Some important things to notice:

  • PolledDataAvailablestatement, is not used cause Pollwhiledatatfound = false. But you still have to put stuff in there to make things work.
  • Execute a specific sproc, with the number of records you want to receive as a parameter.
  • UseAmbientTransaction, no, no,no, had too many problems in the past when using msdtc and receive locations (locks and stuff) so this is a NO.
  • ReceiveTimeout is set to 10 minutes. This is a bit long but i never touched that value, it’s the default.

To make things a little bit more clear, The stored procedure I used looks looked like this :

 CREATE PROCEDURE [dbo].[Get_TeVertalen_Berichten]
(
 @MaximumAantal INT = NULL
)
AS
BEGIN
 EXEC [dbo].[Get_Berichten_Internal]
  @MaximumAantalInternal = @MaximumAantal,
  @OudeBerichtStatus = ‘TeVertalen’,
  @NieuweBerichtStatus = ‘VertalenGestart’,
  @Richting  = ‘Ingaand’  
END

And here is the code of Get_Berichten_Internal:

CREATE PROCEDURE [dbo].[Get_Berichten_Internal]
(
 @MaximumAantalInternal INT = 15,
 @OudeBerichtStatus  VARCHAR(200),
 @NieuweBerichtStatus VARCHAR(200),
 @Richting    VARCHAR(20) 
)
AS
BEGIN
 BEGIN TRY
  — Declare variables
  DECLARE @AFFECTED_KEYS TABLE
  (
   BerichtID NUMERIC(18, 0)
  )
  DECLARE @AFFECTED_ROWS INT
   — Some sets needed
  SET NOCOUNT ON
  — Perform the update statement and capture all the keys
  UPDATE
   TOP (@MaximumAantalInternal) dbo.tb_Bericht
  SET  
   BerichtStatus = @NieuweBerichtStatus
  OUTPUT
   INSERTED.BerichtID
  INTO
   @AFFECTED_KEYS
  WHERE
   BerichtStatus = @OudeBerichtStatus
  AND
   ExternBerichtTypeID IS NOT NULL
  AND
   InternBerichtTypeID IS NOT NULL
  AND
   Richting = @Richting
  — DO STUFF WITH THE AFFECTED KEYS
  <– SNIP–>
 END TRY
END

Now everything looks good and in the query analyzer everything was working blazingly fast. But I started to see the following message in the eventlog every 10 minutes (hmm that’s the receive timeout).  And sometimes several (four to be exactly) of them within a very short period of time.

Event Type: Warning
Event Source: BizTalk Server 2006
Event Category: BizTalk Server 2006
Event ID: 5740
Date:  14-12-2010
Time:  10:47:07
User:  N/A
Computer: BA34T
Description:
The adapter “WCF-Custom” raised an error message. Details “System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.
   at Microsoft.ServiceModel.Channels.Common.Design.AdapterAsyncResult.End()
   at Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.EndTryReceive(IAsyncResult result, Message& message)
   at System.ServiceModel.Dispatcher.InputChannelBinder.EndTryReceive(IAsyncResult result, RequestContext& requestContext)
   at System.ServiceModel.Dispatcher.ErrorHandlingReceiver.EndTryReceive(IAsyncResult result, RequestContext& requestContext)”.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.

And once this message started to appear, stuff went downhill from there on. I could see in the profiler that stored procedures were taking ages, and even simple updates of a single record would take thirty seconds or so. Lock-Time-outs and deadlocks were occuring on a very regular basis. Even though the receive locations werent receiving any data. So nothing was received and I still got may daily portion of errors/warnings/suspended stuff in BizTalk because of this.
So basically it looked like I was having some kind of locking problem even if no work was done by the second stored procedure. But the second procedure did an update (even when there was nothing to update) and maybe that triggered the nasty behaviour.

I started a discusiion on MSDN to see if anybody could help : <<See here>>

 But eventually i cghanged something to make this behaviour go away. The idea was only to perform the update when there was stuff to update. So i changed the first procedure to :

CREATE PROCEDURE [dbo].[Get_TeVertalen_Berichten]
(
   @MaximumAantal INT = NULL
)
AS
BEGIN
 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
 DECLARE @Aantal int
 SELECT
  @Aantal=count(*)
 FROM
  dbo.tb_Bericht WITH (NOLOCK)
 WHERE
  BerichtStatus = ‘TeVertalen’
 AND
  ExternBerichtTypeID IS NOT NULL
 AND
  InternBerichtTypeID IS NOT NULL
 AND
  Richting = ‘Ingaand’
 IF @Aantal > 0
 BEGIN
  EXEC [dbo].[Get_Berichten_Internal]
    @MaximumAantalInternal = @MaximumAantal,
    @OudeBerichtStatus  = ‘TeVertalen’,
    @NieuweBerichtStatus = ‘VertalenGestart’,
    @Richting    = ‘Ingaand’  
 END 
END

 And by first checking if there was any work to do and only then do an update, I got rid of the deadlocks and the errors in the eventlog.
I really don’t know why this solved it, but my guess is there is some bug in the WCF adapters, that go wrong if you start a transaction but return no data.

Everything is running smooth now and I hope this post will help somebody experiencing the same problems.

Download all files referenced in an xsd locally (+ Possible fix for BizTalk CS0013 compilation error)

/
September 30, 2010
/
Comments Off on Download all files referenced in an xsd locally (+ Possible fix for BizTalk CS0013 compilation error)

Well if you ever end up like me with a XSD that has about a zillion includes (schemaLocation), maybe this tool is something for you.

It is a pretty simple tool. You give it an XSD, and it will download all files that are referenced to your local system. It will parse the file names a bit and set them all to the local download folder.
This way you can simply include the folders and downloaded schema’s in your BizTalk Project.

For example take the schema’s from UNECE like http://www.unece.org/uncefact/data/standard/Acknowledgement_4p0.xsd

It can be pretty frustrating to download all the schema’s manually and link them together again with a correct import. IncludeSchemaDownloader.exe comes to the rescue.. Below is a screenshot of this tool.

The workings are quite simple. Follow these steps to get the all the schema’s on yoyr local machine.

  1. Download the Toplevel XSD to a work folder.
  2. Point the Toplevel XSD to that working folder.
  3. Point the StoreFolder to the desired location where the xsd’s will be stored (typically schema’s folder of a BizTalk Project
  4. Hit the process button !
  5. Done
  6. Now include this folder in your BizTalk project
  7. Hit the Validate button… (should work)

Now these XSD schemas that you get from UNECE are full with usefull comments and annotations. And if your schema’s get too large you cannot compile them anymore. (there seems to be a limit in the size of the dll the BizTalk compile can handle). You would get an error message like this:

error CS0013: Unexpected error writing metadata to file ‘<somedrive><somefolders><yourproject>.dll’

 

To solve this you would have to break up your huge XSD project into smaller projects. This would solve the problem but in my case VisualStudio was soo busy reflectoring all the DLL’s it hardly had time for me. (You know opening a map would take ages….).

When I looked into the XSD’s they were all beautifully documented with lots and lots of annotations and comments. But wait a minute….. I only had to send these documents. So i only have to validate the documents. So I don’t need all those comments and annotations. That’s why the tool has the option to strip comments and annotations.

When I tried to compile the XSD’s with comments and annotations (size on disk roughly 12 megabytes) I got the dreaded  CS0013 compilation error.

I ran the tool again (size on dis now about 1.5 megabytes) I ended up with a DLL only 4 MB in size. And if reference this DLL in a map or whatever it’s way faster than the other solution(you know several projects / dll’s)

You can download the tool >>HERE <<

If I import the schema http://www.unece.org/uncefact/data/standard/Acknowledgement_4p0.xsd

The output of the tool will be  :

Starting with D:TempDemoAcknowledgement_4p0.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/data/standard/UnqualifiedDataType_7p0.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/IANA_CharacterSetCode_20070514.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/IANA_MIMEMediaType_20090304.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/identifierlist/standard/ISO_ISOTwoletterCountryCode_SecondEdition2006VI-4.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/ISO_ISO3AlphaCurrencyCode_20090305.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/UNECE_CharacterSetEncodingCode_40106.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/UNECE_MeasurementUnitCommonCode_5.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/UNECE_AgencyIdentificationCode_D08B.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/data/standard/QualifiedDataType_6p0.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/data/standard/UnqualifiedDataType_7p0.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/IANA_CharacterSetCode_20070514.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/IANA_MIMEMediaType_20090304.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/identifierlist/standard/ISO_ISOTwoletterCountryCode_SecondEdition2006VI-4.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/ISO_ISO3AlphaCurrencyCode_20090305.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/UNECE_CharacterSetEncodingCode_40106.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/UNECE_MeasurementUnitCommonCode_5.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/UNECE_AgencyIdentificationCode_D08B.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/EDIFICASEU_AccountingAccountType_D08B.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/EDIFICASEU_AccountingAmountType_D08B.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/EDIFICASEU_AccountingEntryCategory_D08B.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/EDIFICASEU_AccountingEntryLineCategory_D08B.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/EDIFICASEU_AccountingEntryLineSource_D08B.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/EDIFICASEU_AccountingEntryProcessing_D08B.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/EDIFICASEU_AccountingVoucherMedium_D08B.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/EDIFICASEU_AlternateCurrencyAmount_D08B.xsd
getting all imports
Loading file :http://www.unece.org/uncefact/codelist/standard/EDIFICASEU_TaxExemptionReason_D08B.xsd
This list goes on and on and on

 Below are some results:

 

 

 

 

My BizTalk infrastructure design baseline

/
September 28, 2010
/
Comments Off on My BizTalk infrastructure design baseline

Today I found a great post about a nice BizTalk infrastructure baseline. It’s always hard to specify what you need and why you need it.
In an excellent blogposting Johan Hedberg explains what he needs and (more important why).

Follow >>this link<< to have a read of his excellent post by Johan.

 

 

 

Strange COM exception in BizTalk

/
September 27, 2010
/
Comments Off on Strange COM exception in BizTalk

A while ago I had serious problems with BizTalk. For some obscure reason the BizTalk engine would throw some XLANG errors and stop processing all messages. A restart of the hosts would fix the problem for a while but after some time the same problem would occur and BizTalk would effectively stop processing. (orchestrations would be marked as  active but nothing happens)

The funny thing is, these orchestrations were deployed on the BizTalk Server a long time ago and they never gave any problem. All of a sudden these problems started to appear. So I think the blame is probably in some kb^*&^(& hotfix somewhere.

I had a case with MS-Support (and for sure they had never seen this error) and even google will not tell you that much about it.
However, until now I have had two people contact me with exactly the same problem.
So I know I was not alone ! Since googling on this gives me very poor results I will put some details about what happened in this post.

Unable to cast COM object of type ‘System.__ComObject’   followed by No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

When this happens you will find a lot of references to the guid 6C90EC05-4918-11D3-A242-00C04F60A533 (see bottom)

I have mentioned both MSDN threads that have this problem. The things we have in common are:

  • Usage of the classic SQL adapter 
  • Typically, this problem occurs when the orchestration engine reaches a Call Orchestration shape or a Start Orchestration shape.

To isolate this problem we added a specific SQL Host that does all the work for the SQL Adapter. We hoped the next time we saw the error, we could see if it was caused by orchestrations or really by the SQL adapter. Cause then onlu the SQL Host would have a problem. We had everything set up to debug the BizTalk environment with the tools provided by MS and we were waiting for the event to happen. But unfortunately after we added a dedicated SQL host the problem never re-occurred. So the supportcase is closed now (without a definitive answer).

If you have had a similar experience please give a response to this post.

Using XSLT Templates in a map (reminder@self)

/
August 16, 2010
/
Comments Off on Using XSLT Templates in a map (reminder@self)

We all know that using XSLT inside a map can be very usefull to do stuff that’s very hard to do with the mapper itself.
Sometimes using XSLT it is the only way things can be done. I find myself struggeling each time to figure out how specific tasks work with XSLT.

That’s why I write this post. So I wont have to figure it all out again the next time i need this functionality….
Below is some code used in an ‘Inline XSLT Call Template’ to calculate the number of segments in a message (UNT) and the message Message Reference number.

The input CurrentIndex is retrieved from an Iteration functoid that returns the current index of the transaction. This index is used to retrieve the correct values for the UNT segment of that transaction
( I am using the batched EDI schema’s).

<xsl:template name=UNTTemplate>

  <xsl:param name=currentIndex />

  <xsl:variable name=sum01 select=count(/s2:Request/INTERCHANGE/UNB) />

  <xsl:variable name=sum02 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/UNH) />

  <xsl:variable name=sum03 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/BGM) />

  <xsl:variable name=sum04 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/DTM) />

  <xsl:variable name=sum05 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/NAD) />

  <xsl:variable name=sum06 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/LIN) />

  <xsl:variable name=sum07 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/LIN/DTM) />

  <xsl:variable name=sum08 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/LIN/NAD) />

  <xsl:variable name=sum09 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/LIN/RFF) />

  <xsl:variable name=sum10 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/LIN/QTY) />

  <xsl:variable name=sum11 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/LIN/PRI) />

  <xsl:variable name=sum12 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/LIN/IMD) />

  <xsl:variable name=sum13 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/LIN/IMD/PRICE_INFORMATION) />

  <xsl:variable name=sum14 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/LIN/PAC) />

  <xsl:variable name=sum15 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/LIN/PAC/PRI) />

  <xsl:variable name=sum16 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/LIN/EQD) />

  <xsl:variable name=sum17 select=count(/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/LIN/EQD/EQN) />

  <xsl:variable name=unt18  select=/s2:Request/INTERCHANGE/TRANSACTION[position()=$currentIndex]/UNH/MESSAGE_REFERENCE_NUMBER />

  <xsl:variable name=totalCount select=$sum01 + $sum02 + $sum03 + $sum04 + $sum05+ $sum06 + $sum07 + $sum08 + $sum09 + $sum10 + $sum11 + $sum12 + $sum13 + $sum14 + $sum15+ $sum16 + $sum17 />

  <xsl:element name=UNT>

    <xsl:element name=UNT1>

      <xsl:value-of select=$totalCount />

    </xsl:element>

    <xsl:element name=UNT2>

      <xsl:value-of  select=$unt18 />

    </xsl:element>

  </xsl:element>

</xsl:template>

 

Again a BizTalk Hotrod issue you should not miss

/
July 29, 2010
/
Comments Off on Again a BizTalk Hotrod issue you should not miss

Last week I stumbled upon the Tenth issue op BizTalk HotRod. I have looked into it a couple of times cause there are so much goodies in there.
The items covered in this issue are: 

  • Creating Business Documents 
  • Automating deployments of BizTalk change requests
  • Request and Response Message Pattern
  • Instrumentation Best Practices for High Performance BizTalk Solutions
  • Financial Messaging Service Bus
  • How To Boost Message Transformations Using the XslCompiledTransform class

 Go and get this issue, you can download it >>HERE<<

Interessante Blog Postings

/
June 30, 2010
/
Comments Off on Interessante Blog Postings

Gedurende een bepaalde periode kom je op het internet interessante zaken tegen of zijn er interesante blogpostings gedaan. Soms google je wat en kom je een oude maar zeer interessante blogposting tegen. In dit artikel wil ik een aantal van deze blogpostings/blogposters/artikelen aanstippen.

 

Maxime Labelle

 

Heeft een interessant blog waar hij af en toe diep ingaat op de werking van BizTalk. Er zitten veel code voorbeelden bij. Enkele noemenswaardige zaken zijn onder andere:

A Base Class for Building Custom Pipeline Components

Een handige base class welke het leven van een BizTalk ontwikkelaar behoorlijk kan versimpelen. In plaats van iedere keer weer alles van de grond af aan op te bouwen zorgt deze base class standaard voor een aantal zaken. Je hoeft eigenlijk alleen nog maar de Execute van de pipeline te programmeren. Erg handig.

Streaming Data in and out of an SQLServer 2005 Database

Interessant artikel over het opslaan van BizTalk Berichten in een database. Absoluut de moeite van het lezen waard.

 

Als je nog wat verder snuffelt op zijn blog zul je zien dat er echt interessante en nuttige zaken tussen staan.

 

Validatie functie BizTalk

 

Gebruikers van de “BizTalk Best Practice” zullen wel weten dat ik een groot voorstander ben van het valideren van xml nadat er gemapped is. Een map biedt immers geen enkele garantie met betrekking tot het valide zijn van het resultaat. Voorheen gebruikte ik daarvoor altijd de ‘Cool XSD Validation Function for Orchestration van de ‘Arch Hacker’ . Deze validatie functie is inmiddels stokoud en compileert niet zonder warnings meer in .Net 2.0 en hoger. Met een aantal ‘Pragma Directives’ kon het nog net compileren zonder warnings maar dat de code ondertussen sterk verouderd is blijft een feit. Onlangs kwam ik een nieuwe versie tegen die wel voldoet aan 2.0. Daarnaast biedt deze wat meer functionaliteit.

 

BizTalk Service Pack 1, Fix Pack1, Fix Pack 2 !

 

Begin dit jaar is voor BizTalk Service Pack 1 uitgerold en zodra deze geïnstalleerd was op de ontwikkel server van de klant waar ik op dit moment zit werkte zaken niet meer zoals ze zouden moeten werken. Omdat dit bij Microsoft Support liep was ik op de hoogte van een BizTalk 2006 R2 SP1 Cumulative Update 1. Hierin waren een aantal zaken opgelost, maar het belangrijkste issue stond nog steeds open. Zeer onlangs kreeg ik te horen dar er nu ook een BizTalk 2006 R2 SP1 Cumulative Update 2 beschikbaar is. Blijkbaar was Service Pack 1 niet de meest geslaagde update uit de BizTalk geschiedenis.

 

 

How to Add a Virtual Directory to an BizTalk Application

/
June 23, 2010
/
Comments Off on How to Add a Virtual Directory to an BizTalk Application

I had a BizTalk Webservice that was generated by the WebService Wizard from BizTalk.
When I exported the MSI the WebDirectory came along.

I thought this webdirectory was added during the export. But this is not the case. The WebService Wizard adds the files as a resource to your BizTalk Application. 
If you update a minor thing in the XSD (like MinOccurs=0 instead of MinOccurs=1 (So you’re beeing lazy and chanche the xsd within the WebDirectory).)

This change will never be updated in the Resources of the BizTalk Application. So how do you do this ?

BTSTASK to the rescue !.

See >>here<< for a detailed explanation of how to update the WebDirectory resources of a BizTalk Application.

 

 

Sysprep a BizTalk Server VHD (BizTalk Server Sample)

/
June 23, 2010
/
Comments Off on Sysprep a BizTalk Server VHD (BizTalk Server Sample)

Today I found an interesting blog post about sysprepping a BizTalk Server.

Turns out there is a nice Microsoft article about this >>here<<

 

  • Recent Posts
  • Recent Comments
  • Archives
  • Categories
  • Meta