My article on the Web Services Software Factory (Service Factory)
BizTalk Message Context Properties – handy guide
Came across this handy page during my searching travels.
Covers the common Context Properties and gives a little blurb on each.
This is taken from MSDN
System properties are mostly used internally by BizTalk Messaging Engine and its components.
In general, changing the values set by the engine for those properties is not recommended,
because it may affect the execution logic of the engine. However, there are a large
number of properties that you can change.
The following table contains a list of message context properties that the Messaging
Engine can promote. You can use these properties for creation of filter expressions
on send ports and orchestrations in Microsoft%u00ae BizTalk Server 2006. A separate
table lists additional properties that may be of use in some BizTalk applications
that cannot be promoted.
For additional information about properties and property schemas associated with pipeline
components and adapters, see the following:
-
BizTalk
Message Queuing Adapter Property Schema and Properties
-
File
Adapter Property Schema and Properties
-
FTP
Adapter Property Schema and Properties
-
HTTP
Adapter Property Schema and Properties
-
MSMQ
Adapter Property Schema and Properties
-
SMTP
Adapter Property Schema and Properties
-
SOAP
Adapter Property Schema and Properties
-
BizTalk
Framework Schema and Properties
-
MQSeries
Adapter Properties
-
POP3
Adapter Property Schema and Properties
-
Windows
SharePoint Services Adapter Properties Reference
-
MIME/SMIME
Property Schema and Properties
-
XML
and Flat File Property Schema and Properties
| Property | When and where it is promoted | Type | Description | ||
|---|---|---|---|---|---|
|
BTS.AckFailureCategory |
Promoted by the Messaging Engine before publishing an acknowledgement message into |
xs:int |
Identifies the ErrorCategory, which gives the place and reason for the suspension. |
||
|
BTS.AckFailureCode |
Promoted by the Messaging Engine before publishing an acknowledgement message into |
xs:string |
Identifies the ErrorCode, which gives the place and reason for the suspension. |
||
|
BTS.AckID |
Promoted by the Messaging Engine before publishing an acknowledgement message into |
xs:string |
Identifies the MessageID of the original message. |
||
|
BTS.AckInboundTransportLocation |
Promoted by the Messaging Engine before publishing an acknowledgement message into |
xs:string |
Identifies the InboundTransportLocation from the original message. |
||
|
BTS.AckOutboundTransportLocation |
Promoted by the Messaging Engine before publishing an acknowledgement message into |
xs:string |
Identifies the OutboundTransportLocation from the original message. |
||
|
BTS.AckOwnerID |
Promoted by the Messaging Engine before publishing an acknowledgement message into |
xs:string |
Identifies the instance ID from original message. |
||
|
BTS.AckReceivePortID |
Promoted by the Messaging Engine before publishing an acknowledgement message into |
xs:string |
Identifies the ReceivePortID from the original message. |
||
|
BTS.AckReceivePortName |
Promoted by the Messaging Engine for the acknowledgement message. |
xs:string |
Identifies the ReceivePortName from the original message. |
||
|
BTS.AckSendPortID |
Promoted by the Messaging Engine before publishing an acknowledgement message into |
xs:string |
Identifies the SendPortID from the original message. |
||
|
BTS.AckSendPortName |
Promoted by the Messaging Engine before publishing an acknowledgement message into |
xs:string |
Identifies the SendPortName from the original message. |
||
|
BTS.AckType |
Promoted by the Messaging Engine before publishing an acknowledgement message into |
xs:string |
Allows monitoring of acknowledgements and non-acknowledgements by an orchestration. |
||
|
BTS.ActionOnFailure |
This property can be set by an adapter prior to calling IBTTTransportBatch::SubmitMessage() |
xs:int |
Controls the behavior of the messaging engine when there is a failure in the receive Valid values:
Other values are reserved for future use. |
||
|
BTS.CorrelationToken |
If this property is set on the message context, it is promoted by the Messaging Engine. |
xs:string |
Enables routing of response to request-response ports. |
||
|
BTS.EpmRRCorrelationToken |
Promoted by the Messaging Engine on request-response message execution. The property |
xs:int |
Used internally by the Messaging Engine. Specifies the Server Name, Process ID and |
||
|
BTS.InboundTransportLocation |
Promoted by the Messaging Engine after receiving a message from a receive adapter |
xs:string |
Specifies the location (URI) on which the message was received by the handler. |
||
|
BTS.InboundTransportType |
Promoted by the Messaging Engine after receiving a message from a receive adapter |
xs:string |
Specifies the type of adapter that received this message and submitted it into the |
||
|
BTS.InterchangeSequenceNumber |
Pomoted by the Messaging Engine after receiving a message from the receive adapter |
xs:int |
Indicates the sequence number of the document in the interchange. If the document |
||
|
BTS.MessageDestination |
This property can be set in the receive pipeline by a disassembler pipeline component |
xs:string |
Used primarily to support Recoverable Interchange Processing in disassemblers, this Valid values:
|
||
|
BTS.MessageType |
Promoted by the disassembler pipeline components during message parsing. |
xs:string |
Specifies the type of the message. The message type is defined as a concatenation |
||
|
BTS.OutboundTransportLocation |
If this property is set on the message context, it is promoted by the Messaging Engine. |
xs:string |
Specifies the destination location URI where the message is sent. The URI may contain Valid values: BizTalk Message Queuing: DIRECT=, PRIVATE=, and PUBLIC= FILE: file:// FTP: FTP:// HTTP: http:// and https:// SMTP: mailto: SOAP: SOAP:// SQL: SQL:// |
||
|
BTS.OutboundTransportType |
If this property is set on the message context, it is promoted by the Messaging Engine. |
xs:string |
Specifies the type of adapter used to send the message. The available adapter types
The values set on this property as well as adapter prefixes specified in the address |
||
|
BTS.PropertiesToUpdate |
An adapter sets this property when it needs to preserve some of the property values
This means that when the message gets resubmitted or resumed, it will have the specified |
xs:string |
Contains an XML string with elements that represent property names, namespaces |
||
|
BTS.ReceivePortID |
Promoted by the Messaging Engine after receiving a message from a receive adapter |
xs:int |
Identifies the receive port on which the message was received. |
||
|
BTS.ReceivePortName |
Promoted by the Messaging Engine after receiving a message from a receive adapter |
xs:string |
User-friendly name of the receive port on which the message was received. |
||
|
BTS.RouteDirectToTP |
Promoted by the Messaging Engine on messages for loop back or request-response execution. |
xs:boolean |
Used internally by the Messaging Engine to enable loop back and request-response scenarios. |
||
|
BTS.SPGroupID |
Promoted by the Messaging Engine when the message is sent to a send port from orchestration. |
xs:string |
Specifies the ID of the send port group. |
||
|
BTS.SPID |
Promoted by the Messaging Engine when a message is sent to a send port from orchestration. |
xs:string |
Specifies the ID of the send port. |
||
|
BTS.SPTransportBackupID |
Promoted by the Messaging Engine when a message is sent to a send port from an orchestration. |
xs:string |
Specifies the ID of the backup adapter in the send port. |
||
|
BTS.SPTransportID |
Promoted by the Messaging Engine when a message is sent to a send port from an orchestration. |
xs:string |
Specifies the ID of the primary adapter in the send port. |
||
|
BTS.SuspendAsNonResumable |
This property can be set by an adapter before calling SubmitMessage() or in an orchestration
|
xs:boolean |
Controls whether the Message Engine should suspend a message as non-resumable on message Valid values:
|
||
|
BTS.SuspendMessageOnRoutingFailure |
Promoted by the Messaging Engine after receiving a message from a receive adapter |
xs:boolean |
Specifies behavior when a routing failure occurs with an incoming message. Valid values:
|
There are a number of other properties in this namespace that carry information that
may be useful for some BizTalk applications.
| Property | When and where it is promoted | Type | Description |
|---|---|---|---|
|
BTS.AckDescription |
Set by the Messaging Engine before publishing an acknowledgement message into the |
xs:string |
Identifies the ErrorDescription, which gives the place and reason for the suspension. |
|
BTS.EncryptionCert |
Not promotable. |
xs:int |
Identifies the thumbprint corresponding to the encryption certificate. Set this property |
|
BTS.InterchangeID |
Set by the Messaging Engine for each message that arrives on the server. |
xs:string |
Defines the unique ID that is used to group the documents that resulted from the same |
|
BTS.Loopback |
Set by an adapter when submitting the request message for loop back execution. |
xs:boolean |
Defines whether the message should be submitted into the server for a loop back execution. |
|
BTS.SignatureCertificate |
Set by some adapters when submitting a message into the server. This property is used |
xs:string |
Identifies the thumbprint of the signing certificate that was used to sign the message |
|
BTS.SourcePartyID |
Set by the Party Resolution pipeline component after the party has been identified |
xs:string |
The ID of the BizTalk party. |
|
BTS.SSOTicket |
If the receive adapter supports this property, it is set when publishing the message |
xs:string |
A ticket contains the encrypted domain and username of the current user, as well as |
|
BTS.WindowsUser |
Set by some adapters when submitting a message into the server. This property is used |
What makes a good BizTalk Administrator?
I suspect that many organisation don’t yet realise this, but “BizTalk Administrator” is a now a specialised job role. So often I see situations where, when things starting going wrong, the operations guys are forced to call in the BizTalk dev guys because they’re the only one’s in the company who have a firm grasp on how BizTalk works. Maybe that works in your organisation, but its worth pointing out that dev guys aren’t necessarily well suited to making stuff run. Devs build stuff. Operations people keep stuff running. Its different mindsets, and if your critical BizTalk infrastructure (or something BizTalk is dependant on) is currently down (it happens), do you really want mindsets clashing?
Whatwould be the hallmarks of a good BizTalk administrator?
- Well for starters, a good BizTalk Administrator would actually realise they are the BizTalk Administrator. They understand that its a specialised skillset and requires specialised knowledge.
- They’ve done some BizTalk Administration Training (company funded of course) and they’ve read the operations manual.
- They actually havea BizTalk install on their own box which they play with. They may not have the dev background to get too involved with orchestrationsmaps and all that dev stuff, but they play with the SDK samples when they can.
- They fully understand the Deploy Undeploy story around BizTalk and the various methods available for deploying artifacts.
- They understand the relationships between, BizTalk and IIS, BizTalk and SQL, BizTalk and MSMQ, BizTalk adapters and everythingthey connect to, and so on. If you connect to a mainframe, they should have some idea how that magically happens.
- They are plugged into the BizTalk blogosphere/newsgroups so they can keep a proactive watch out for issues, releases, Services Packs etc. No good BizTalk Administrator would be surprised to hear that BizTalk 2004 Service Pack 2 released recently (You already have this in your maintenance/release plan don’t you?)
- If you’ve got BTS2006, then they hang out in the BizTalk Administror Hub page for a part of the day…you know just keeping an eye on things… If you have BTS2004, then they are intimately familar with HAT and use it daily. A really good Admin will even have custom HAT queries they use for looking atthingsof interest.
This has been my 2 cents.
Mark
BizUnit Context
So after several cribs and rants about BizUnit, a while ago i decided to take matters into my own hands and went through the code base with a fine tooth comb and worked out what exactly it does and doesnt do. I then wrote up a tutorial on the context object and have been intending to post it here for a long time. Finally i got round to it this evening as i was prodded by an email from someone who wants to check it out. So i have put up an article on this site and its available at (http://dotnetjunkies.com/WebLog/netblog/articles/BizUnit_Context_Tutorial.aspx)
From the introduction :
BizUnit is a very extensible testing framework. One of the core elements of BizUnit is the Context object. Unfortunately the documentation does not explain how users can take advantage of it and it is left to developers to try and understand it from NDoc samples scattered around in the documentation.
This tutorial introduces the Context object and how it can be used in BizUnit based testing. It uses examples from the official documentation wherever applicable and supplements it where the information in the documentation is not very clear. It will not replicate the list of methods and properties etc, so for an exhaustive reference, please refer back to the documentation. This is the first in a series of articles on BizUnit.
Disclaimers & Misc stuff
The word template i used was really cool but the formatting available on this site is very limited so it looks rather poor and there is no provision for attaching entire documents, so please excuse the appearance of the article. I have applied for a CodePlex project where I intend to put the articles and other tutorials as well as the code for the new steps we have written. As soon as that is available i will let you folks know.
I welcome any comments on this article and suggestions for improvement.
(Btw, I wonder if its my browser, but something appears to have happened to the rendering on this main page. All the posts are skewed in format)
View the C# files behind your BizTalk Project
As you may know, the BTS VS.NET IDE plugin during a build goes off and compiles your
BizTalk maps, schemas and orchestrations to C#.
Then from there we have another compile and viola – we have dlls produced.
The IDE uses the compiler XSharpP.exe to produce your C# files.
Wouldnt it be nice to see what the C# files are – also very useful for line
by line debugging.
All you need to do is to create the appropriate Registry Key and corresponding
value
Key Location: HKCU\Software\Microsoft\VisualStudio\8
Key Name: BizTalkProject
Value Type: DWORD
Value Name: GenerateCSFiles (this is the only acceptible value at this point)
Value : 1
Done! Load a BTS Project up, and compile – you’ll see some changes.
Note: I have had this fail a couple of times on some huge BTS solutions with over
40 odd ‘Solution Folders’ (and bts projects under those etc).
Nov + December Webcasts Coming up
Some great Webcasts coming up for November and December.
Check them out.
The 2007 Microsoft Office system:
Watch, learn, enter to win!
Attend any live or on-demand webcast in this series through June 30, 2007, and qualify
to win an Acer Ferrari laptop, Windows Mobile powered Smartphone, or Creative MP3/video
player or Microsoft Zune (official
rules). Offer open to residents of the U.S. only.
.NET 3.0 Series: Windows Presentation
Foundation Overview
Monday, November 20, 2006 10:00 AM Eastern Time (US & Canada)
devCast: Web Wednesdays-ASP.Net
AJAX Control Toolkit
Wednesday, November 22, 2006 12:00 PM Eastern Time (US & Canada)
Friday, November 24, 2006 12:00 PM Eastern Time (US & Canada)
Monday, November 27, 2006 10:00 AM Eastern Time (US & Canada)
Live From Redmond: Client Application
Services in Orcas
Tuesday, November 28, 2006 9:00 AM Pacific Time (US & Canada)
Migration Best Practices for
Financial Services (WinDNA to .NET 2.0)
Tuesday, November 28, 2006 1:00 PM Eastern Time (US & Canada)
devCast: Web Wednesdays-Microsoft
AJAX Library and ASP .NET 2.0 AJAX Extensions- Deep Dive
Wednesday, November 29, 2006 12:00 PM Eastern Time (US & Canada)
Monday, December 04, 2006 9:00 AM Pacific Time (US & Canada)
ASP.NET Series: Intro to ASP.NET
“Atlas”
Monday, December 04, 2006 10:00 AM Eastern Time (US & Canada)
Live From Redmond: IronPython:
Developing agile but rich client applications using Python
Wednesday, December 06, 2006 9:00 AM Pacific Time (US & Canada)
devCast: Web Wednesdays-Windows
Live: Intro to Gadgets
Wednesday, December 06, 2006 12:00 PM Eastern Time (US & Canada)
Friday, December 08, 2006 10:00 AM Eastern Time (US & Canada)
Friday, December 08, 2006 12:00 PM Eastern Time (US & Canada)
ASP.NET Series: What’s New in
IIS 7.0
Monday, December 11, 2006 10:00 AM Eastern Time (US & Canada)
devCast: Web Wednesdays-ASP.NET
2.0 Overview
Wednesday, December 13, 2006 12:00 PM Eastern Time (US & Canada)
ASP.NET Series: ASP.NET “Atlas”
Deep Dive
Monday, December 18, 2006 10:00 AM Eastern Time (US & Canada)
devCast: Web Wednesdays- Microsoft
AJAX Library and ASP .NET 2.0 AJAX Extensions-Overview
Wednesday, December 20, 2006 12:00 PM Eastern Time (US & Canada)
Friday, December 22, 2006 12:00 PM Eastern Time (US & Canada)
Live From Redmond: Using the
Microsoft ASP.NET AJAX Library with “other” server technologies
Tuesday, November 21, 2006 9:00 AM Pacific Time (US & Canada)
Wednesday, November 22, 2006 9:00 AM Pacific Time (US & Canada)
MSDN Webcast: MSDN geekSpeak:
ASP.NET Security with Jeff Prosise (Level 200)
Wednesday, November 29, 2006 12:00 PM Pacific Time (US & Canada)
Thursday, November 30, 2006 9:00 AM Pacific Time (US & Canada)
Live From Redmond: An in-depth
look at the “ListView” control
Friday, December 08, 2006 9:00 AM Pacific Time (US & Canada)
Live From Redmond: Team development
on web applications
Tuesday, December 12, 2006 9:00 AM Pacific Time (US & Canada)
Thursday, December 07, 2006 11:00 AM Pacific Time (US & Canada)
Tuesday, December 19, 2006 9:00 AM Pacific Time (US & Canada)
Momentum Webcast: Learn About
a Customer’s Experiences with Microsoft Dynamics GP (Level 100)
Tuesday, November 28, 2006 9:00 AM Pacific Time (US & Canada)
Tuesday, November 28, 2006 11:00 AM Pacific Time (US & Canada)
Momentum Webcast: Building High-Value
Connections with Your Supply Chain (Level 100)
Monday, December 04, 2006 9:00 AM Pacific Time (US & Canada)
Monday, December 04, 2006 12:30 PM Pacific Time (US & Canada)
Monday, December 04, 2006 1:00 PM Pacific Time (US & Canada)
Momentum Webcast: Learn About
Customers’ Experiences with Microsoft Dynamics CRM (Level 100)
Tuesday, December 05, 2006 9:00 AM Pacific Time (US & Canada)
Momentum Webcast: Using Technology
to Manage the Complexities of Regulatory Compliance (Level 100)
Monday, December 11, 2006 9:00 AM Pacific Time (US & Canada)
Momentum Webcast: Reporting Challenges
Faced by Corporate, Divisions, and Subsidiaries (Level 100)
Monday, December 11, 2006 1:00 PM Pacific Time (US & Canada)
Momentum Webcast: Redefine Your
Customer Relationships with Microsoft CRM 3.0 (Level 100)
Thursday, December 14, 2006 9:00 AM Pacific Time (US & Canada)
Monday, December 18, 2006 9:00 AM Pacific Time (US & Canada)
No upcoming Internet Information Server (IIS) webcasts are scheduled.
On-demand Internet Information
Server (IIS) webcasts
TechNet Webcast: Technical Overview
of Office Groove 2007 (Level 200)
Monday, November 20, 2006 11:30 AM Pacific Time (US & Canada)
TechNet Webcast: Data Mining
Add-ins for the 2007 Office System (Level 200)
Monday, November 27, 2006 9:30 AM Pacific Time (US & Canada)
TechNet Webcast: SharePoint Security
from Service Accounts to Item-Level Access (Level 200)
Monday, November 27, 2006 11:00 AM Pacific Time (US & Canada)
TechNet Webcast: Microsoft Office
Live Communications Server 2005 SP1 Technical Overview (Level 200)
Tuesday, November 28, 2006 9:30 AM Pacific Time (US & Canada)
Wednesday, November 29, 2006 11:00 AM Pacific Time (US & Canada)
Thursday, November 30, 2006 9:30 AM Pacific Time (US & Canada)
Windows Vista Support WebCast:
Windows Vista with the 2007 Microsoft Office System – better together
Thursday, November 30, 2006 10:00 AM Pacific Time (US & Canada)
Friday, December 01, 2006 9:30 AM Pacific Time (US & Canada)
TechNet Webcast: Deploying Microsoft
Office Live Communications Server 2005 SP1 (Level 300)
Tuesday, December 05, 2006 9:30 AM Pacific Time (US & Canada)
TechNet Webcast: How Microsoft
Automated Employee Performance Reviews (Level 300)
Tuesday, December 05, 2006 9:30 AM Pacific Time (US & Canada)
TechNet Webcast: Planning for
and Deploying Office SharePoint Server 2007 (Part 1 of 2) (Level 200)
Wednesday, December 06, 2006 9:30 AM Pacific Time (US & Canada)
Thursday, December 07, 2006 9:00 AM Pacific Time (US & Canada)
TechNet Webcast: Microsoft Office
Live Communications Server 2005 SP1 Federation (Level 300)
Thursday, December 07, 2006 9:30 AM Pacific Time (US & Canada)
TechNet Webcast: Planning for
and Deploying Office SharePoint Server 2007 (Part 2 of 2) (Level 200)
Friday, December 08, 2006 9:30 AM Pacific Time (US & Canada)
Friday, December 08, 2006 11:00 AM Pacific Time (US & Canada)
Friday, December 08, 2006 11:30 AM Pacific Time (US & Canada)
TechNet Webcast: Real-Time Collaboration
and Office SharePoint Server 2007 (Level 200)
Monday, December 11, 2006 11:30 AM Pacific Time (US & Canada)
TechNet Webcast: Deploying Microsoft
Office Communicator 2005 (Level 300)
Tuesday, December 12, 2006 9:30 AM Pacific Time (US & Canada)
TechNet Webcast: An In-Depth
Look at Search Technology in Office SharePoint Server 2007 (Level 200)
Wednesday, December 13, 2006 1:00 PM Pacific Time (US & Canada)
Thursday, December 14, 2006 9:30 AM Pacific Time (US & Canada)
TechNet Webcast: Excel Services
Technical Overview (Level 200)
Friday, December 15, 2006 1:00 PM Pacific Time (US & Canada)
Tuesday, December 19, 2006 9:00 AM Pacific Time (US & Canada)
Tuesday, December 19, 2006 9:30 AM Pacific Time (US & Canada)
Tuesday, December 19, 2006 11:30 AM Pacific Time (US & Canada)
Wednesday, December 20, 2006 9:30 AM Pacific Time (US & Canada)
TechNet Webcast: Compliance and
Records Management (Level 200)
Friday, December 22, 2006 9:30 AM Pacific Time (US & Canada)
Small Business Webcast: New Integrated
Services in Microsoft Office Accounting 2007 (Level 100)
Wednesday, December 27, 2006 1:00 PM Pacific Time (US & Canada)
TechNet Webcast: SharePoint Security
from Service Accounts to Item-Level Access (Level 200)
Monday, November 27, 2006 11:00 AM Pacific Time (US & Canada)
Friday, December 01, 2006 9:30 AM Pacific Time (US & Canada)
TechNet Webcast: Planning for
and Deploying Office SharePoint Server 2007 (Part 1 of 2) (Level 200)
Wednesday, December 06, 2006 9:30 AM Pacific Time (US & Canada)
TechNet Webcast: Planning for
and Deploying Office SharePoint Server 2007 (Part 2 of 2) (Level 200)
Friday, December 08, 2006 9:30 AM Pacific Time (US & Canada)
Friday, December 08, 2006 11:00 AM Pacific Time (US & Canada)
Friday, December 08, 2006 11:30 AM Pacific Time (US & Canada)
TechNet Webcast: Real-Time Collaboration
and Office SharePoint Server 2007 (Level 200)
Monday, December 11, 2006 11:30 AM Pacific Time (US & Canada)
TechNet Webcast: An In-Depth
Look at Search Technology in Office SharePoint Server 2007 (Level 200)
Wednesday, December 13, 2006 1:00 PM Pacific Time (US & Canada)
TechNet Webcast: Excel Services
Technical Overview (Level 200)
Friday, December 15, 2006 1:00 PM Pacific Time (US & Canada)
Tuesday, December 19, 2006 9:30 AM Pacific Time (US & Canada)
Wednesday, December 20, 2006 9:30 AM Pacific Time (US & Canada)
TechNet Webcast: Compliance and
Records Management (Level 200)
Friday, December 22, 2006 9:30 AM Pacific Time (US & Canada)
MSDN Webcast: Data Warehousing
with SQL Server 2005 (Level 200)
Tuesday, November 21, 2006 11:00 AM Pacific Time (US & Canada)
Wednesday, November 22, 2006 1:00 PM Pacific Time (US & Canada)
TechNet Webcast: Data Mining
Add-ins for the 2007 Office System (Level 200)
Monday, November 27, 2006 9:30 AM Pacific Time (US & Canada)
Tuesday, December 05, 2006 12:00 PM Pacific Time (US & Canada)
Momentum Webcast: Retail Customer
Experience with SQL Server 2005 (Level 100)
Thursday, December 07, 2006 11:00 AM Pacific Time (US & Canada)
Friday, December 08, 2006 11:30 AM Pacific Time (US & Canada)
MSDN Webcast: Introduction to
Microsoft Visual Studio 2005 Team Edition for Database (Level 200)
Monday, November 20, 2006 10:00 AM Pacific Time (US & Canada)
Thursday, November 30, 2006 11:00 AM Pacific Time (US & Canada)
Visual Studio Team System Demo
Thursday, November 30, 2006 2:00 PM Central Time (US & Canada)
MSDN Webcast: Overview of Visual
Studio 2005 Team Edition for Software Testers (Level 200)
Friday, December 01, 2006 11:00 AM Pacific Time (US & Canada)
Thursday, December 14, 2006 11:00 AM Pacific Time (US & Canada)
Visual Studio Team Foundation
Server HOW TO: Plan for, Install, and Configure
Thursday, December 14, 2006 2:00 PM Central Time (US & Canada)
TechNet Webcast: Understanding
Group Policy (Part 3 of 3) (Level 200)
Monday, November 20, 2006 11:30 AM Pacific Time (US & Canada)
Microsoft Webcast: Introduction
to Microsoft Certificate Lifecycle Manager
Monday, November 20, 2006 1:00 PM Pacific Time (US & Canada)
MSDN Webcast: Windows 64-Bit
Software Development (Level 200)
Monday, November 27, 2006 11:00 AM Pacific Time (US & Canada)
Monday, November 27, 2006 11:00 AM Pacific Time (US & Canada)
Microsoft Webcast: Identity Life-Cycle
Management with Microsoft Identity Integration Server 2003
Wednesday, November 29, 2006 11:00 AM Pacific Time (US & Canada)
TechNet Webcast: Migrating from
Windows NT Server 4.0 to Windows Server 2003 (Level 200)
Friday, December 01, 2006 1:00 PM Pacific Time (US & Canada)
TechNet Webcast: Windows Rights
Management Services (RMS) Components and Architecture (Level 200)
Tuesday, December 05, 2006 11:30 AM Pacific Time (US & Canada)
Support WebCast: Exploring the
nuances of remote file encryption
Wednesday, December 06, 2006 10:00 AM Pacific Time (US & Canada)
TechNet Webcast: Windows Server
“Longhorn” and Windows Vista: Better Together (Level 200)
Thursday, December 07, 2006 1:00 PM Pacific Time (US & Canada)
TechNet Webcast: Active Directory
Fundamentals (Level 200)
Friday, December 08, 2006 1:00 PM Pacific Time (US & Canada)
Monday, December 18, 2006 1:00 PM Pacific Time (US & Canada)
TechNet Webcast: Best Practices
for Designing the Active Directory Structure (Level 200)
Wednesday, December 20, 2006 11:30 AM Pacific Time (US & Canada)
No upcoming in-person events are scheduled for your area.
Parsing Errors
I make so many mistakes with BizTalk that I forget how much I have learned, or better yet, how many mistakes I really can make! (This blog is a testament tosome of them that I at least confess to.)A recent contract reminded of a behavior of the BTAHL7 pipeline component that is not that obvious.
While starting off on a new message, the first thing that I normally do is send the message in using the BTAHL72X pipeline on both the send and recieve port (yes, I put the BTS.ReceivePortName as the filter). I normally look in the destination folder to make sure it is a valid, which it almost never shows up!
I then go to my first troubleshooting haven – HAT. There I look at the last 100 instances, and see that the receive successfully, but the sending had an issue:
In looking closer, it looks like it cannot re serialized back into HL7
So the problem must be in the send pipeline.
WRONG
The actual issue is when the BTAHL72XReceivePipeline attempts to parse the HL7 message, and it is unable to, it completes successfullyby doing nothing and sending it in as a text blob. Of course the send pipeline is expecting that multipart message in xml format, not some unserializable text blob, which of course it knows nothing about!
CORRECTION: I justpulled a Pinocchio;the recieve pipelineactually does something, it logs information to the event log, and will create a ACK/NAK if it is configured. It will not suspend the message because it would then queue up all of the rest of the messages that are following this erroneous message. So it does not stop the other messages from coming in. You also need to make sure that you have a send port that has the BTAHL7.ParseError==true filter to pick have a subscription looking for those bad HL7 messages. I briefly blogged about this here.
The actual errors are logged to the event log (and created in the ACK if you have configured that component). This was a definate Doh moment, when at a different client, I ended up calling support because I was rock headed and did not even bother to look in the event log when data was not showing up out of the message box in xml format.
When I look at the event logI get all of the details I want:
Event Type: Error
Event Source: BizTalk Accelerator for HL7
Event Category: None
Event ID: 4101
Date: 11/17/2006
Time: 6:43:37 PM
User: N/A
Computer: SERVER2003
Description:
Error happened in body during parsing
Error # 1
Segment Id: PID_PatientIdentification
Sequence Number: 1
Field Number: 3
Error Number: 101
Error Description: Required field is missing
Encoding System: HL7nnnn
Error # 2
Segment Id: PV1_PatientVisit
Sequence Number: 1
Field Number: 2
Error Number: 101
Error Description: Required field is missing
Encoding System: HL7nnnn
…
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
MSDN Magazine Article on Custom BizTalk Adapters
Good article in this month’s MSDN Magazine called Integrate E-Mail Processing Into Your Business Solutions. It covers a variety of topics, including the POP3 adapter, orchestration and some BizTalk plumbing. I also found the part on writing a custom adapter to deal with email message attachment parts fairly interesting. The custom adapter takes each message part and adds it to a custom database. Check it out. Technorati Tags: BizTalk
BizTalk Property Schemas Separated From Associated Schemas
I caught a glimpse of something in the BizTalk Server 2006 Help the other day that surprised me a bit. The note said: First step was to build two separate projects; one to hold my property schema, another to hold my working schemas. After also promoting the value in my second schema, I deployed all the projects. Next step was to build a send port that had a subscription filter in the OrderID property field. Finally, I dropped two different messages into BizTalk (via FILE receive location), and both messages were picked up by the send port. So, from a technical standpoint, this seems to work fine. Clearly there’s some reason for us making this an unsupported configuration, and I’m all ears as for why that’s the case. It would seem to me that separating my property schemas into a separate assembly creates a much more flexible architecture than forcing it to live with the schemas that use it. Thoughts? BTW, I’m jazzed that this is my first post using Microsoft Windows Vista RTM, Office 2007 RTM, and Expression Web Designer (to write the post itself). After installing Windows Vista, I finally had to discard my trusty Allaire Homesite which wouldn’t install correctly. I’ve used Homesite (now owned by Macromedia) for years to write all my HTML, but finally have to upgrade my toolset. Of course, I’ll still do the HTML by hand, but now in a snazzier shell. Technorati Tags: BizTalk
If a property schema is associated with a message schema, then these two must be in the same BizTalk project. Separating property schema from its associated message schema in different BizTalk projects is not supported.
I had seen that mentioned elsewhere and had mentally discarded it, but I wanted to see whether it’s not possible, or it’s not supported.
The property schema has a single field, OrderID. After building and compiling the project, I referenced that project from my primary schemas project. I then tried to promote the OrderNumber value in the schema, and sure enough, I was allowed to pick a schema from a referenced assembly. So far so good.