TechEd 2005 and DevCon presentations…

TechEd 2005 was a great time, and I really enjoyed the extended look at BizTalk 2006
– lots of great presentations.  Much more has been done in this release than
I had anticipated, and I look forward to digging into the CTP build.

Thanks to those who attended my talk on automating BizTalk application deployments
– the questions asked during the session were great!  It was fun to talk to the
folks who are using the Deployment
Framework stuff…The deck I presented is here. 
BizTalk 2006 is doing a lot to make deployment easier – no comparison to
2004!  I expect a subset of the tools in the Deployment Framework to remain useful
– but that is another post for another day.

If you attended my DevCon 2005 talk on mobility (and even if you didn’t) you
can find the deck available here.  The
talk was specifically on the .NET Compact Framework 2.0 and Sql Server 2005 Mobile
Edition.

Calling A Receive Pipeline Inside an Orchestration in BizTalk 2006

Impresive! from Steve W Thomas:


For starter, why would you want to call a Receive Pipeline from within an Orchestration?  I had to struggle for a bit to come up with a good reason I can find it useful in debatching Scenarios that require mapping prior to debatching or for debatching into smaller batches using a map.  I could also find it useful when working with flat file.


[…]


Super Cool: Supports receiving multiple messages returned from the pipeline and can use enumeration to process each message.


more on his blog

The 11th BizTalk Commandment – Thou shalt not change thy namespaces

Namespaces are sacred changing them could result in chicken sacrificing and other ungodly practices.


 


BizTalk is very xml-centric. If you change a namespace think about what references that schema, map, orchestration pipeline, rules composer vocabulary whose namespace you are about to change.


 


Best practice is to get namespaces right from the start. Look at the msdn’s best practice on standard namespace formats at the beginning of development. This prevents you from having hack a namespace change half way through development.


 


Sounds like common sense.


 


However!!!


 


A good BizTalker should be versioning their schemas via the namespace. Thus namespaces will have to change with new versions of your schemas. Be careful.

How To Call A Receive Pipeline In an Orchestration

With the release of BizTalk 2006 Beta just around the corner, why not get a head start by seeing how to call a Receive Pipeline from within an Orchestration.



For starter, why would you want to call a Receive Pipeline from within an Orchestration?  I had to struggle for a bit to come up with a good reason… I can find it useful in debatching Scenarios that require mapping prior to debatching or for debatching into smaller batches using a map.  I could also find it useful when working with flat file.



Limitations: Calling a Receive Pipeline inside the Orchestration does not support recoverable interchanges (more on this later) and it must be run inside an Atomic Scope.



Super Cool: Supports receiving multiple messages returned from the pipeline and can use enumeration to process each message.



The sample shown below receives a message of type XmlDocument into the Orchestration.  A Receive Pipeline is called to Debatch the message using an Envelope Schema.  A loop shape is used to enumerate over the resulting messages and send each single message.  In addition, references are needed to Microsoft.XLANGs.Pipeline and


Microsoft.BizTalk.Pipeline.




The CallPipeline Expression Shape contains the following line of code:


InputPipeline = Microsoft.XLANGs.Pipeline.


XLANGPipelineManager.ExecuteReceivePipeline


(typeof(CallReceivePipeline.ReceivePipeline),msgFullMessage);



With InputPipeline defined as an Orchestration Variable of type Microsoft.XLANGs.Pipeline.ReceivePipelineOutputMessages



GetEachMessage will loop the collection using MoveNext like this:


InputPipeline.MoveNext()



Finally, the single messages are assigned inside the Message Assignment shape like this:


msgSingle = new System.Xml.XmlDocument();
InputPipeline.GetCurrent(msgSingle);



With msgSingle defined as an Orchestration Message of a specific schema type.



It is that simple!  In about 5 lines of code the Receive Pipeline can be executed inside on Orchestration in BizTalk 2006!



Download: Sample Receive Pipeline in BT2006



Do not forget to view all my other samples at http://www.biztalkgurus.com



Please note this sample is based on pre-beta code (CTP Build) of BizTalk Server 2006.  This may not work on other builds, RTM, etc.



If you do not have Visual Studio 2005 Beta 2 and BizTalk 2006 installed you can still download and view the artifacts (like the Orchestration).  You will not be able to open the project or run the sample. 


 

BizTalk BAM Portal 2006: Activity Search

In a previous post, I described the home page of the new BAM Portal. Today, let’s take a look at the Instance Search feature. The instance search allows you to search BAM data for a particular activity instance:



You can add / remove clauses using the “Add” / “Remove” buttons. You can also build a query and save it locally as an XML file for future use. Opening a query is done by clicking the “Open” button. Let take the Search for a test drive, shall we?



After selecting the business data you would like to see in the column chooser, I am looking for all purchase orders with an amount of $500. There is only one purchase order matching in my system. I can see the details of this activity by clickin on the row of interest:



Users can see all business data associated with this activity instance. Milestones appear sorted from the oldest one to the newest one. Any related document or related activity would appear in their respective sections.


Finally, the “Technical Assistance” can be used to open a technical assistance ticket. The subject / description entered below will be posted to the event log of the server, along with references to engine artifacts (messages / orchestrations) related to this activity.



Tomorow, I’ll show how one can view aggregated data and create alerts when specific condition happen.

Calling a Receive Pipeline Inside an Orchestration

This sample shows how to use a Receive Pipeline inside an Orchestration in BizTalk Server 2006. A loop shape is used to enumerate over the resulting messages and send each single message. This is based on BizTalk Server 2006 CTP Build.

This sample should work with BizTalk 2006 and BizTalk 2006 R2.

Get more information from the original blog post on this topic: http://www.biztalkgurus.com/biztalk_server/biztalk_blogs/b/biztalk/archive/2005/06/16/how-to-call-a-receive-pipeline-in-an-orchestration.aspx

BizTalk BAM Portal 2006: Activity Search

In a previous post, I described the home page of the new BAM Portal. Today, let’s take a look at the Instance Search feature. The instance search allows you to search BAM data for a particular activity instance:



You can add / remove clauses using the “Add” / “Remove” buttons. You can also build a query and save it locally as an XML file for future use. Opening a query is done by clicking the “Open” button. Let take the Search for a test drive, shall we?



After selecting the business data you would like to see in the column chooser, I am looking for all purchase orders with an amount of $500. There is only one purchase order matching in my system. I can see the details of this activity by clickin on the row of interest:



Users can see all business data associated with this activity instance. Milestones appear sorted from the oldest one to the newest one. Any related document or related activity would appear in their respective sections.


Finally, the “Technical Assistance” can be used to open a technical assistance ticket. The subject / description entered below will be posted to the event log of the server, along with references to engine artifacts (messages / orchestrations) related to this activity.



Tomorow, I’ll show how one can view aggregated data and create alerts when specific condition happen.

BizTalk 2004 "Commando" Training course – BizTalk Assembly Replication and Viewer

BizTalk 2004 "Commando" Training course – BizTalk Assembly Replication and Viewer

BizTalk Server 2004 has a very cool architecture that allows it to balance the processing of a workload across many BizTalk Servers when they are configured to function as a group. When we use this “Group”, or “Farm” configuration, all the BizTalk Servers share the same configuration and message box database. As workload increases or, for high availablity, we can push “BizTalk” applications (in the form of .Net assemblies) out to additional servers in the farm. In most cases, “pushing out” really just means “GAC’ing” the custom BizTalk application assemblies on the target BizTalk Servers within the farm.


What does this architecture give us?  If the Orchestrations fail on one server, they can easily start up where they left off on the other server as all the state is managed in the database (not local machine queues).  All we need to do is make sure that the application assemblies are GAC’d on all the servers we want to fail over to.


Today, people either have to do that manually or or use a third party tool to GAC assemblies.  


But lets dream for a moment….wouldn’t it be cool if we had a tool that would allow us to manage all the assemblies deployed within the BizTalk group?  Imagine,  that we could use this tool to list out all the assemblies registered in the BizTalk Management database, then check to see if they’ve been deployed to other servers within the BizTalk group.  Then, when we find one that wasn’t GAC’d on a specific server, we could press a button and wholla (did I spell that right 🙂 ), the assemblies get deployed and GAC’d on the remote server and we didn’t even have to leave our desks.


Well…this is possible now because of a BizTalk Escalation Engineer that works for Microsoft Premier Services, Rick Caudle.  He wrote the BizTalk Assembly Checker, which does exactly what I described above. 


When we launch the tool, we’ll see a view that allows us to specify the SQL Server that the Management database is located on and connect to it.  Once we connect, it will list all the BizTalk Servers and deployed application assemblies registered in the BizTalk Group.  The tool allows us to select each server and check to see the assemblies are deployed.


If we need to copy and GAC the assemblies on one of the servers, we just click the GAC Tool button which brings up the dialog box below:


Check whether we want to copy the assemblies locally and GAC them and click the OK button…..the tool does the rest: 


You can download the tool as well as the latest build source code from here.

BizTalk 2004 "Commando" Training course – Installing Windows Sharepoint Servcies Batch File

Installing BizTalk Server 2004 sometimes entails installing Windows Sharepoint Services, specifically if you want to use Business Activity Services (Trading Party Mgmt, BAM portal, etc..).   However, I see more and more folks configuring it improperly, hence the BizTalk Server installation fails when trying to install our BAS site or updating the infopath templates.


The product group is pretty good about updating the Installation Guide for BizTalk Server 2004.   In fact, you can find the latest published guide (February 05) at http://www.microsoft.com/technet/prodtechnol/biztalk/biztalk2004/deploy/install_guide.mspx. 


In the guide it reads:


To configure Windows SharePoint Services


  1. If it is not already open, open SharePoint Central Administration. On the Start menu, point to Programs, point to Administrative Tools and then click SharePoint Central Administration.
  2. On the SharePoint Central Administration page, under Server Configuration, select Configure virtual server for central administration.
  3. On the Configure Administrative Virtual Server page, select Use an existing application pool if one already exists. If this is your first Windows SharePoint Services configuration, select Create a new application pool. Enter an application pool name. For example, SpsAdminAppPool.
  4. Select a Configurable security account and use a local administrator. Click OK. You will be prompted to restart IIS at this point. Click OK.
  5. After IIS restarts, open SharePoint Central Administration. On the SharePoint Central Administration page, under Server Configuration, select Set configuration database server.
  6. On the Set Configuration Database Server page, enter values for Database server name and SQL Server database name. Next, specify your database connection type. Click OK.
  7. On the SharePoint Central Administration page, under Virtual Server Configuration, select Extend or upgrade virtual server. The Windows SharePoint Services Virtual Server List page appears.
  8. On the Windows SharePoint Services Virtual Server List page, if there are no servers in the list, click the Go to the complete list link. The complete list appears.
  9. Select the server you want to extend.
  10. Click Extend and create a content database.
  11. On the Extend and Create Content Database page, under Application Pool enter an Application pool name. For example, SpsWebSiteAppPool.
  12. Select a Configurable security account and use a local administrator.
  13. Click OK.

By default, Windows SharePoint Services includes the root of the IIS default Web site as a managed path. To create a virtual directory on a Windows SharePoint Services-extended virtual server for your own use (for example, for a BizTalk Server receive location or for a Web service application), you must exclude the URL for your virtual directory from the Windows SharePoint Services managed paths. Alternatively, if you have not configured a top-level Windows SharePoint Services site on the root of the IIS Web site, you may remove the root as a managed path.


To configure Managed Paths in Windows SharePoint Services


  1. If it is not already open, open SharePoint Central Administration. On the Start menu, point to Programs, point to Administrative Tools and then click SharePoint Central Administration.
  2. Click the Configure virtual server settings link.
  3. Click on the server that you extended.
  4. Under Virtual Server Management, click on Define managed paths.
  5. Under Included Paths select the (root) checkbox and click the Remove selected paths link.
  6. Click the Windows SharePoint Services link to return to the SharePoint Central Administration site.

For information about how to configure managed paths from the command line, see the topic “Managing Paths” in Microsoft Windows SharePoint Services Administrator’s Guide at http://go.microsoft.com/fwlink/?LinkId=18110.


So, you can see, there’s a few things you have to do to configure it properly.   In the past, I’ve taken all this and just put it in a batch file to simplify the process.   You’ll find the text of the batch file below.  I literally just run this instead of running the setup independently and doing all the configuration manually.   I avoid common mistakes this way.  


You’ll see I declare some variables at the top of the batch file.  These set the path of the WSS installation executable, the server and port which WSS is being installed on, the user id, password and email address that the WSS service will run under (make sure they are members of the local IIS_WPG group), the database server in which to create the content and configuration database, ports and the name of the configuration database to create.


Next, I basically execute the following steps:



1. Install WSS using the remote Sql option


2. Remove front page extensions from the web site I’m installing WSS on


3. Configure the WSS admin site and the application pool for it, including the credentials it runs under


4. Create the WSS configuration database


5. Extend the virtual server on the default site and set credentials


6. Lastly, I delete the root as a managed path under WSS.


Cheers!


 


@SET WSSEXE          = C:\WUTemp\Platform\WSSV2\STS2Setup_1033
@SET WSSSERVER   = bts04dev01:80
@SET WSSUSERID    = waz-msft\WSSAdminSvc
@SET WSSPWD         =
pass@word1
@SET WSSEMAIL      = [email protected]
@SET DBSERVER      = BTS2004sql01
@SET FPPORT           = 80
@SET ADMINPORT   = 8080
@SET WSSCONFIGDB = WSSConfig



%WSSEXE%\SETUPSTS.EXE remotesql=yes /qb


“c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\50\BIN\owsadm.exe” -o fulluninstall -p %FPPORT%


“c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\BIN\stsadm” -o setadminport -p %ADMINPORT% -admapcreatenew -admapidname adminvs -admapidtype configurableid -admapidlogin %WSSUSERID% -admapidpwd %WSSPWD%


“c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\BIN\stsadm” -o setconfigdb -ds %DBSERVER% -dn %WSSCONFIGDB%


“c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\BIN\stsadm” -o extendvs -url http://%WSSSERVER% -ownerlogin %WSSUSERID% -owneremail %WSSEMAIL% -apcreatenew -apidname defaultvs -apidtype configurableid -apidlogin %WSSUSERID% -apidpwd %WSSPWD%


“c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\BIN\stsadm” -o deletepath -url http://%WSSSERVER%

BizTalk Server 2006: What is new with Business Activity Monitoring?

You probably already read Scott’s document on what is new in Business Activity Monitoring 2006.Today, I’ll shed some light on the brand new “out of the box” portal. All information are based on the CTP build you might have picked up at TechEd 2005. Keep in mind that the BAM Portal may (and probably will) change before its final version is released.



There are three main zones:




  1. the header. This is the location users can customize for branding purposes,


  2. the navigation bar (on the left on a light blue background) which displays all views and activities. This is the entry point to most features of the portal,


  3. the content where users will interact with data. The main page displays a quick summary of importan BAM concepts.

The header:


The header displays branding information (which can be customized for your company),  the contextual help link and the current location. On the screenshot below, I am on the Home page. You can always come back to the home page by clicking on the “Home” icon at the left of the header.



The navigation bar:


The navigation bar displays all views / activities which can be accessed by the current user. On the picture below, I have access to one view (SalesManagerView) under which there is currently one activity (“PurchaseOrder”).


 


I can search for instances of activity “PurchaseOrder” by clicking on “PurchaseOrder” under “Activity Search”. I can view aggregated data by clicking on one of the entries under “Aggregations”. Finally, I can manage alerts by clicking on “PurchaseOrder” under the “Alert Manager” node. The navigation bar is the main entry point to most BAM Portal features. It will always be displayed on the left of the window.


Join me tomorow as I explore the Activity Search, Aggregations and the Alert Manager.