by community-syndication | May 22, 2006 | BizTalk Community Blogs via Syndication
BizTalk 2004, Questions for interview without answers
Standards
BPEL4WS: Comparing of BizTalk 2004 and BPEL4WS
Which points is the BTS Orchestration different from BPEL4WS in?
Which objects in the BTS have different names from BPEL4WS?
Does the link object have a state?
What does it mean the “JoinCondition”?
What is the BizTalk analogue of the BPEL “Message Event” object?
What is the BizTalk analogue of the BPEL “Alarm Event” object?
WSDL 2.0
Which are names of the root tag and the upper level tags in WSDL 2.0?
Which children are nodes the “operation” and “endpoint”?
Can we use the third party schemas in the WSDL document? How?
Theory, Principles
Subscription/Publishing mode
What are two main types of subscriptions? What is the difference?
What is the Message Agent? It is the service for polishing/subscribing of the messages. (?)
What is the Endpoint Manager?
What is the Message Type?
When a send port creates a subscription?
Do we use enlist/unenlist operations for subscription or for publisher services?
Which three artifacts we can enlist/unenlist?
Is the Binding implementation of the Subscription/Publishing model? If “No”, which model is it implementing?
Orchestrations
Can I receive one message with the same type from different Receive port to one Receive shape?
Can I receive the same message with the same type to several Receive shapes?
Can I send the same message to the different Send ports?
Can I send the different messages with the same typ
by community-syndication | May 22, 2006 | BizTalk Community Blogs via Syndication
As you can see from the numerous issues posted on this blog, the tutorials are not as perfect as I had planned. While these tutorials went through a number of formal test passes, there still remain discrepancies between the tester experience and the user experience.
The change I’m making to my personal test pass is that I’ve installed the Developer edition of Visual Studio 2005. Now that may be a no-brainer, but I only recently started suspecting that this may be an issue. It turns out that the platform I’ve been using includes the Team Architect edition.
More later on the results of this experiment.
by community-syndication | May 22, 2006 | BizTalk Community Blogs via Syndication
From the newsgroups:
Suggestion for fixing: When installing VS.NET, install the visual designer. Even though the documentation states not to install it.
Original question: When trying to open the solution that is referenced in Step 5 (B2BSupplierWebService.sln) I get the following error:
‘The application for the project “http://localhost/B2BSupplierProcessPO” is not installed.’
‘Make sure the applications for the project type () is installed.’
Any ideas as to what would cause this and how to correct it?
This posting is provided “AS IS” with no warranties, and confers no rights.
by community-syndication | May 22, 2006 | BizTalk Community Blogs via Syndication
I was on IM with Mick Badran (the man behind Breeze Training) last week and he sent me a link to his new training course for those experienced Aussie BizTalk Developers! He is calling the training:
Upgrading Your Skills and Beyond….
and is targeting IT professional with previous experience working with BizTalk 2002/2004 .Net development. I like it! Check out the synopsis below;
|
Duration
Price
|
3 Days
$1450 ex GST
|
|
|
|
|
|
Aimed at
|
IT professional with previous experience working with BizTalk 2002/2004 .Net development.
|
|
|
|
Description
|
This 3-day workshop provides developers with the tools to upgrade their 2002/4 skills and perform advanced orchestrations and training partner management. They will learn to use BAS and SSO. They will practice developing, managing and customizing adapters and creating custom pipeline components, all within BizTalk rules.
|
|
|
|
At course completion students will be able to:
|
|
|
Upgrade their skills from 2002/4 to 2006
|
|
|
Completed the various Advanced BizTalk 2006 Labs.
|
|
|
Perform advanced orchestrations
|
|
|
Take advantage of Training Partner Management
|
|
|
Using BAS
|
|
|
Utilise SSO – Store sensitive configuration data securely
|
|
|
Develop and manage adapters (eg: FTP and Sharepoint)
|
|
|
Create custom pipeline components
|
|
|
Create custom adapters
|
|
|
Create and work with Rules for the BizTalk Rules Engine.
|
|
|
Students can take away course notes and lab files.
|
|
|
|
Workshop outline
This skills upgrade will include the following modules:
|
|
|
|
Module 1: Create and perform advanced orchestrations
|
|
|
Creating Correlated Orchestrations:
· singletons
· serial/parallel convoys
|
|
|
Creating and utilising Message Context Based Promoted Properties
|
|
|
Creating Messages based on advanced classes/types.
|
|
|
Creating Direct Bound Orchestrations and exploring the relationship with the MessageBox Database.
|
|
|
Creating Generic Content Based Routed Orchestrations
|
|
|
Utilising Dynamic Ports and Role Link Shapes – the easy way.
|
|
|
HOL:
|
|
|
|
Module 2: Creating Rules, Trading Partners and SSO
|
|
|
Creating Rules based on:
· schemas, static classes and databases.
· Rules Engine comprehensively explained, including the difference to Windows Workflow Rules Engine.
· Calling Rules from Orchestrations and Custom Applications
· Registry keys that control Rule/Rules Engine Performance.
|
|
|
Exploring the relationship with Trading Partner Management and BizTalk 2006. Including:
· Setting up and creating Partners.
· Creating custom Partner Parameters used in Processes
· Utilising Partners Inbox/Outbox from within BizTalk 2006
· Further Trading Partner integration – RoleLinks explained.
|
|
|
Taking advantage of SSO within solutions.
· SSO under the covers.
· Using SSO and the SSO APIs to store/retrieve secure configuration information
|
|
|
HOL:
|
|
|
|
Module 3: Exploring and Creating Adapters
|
|
|
Working with the provided Adapters
· MSMQ
· Sharepoint
· SQL Adapter
· SOAP Port (Advanced)
|
|
|
Working some community Adapters
· integrating with SQL Server 2005 Service Broker
· Integrating with Windows Communication Foundation
|
|
|
Creating Your Own Custom Adapter – How To.
|
|
|
HOL:
|
|
|
|
Module 4: Creating custom pipeline components
|
|
|
Pipelines examined
|
|
|
Creating your own Custom Pipeline Component
|
|
|
HOL:
|
|
|
|
Module 5: BAM and BAM APIs examined
|
|
|
BAM enabling your BizTalk Solutions including Related Activities
|
|
|
Setting up BAM Observation Models
|
|
|
Working with the BAM APIs to “BAM Enable” your non-BizTalk Applications (e.g. WebServices)
|
|
|
HOL:
|
|
|
|
|
Module 6: Performance and Deployment
|
|
|
Examining Performance
|
|
|
Determining the Maximum throughput of your BizTalk Solution
|
|
|
Configuring your BizTalk Environment for maximum performance
|
|
|
Creating deployment scripts to fully deploy your BizTalk Solutions
|
|
|
HOL:
|
by community-syndication | May 22, 2006 | BizTalk Community Blogs via Syndication
A colleague is currently extending an existing .NET 1.1 application, and is adding functionality to handle SAML tokens provided by an identity provider web site. He came across the problem of handing exclusive XML canonicalisation in the older version of the framework. Microsoft supports the use of pluggable ‘transform’ classes to handle XML digital signature transforms (as specified using the element in the XML Digital Signature standard. The trouble is that version 1.1 of the framework does not contain a transform class for exclusive XML canonicalisation. Every time he tried to validate the digital signature in the token he got an error message saying:
“Could not create the XML transformation identified by the URI http://www.w3.org/2001/10/xml-exc-c14n#.”
Version 2.0 of the framework has a suitable transform class called XmlDsigExcC14NTransform in the System.Security.Cryptography.Xml namespace (System.Security assembly). However, this is no use to my colleague, as the code he is working on is written for 1.1. It turns out that WSE 2.0 has a suitable class of the same name, but different namespace (Microsoft.Web.Services2.Security.Xml). This is in the Microsoft.Web.Services2 assembly.
In order to handle exclusive XML canonicalisation in Framework 1.1, install WSE 2.0 SP3. You must also register the transform class in your machine.config file. Here is the XML you need to add to machine.config:
Don’t forget to reboot your machine after changing machine.config.
This actually configures two transform classes. XmlDsigExcC14NWithCommentsTransform has the same functionality as XmlDsigExcC14NTransform, but will handle the serialisation of XML comments. The ‘name’ attributes of the elements specify the URIs that can be used in the of the digital signature. Now, when you call Checksignature() on an instance of SignedXml, the code should be able to handle the transform.
by community-syndication | May 22, 2006 | BizTalk Community Blogs via Syndication
After schemas have been published using Web Services Publishing wizard there’s a high chance we’d want to update and re-publish them later on. In the post about web services deployment automation I mention the way of scripting publishing process. Here is some more information on it.
Web Services Publishing wizard creates temp folder under the publishing target directory. There’s a file confusingly named WebServiceDescription.xml (does not have anything to do with WSDL). It contains complete information about web service publishing configuration. We can use this file to edit existing service definition. To load configuration into publishing wizard use this command:
BTSWebSvcWiz.exe config=”<WebServiceDescriptionXmlPath>”
For example you’ve published schema to http://localhost/MyServices where MyService is pointed to local physical path: C:\inetpub\wwwroot\MyServices then WebServiceDescriptionXmlPath would be C:\Inetpub\wwwroot\MyServices \temp\WebServiceDescription.xml. The schema of this xml is straightforward so you can edit manually if you want.
This is all good when we iterate and interactively apply changes to the published schemas during development cycle. For unattended builds it’s better to use web services publishing API programmatically like this:
using Microsoft.BizTalk.WebServices;
using Microsoft.BizTalk.WebServices.Description;
public static void Publish(string path)
{
WebServiceDescription desc = WebServiceDescription.LoadXml(path);
WebServiceBuilder builder = new WebServiceBuilder();
builder.WebServiceDescription = desc;
builder.ProgressCallback += new ProgressEventHandler(OnProgress);
builder.BuildWebService();
Trace.WriteLine(“Completed publishing web services“);
}
private static void OnProgress(object sender, ProgressEventArgs e)
{
Trace.WriteLine(String.Format(“OnProgress: {0} {1}“, e.Value.ToString(), e.Message));
}
As you see we even get an event that can be used for monitoring progress steps.
by community-syndication | May 22, 2006 | BizTalk Community Blogs via Syndication
I finally got a chance to take the certification last friday, and I PASSED, It wasnt easy, needs to have lot of development experience on BizTalk, It’s been in my mind since last year but due to the hectic schedule couldn’t make it,
FYI: This is now considered as a ’Microsoft Certified Technology Specialist’ certification, note: this is not mentioned in the list of exams on the MCTS page (http://www.microsoft.com/learning/mcp/mcts/default.asp)
Credential: ’Microsoft Certified Technology Specialist’
Certification/Version: ’BizTalk%u00ae Server 2004: Custom Applications’
Exam guide: http://www.microsoft.com/learning/exams/74-135.asp)
There is no skill assessment available for BizTalk 2004 certification, how ever if you are planning to go for the BizTalk 2006 then Microsoft has come up with Skills Assessment for Exam 70-235, you can take the assessment here, http://assessment.learning.microsoft.com/test/test_options.asp?regtestid=2420304&s=233
It contains around 30 -questions.
If you want some insight on the 74-135 certification,
Better have some strong development skill set on BizTalk 2004, there might be some lucky ones who might have passed, but in general I feel if you are strong in your development skills with BizTalk, then you would sail through easily, else spend time knowing the kind of errors BizTalk applications might throw and start debugging them,
by community-syndication | May 18, 2006 | BizTalk Community Blogs via Syndication
IMHO
There should be the term “Port Instance” or something else.
In HAT we can see Service Instances in two main classes: Orchestration and Messaging.
The first one is quite understandable.
But the second one is not described in BTS Help.
As I can imagine it is the part of the port which created in “per-message” basis like Orchestration.
Now “Messaging” is the term for it. But Messaging could be attached to anything in BizTalk, it is too wide term.
But I don’t mind any term. Now we DON’T have ANY term.
Nowhere in Help we could find description of this “Instance part of Port”, we could only guess.
Now this term is used on “BizTalk developer team” level.
If it is not possible to hide it from BizTalk Users then BizTalk Users have to got this term, got to description of what’s going on inside BizTalk with it.
PS
I don’t like term the “Port Instance” but it is not the point.
by community-syndication | May 18, 2006 | BizTalk Community Blogs via Syndication
A few days ago Sam Vanhoutte posted on the BizTalk newsgroups about an issue he was
having while trying to process Unicode encoded messages using the BizTalk Framework
Disassembler. Here’s the tale of what we discovered in the process.
Problem description
The error happened while trying to process an UTF-16LE encoded
XML message using the BizTalk Framework Disassembler component. The message in question
was received with no <?xml?> declaration and hence no encoding attribute, and
contained no BOM. This cause the operation to fail with the “None of the
components at Disassemble stage can recognize the data” error, suggesting that
the disassembler couldn’t figure out the document encoding.
After looking around a bit using Reflector, I noticed that the BizTalk Framework
Disassembler used the XML Disassembler (XmlDasm) underneath. Because of this I suggested
Sam he tried using my FixEncoding Pipeline component in the decode stage of his pipeline
to set the message’s Body part Charset to the correct encoding (UTF-16 Little Endian,
Codepage 1200). It worked, almost. Now the document was being recognized by the disassembler,
but the disassemble itself failed, with the following error:
System.Xml.XmlException : Name cannot begin with the ‘.’
character, hexadecimal value 0x00. Line 1, position 2.
at Microsoft.BizTalk.Component.NamespaceTranslatorStream.Read(Byte[] buffer,
Int32 offset, Int32 count)
at Microsoft.BizTalk.Streaming.MarkableForwardOnlyEventingReadStream.ReadInternal(Byte[]
buffer, Int32 offset, Int32 count)
at Microsoft.BizTalk.Streaming.EventingReadStream.Read(Byte[] buffer, Int32
offset, Int32 count)
at System.IO.StreamReader.ReadBuffer(Char[] userBuffer, Int32 userOffset, Int32
desiredChars, Boolean& readToUserBuffer)
at System.IO.StreamReader.Read(Char[] buffer, Int32 index, Int32 count)
at System.Xml.XmlTextReaderImpl.ReadData()
at System.Xml.XmlTextReaderImpl.InitTextReaderInput(String baseUriStr, TextReader
input)
at System.Xml.XmlTextReaderImpl..ctor(String url, TextReader input, XmlNameTable
nt)
at System.Xml.XmlTextReader..ctor(TextReader input)
at Microsoft.BizTalk.Streaming.Utils.GetDocType(MarkableForwardOnlyEventingReadStream
stm, Encoding encoding)
at Microsoft.BizTalk.Component.XmlDasmReader.CreateReader(IPipelineContext pipelineContext,
IBaseMessageContext messageContext, MarkableForwardOnlyEventingReadStream data, Encoding
encoding, Boolean saveEnvelopes, Boolean allowUnrecognizedMessage, Boolean validateDocument,
SchemaList envelopeSpecNames, SchemaList documentSpecNames, IFFDocumentSpec docSpecType,
SuspendCurrentMessageFunction documentScanner)
at Microsoft.BizTalk.Component.XmlDasmComp.Disassemble2(IPipelineContext pc,
IBaseMessage inMsg)
at Microsoft.BizTalk.Component.XmlDasmComp.Disassemble(IPipelineContext pc,
IBaseMessage inMsg)
at Microsoft.BizTalk.Component.BtfDasmComp.DoLoad(IPipelineContext pc, IBaseMessage
inMsg)
at Microsoft.BizTalk.Component.BtfDasmStateLoad.LoadMessage(IBtfDasmAction act,
IPipelineContext pc, IBaseMessage inMsg)
at Microsoft.BizTalk.Component.BtfDasmComp.Disassemble2(IPipelineContext pc,
IBaseMessage inMsg)
at Microsoft.BizTalk.Component.BtfDasmComp.Disassemble(IPipelineContext pc,
IBaseMessage inMsg)
at Microsoft.Test.BizTalk.PipelineObjects.Stage.Execute(IPipelineContext pipelineContext,
IBaseMessage inputMessage)
This was a clear sign that the disassembler was somehow trying to interpret the document
using the wrong encoding, even though we were clearly specifying the correct Charset.
At this point, I asked Sam to pass on the problematic file to see what I could find
out.
The Real Problem
After a lot of digging, I think I’ve discovered what seems to be a bug in the way
the BtfDasmComp component works. It seems like it doesn’t correctly decode documents
encoding with anything else than UTF-8, unless the .NET Framework’s XmlTextReader
can figure out the document encoding on it’s own. None of the requirements to be able
to do this were met by the problematic document, so apparently the disassembler was
defaulting to trying to interpret the document using UTF-8, which caused the error.
The question was then why this was happening, when we were specifying the correct
Charset for the document, and it was pretty obvious that made a difference, since
probing was succeeding. Why was the correct encoding being used while probing but
not while disassembling?
A guess
After spending a couple more hours going though the BizTalk Framework disassembler,
I can venture an educated guess as to why the wrong encoding is being used.
The first thing I noticed was that the BtfDasmComp component, just like the XmlDasmComp
component, clearly looked specifically for the part’s Chartset property (IBaseMessagePart.Charset)
both before probing and before disassembling the document. So up to here, everything
was just fine.
However, during disassembling, eventually control lands on the BtfDasmComp.DoLoad()
method, where the body part data stream of the message is replaced with an instance
of the BTFDasmTranslator class:
stream1 = new BTFDasmTranslatorStream(pc, stream1, “http://schemas.xmlsoap.org/soap/envelope/”,
“http://schemas.biztalk.org/btf-2-0/envelope”,
encoding1);
inMsg.BodyPart.Data = stream1;
Up to here, encoding1 correctly has the encoding created from the value of the part’s
Charset property. While the code correctly passes an encoding to the new stream, I
spotted that the BTFDasmTranslatorStream class is derived from the NamespaceTranslatorStream
class.
In one of the constructors for the NamespaceTranslatorStream class, a new XmlTextReader
class is created to process the document, but no encoding is specified for it; thus
letting the reader try to figure out itself what encoding the message stream has.
This makes no sense because by this point the disassembler knows exactly what encoding
to use. Here’s the relevant code:
public NamespaceTranslatorStream(IPipelineContext pipelineContext, Stream data, string
oldNamespace, string newNamespace, Encoding encoding) : base(new XmlTextReader(data),
encoding)
You can see that while the specified encoding is passed on to the base class (XmlBufferedStreamReader),
but it is not used in the creation of the XmlTextReader itself. Of course, the encoding
cannot be provided directly to it because the XmlTextReader class doesn’t contain
a constructor that contains an Encoding argument (which I think it should, really),
so instead you need to create a StreamReader object with the correct encoding and
construct the XmlTextReader on top of that, instead.
Workaround
It became clear with this that getting the messages to process correctly was not going
to be possible by simply selecting the proper Charset. Instead, Sam was able to work
around the problem successfully by creating a custom pipeline component that actually
transcoded the message from UTF-16 to UTF-8 and using that as part of the decoding
stage before the disassembler runs.

by community-syndication | May 18, 2006 | BizTalk Community Blogs via Syndication
IMHO
There should be the term “Port Instance” or something else.
In HAT we can see Service Instances in two main classes: Orchestration and Messaging.
The first one is quite understandable.
But the second one is not described in BTS Help.
As I can imagine it is the part of the port which created in “per-message” basis like Orchestration.
Now “Messaging” is the term for it. But Messaging could be attached to anything in BizTalk, it is too wide term.
But I don’t mind any term. Now we DON’T have ANY term.
Nowhere in Help we could find description of this “Instance part of Port”, we could only guess.
Now this term is used on “BizTalk developer team” level.
If it is not possible to hide it from BizTalk Users then BizTalk Users have to got this term, got to description of what’s going on inside BizTalk with it.
PS
I don’t like term the “Port Instance” but it is not the point.