BizTalk: Advanced Questions

This article is a Part 6 of the Interview Questions series.

It is time for fun!

These questions are for an Advanced level of the BizTalk Developers. I hope you don’t have a single chance to answer these questions, if you don’t have a real life experience in BizTalk Server projects.

If you have more advanced questions, please, comment them down and I will add them to this list under your name.

I will constantly add more questions into the end of list. Be in tune.
Recently I start adding new question only to the TechNet version of this article. So you also can add your questions there.

Advanced level

  • The error in BizTalk usually creates a suspended message. But routing error creates two messages. Why so? How we could utilize this feature?
  • Send ports have an “Ordered delivery” option. How it works for a File adapter, if the File protocol does not have a notion of file order?
  • Send ports have an “Ordered delivery” option but Receive ports do not have it. Why so?
  • You set up an “Ordered delivery” option in a Send Port. What is special about a Service Instance of this Port?
  • How to force an Orchestration do the ordered delivery? Is there a special “Ordered delivery” option in an Orchestration? If it is not, why?
  • Send ports have the “Priority” options, but Receive ports and Receive Locations do not have them. Why so?
  • How does the Priority feature of the Send Port work?
  • Why the Priority option can be set up only for the Send Port?
  • Send ports have the “Retry” options, but Receive ports and Receive Locations do not have them. Why so?
  • How does the Retry feature of the Send Port work? In what scenarios this feature is helpful, in
  • Send ports have a “Backup Transport” but Receive ports do not have it. Why so?
  • Send ports have a “Filter” but Receive ports do not have it. Why so?
  • Send ports have the “Maps” and “Transport”; Receive ports have “Maps” but “Transport” is associated with Receive Locations. Why so?
  • What is the difference between “Send Port Group – Send Port” relation and “Receive Port – Receive Location” relation?
  • Receive Locations have the Schedule parameters for date and time but Send Ports have the Schedule parameters only time. Why so?
  • Can we create two Send Ports with the same URL? Can we create two Receive Locations with the same URL? Why so?
  • Filter expression for the Send Port is defined at run-time, but Filter expression for the Orchestrations is defined only at design-time. Why so?
  • We created a custom pipeline component. Do we have to place it into the “<BizTalkFolder>\Pipeline Component” or install it to GAC or both?
  • How does an Orchestration make sure the message was sent successfully by one-way Send port? How does it changed for a two-way Send port?
  • What is it the “CodeList Database” property of the Schema? How to use it?
  • What is the “Property Schema Base” property of the Property schema element? It has the values: MessageDataProperyBase, MessageContextPropertyBase, and PartContextPropertyBase. What is the difference between using MessageDataProperyBase and MessageContextPropertyBase?
  • We bind an Orchestration with a Send Port. What does it do regards of the subscription?
  • We bind an Orchestration with a Receive Port. What does it do regards of the subscription?
  • How do Filters of the Send Ports and Send Port Groups work together? Say, a Send Port belongs to a Send Port Group. If this Send Port and this Send Port Group have the same Filter expression, does it create two subscriptions and, as a result, two messages are sent to the Send Port?
  • Why do we need a special Property schema for Promoted properties? What is the purpose of this schema? Distinguished properties do not use this kind of schema. Why so?
  • Properties of some BizTalk artifacts have a Tracking option. Right-click menu of some BizTalk artifacts have the “Tracking…” command. Why there is such a difference between artifacts? Why Maps do not have any Tracking options? Why Schemas have only Tracking property? Why Send Port Groups do not have any Tracking options? Why Receive Locations do not have any Tracking options? Why BizTalk Applications do not have any Tracking options?
  • When a BizTalk Assembly is deployed, is it stored in the BizTalk database or is it just referenced in the BizTalk database?
  • Why a BizTalk Assembly must be installed into GAC? Why deploying it to BizTalk database is not enough? 
  • Can you describe at least three scenarios where smart Orchestration Engine finds the errors in the messages patterns at design time (while build a BizTalk project)?
  • A Host has an "Authentication Trusted" option. What does it mean? What implication it has to the message processing? How do we have to use it / don't use?
  • Could we create an XLANGMessage in the C#/VB code? Please, provide code.
  • We can use an XmlDocument class as a Message type for receiving the untyped Xml messages in Orchestration. What .NET classes do we have to use for receiving the untyped text or binary messages in Orchestration. Why so?
  • Is the Publish-Subscribe BizTalk Engine API well defined? Where? If not, why so?
  • Does the BizTalk use the strategy “First  received, first processed” or “First received, last processed” of “First received, first processed, first sent” of something else? Why so?
    Describe scenarios, when this strategy works better, and scenarios, when this strategy works badly.
  • Are Orchestration Instances processed in order? Why so? Describe scenarios.
  • Is it possible to force the Hydration / Dehydration of the Orchestration instances, Messaging instances? How to do this? Why do this?
  • In what scenarios  will  we use the Compensations in Orchestrations? Why so?
  • The Atomic scopes in Orchestrations have a Retry feature. How does it work? Describe scenarios when it is used.
  • What serializer is used inside the BizTalk, the XmlSerializer or the DataContractSerializer? What implication has it for the real life scenarios?
  • What transform engine is the BizTalk using, an XslTransform or an XslCompiledTransform? What implication  has it for the real life scenarios?
  • The BizTalk Business Rule Engine uses a Rete engine. In what scenarios this Rete engine is the more efficient / less efficient?
  • Let’s classify the applications as Front-end, Middle-level and Back-end. Where are the best places to use BizTalk? Please, provide scenarios. What are the most important features we have to take in account?
  • What BizTalk features are the differentiators, when we compare the BizTalk Server with other alternatives? What are those alternatives?
  • What is a Heartbeat in the BizTalk? Why is it implemented? Can we change the heartbeat interval? How does this interval influence the processes in the MessageBox? 
  • What is the difference, if any, between the ESB and the Broker conceptions?
  • How to set up a custom name for a dynamic send port?
  • What kind of the dynamic ports are existed? Are there dynamic send  ports? Are there dynamic receive ports? Why is it so?
Print | posted on Tuesday, January 10, 2012 9:12 AM

Feedback

# re: BizTalk: Advanced Questions

left by Mikael Sand at 1/10/2012 11:44 PM Gravatar
Just when I thought I knew everything about BizTalk :-)

I will have fun looking up the answers to these questions.

# re: BizTalk: Advanced Questions

left by Leonid Ganeline at 1/11/2012 7:56 AM Gravatar
he-he-he.. :)

# re: BizTalk: Advanced Questions

left by Roopesh Varma at 1/18/2012 10:00 AM Gravatar
Very true... I was thinking I almost knew everything in BizTalk, Till i read this... Now kicking myself for having read this... LOL... Good one though dude...

# re: BizTalk: Advanced Questions

left by Leonid Ganeline at 1/18/2012 12:08 PM Gravatar
Enjoy.

# re: BizTalk: Advanced Questions

left by Naushad at 2/8/2012 6:04 AM Gravatar
Really great ones.

# re: BizTalk: Advanced Questions

left by kurumsal seo at 2/20/2012 12:05 AM Gravatar
I will have fun looking up the answers to these questions.

# re: BizTalk: Advanced Questions

left by Howard Edidin at 3/9/2012 9:05 AM Gravatar
Is this the new certification exam for R2?

# re: BizTalk: Advanced Questions

left by Leonid Ganeline at 3/9/2012 9:12 AM Gravatar
To Howard Edidin: I hope so :)

# re: BizTalk: Advanced Questions

left by Tayyab at 3/13/2012 8:29 AM Gravatar
good to see, i am not the only one looking for the answers.... very nice collection of questions. The good thing is that we will learn lot in finding answers to these....Thanks

# re: BizTalk: Advanced Questions

left by california shuttle bus at 4/6/2012 1:05 AM Gravatar
These all questions and answers are amazing for viewers. Now I am first time see this post, but I think if I read once again sometime, so I understand properly in these. I like these all stations and I will update you soon.

# re: BizTalk: Advanced Questions

left by Akaas Developer at 4/24/2012 4:19 AM Gravatar
for more:
BizTalk Interview Questions and Answers

Regards,
Akaas Developer

# Advanced Questions

left by hair extensions at 8/8/2012 11:15 PM Gravatar
This is good site, there are a lot of good things, I suggest you go and see.

# re: BizTalk: Advanced Questions

left by mausam at 8/24/2012 1:17 AM Gravatar
really good collection... rechecking confidence level once again.. loved the first question best.. faced the issue so many times while debugging but never actually thought of using that anyway.

# re: BizTalk: Advanced Questions

left by Prashant at 9/27/2012 10:57 AM Gravatar
You have already shattered all my confidence, so it will great if you can share their answers as well. Hoping to see answers soon.

# re: BizTalk: Advanced Questions

left by jcfdcw at 12/1/2012 5:39 PM Gravatar
BizTalk give the all answer for any problem.
jcfdcw

# re: BizTalk: Advanced Questions

left by AK at 1/4/2013 3:29 AM Gravatar
Nice Post

# re: BizTalk: Advanced Questions

left by akzakz at 1/24/2013 9:50 PM Gravatar
Good collection of ques but can anyone please share the answers also

# re: BizTalk: Advanced Questions

left by Srujana at 2/9/2013 7:24 PM Gravatar
Can you share answers aswel, pls

# re: BizTalk: Advanced Questions

left by Leonid Ganeline at 2/9/2013 9:46 PM Gravatar
@Srujana: No way. There is no king way.

# re: BizTalk: Advanced Questions

left by Purnachandra at 3/18/2013 9:27 AM Gravatar
Nice one..really help full

# re: BizTalk: Advanced Questions

left by TonAns at 6/12/2013 11:54 PM Gravatar
When a failed message is generated, BizTalk Server promotes error-report-related message context properties and demotes regular message context properties before publishing the failed message.In case of routing failure both the messages will be available

# re: BizTalk: Advanced Questions

left by Leonid Ganeline at 6/13/2013 8:44 AM Gravatar
To TonAns:
Thanks for answer!
The question is:
"The error in BizTalk usually creates a suspended message. But routing error creates two messages. Why so? How we could utilize this feature?"
So you answer about what is inside those two messages and you are right. Now try to find out Why it is so? And What we could do with those two messages for the error handling?

# re: BizTalk: Advanced Questions

left by Satya B. at 10/3/2013 7:47 AM Gravatar
Why do we need a special Property schema for Promoted properties? What is the purpose of this schema?

When expecting messages of different schemas in convoys, we have to create co-relation sets. We promote properties into property schema and use that in the co-relation set. There has to be a common schema for promoting those properties from different schemas. There has to be a way for biztalk to recognize from the messages that the fields from different schemas are same and then use the same instance of the orchestration that the first message activated.

# re: BizTalk: Advanced Questions

left by Leonid Ganeline at 10/3/2013 8:22 AM Gravatar
@Satya B.:
You are talking about why we have promoted properties. The question is about why is a special Property schema used. Say, can be SSO or BizTalkMngmDB used to store promoted properties? If it cannot, why?

# re: BizTalk: Advanced Questions

left by Satya B. at 10/3/2013 1:38 PM Gravatar
@Leonid
When the message is processed through the pipeline, its corresponding schema is realized, which has the information of its property schema and all the fields that are promoted. The disassambler component then checks this information from and promotes it.

Lets say, if it was not promoted into a property schema, then you would need SSO Application Name, SSO Application Property in the schema (which is counter intuitive to schema principles) to look up the xpath to promote. This would need an extra SSO lookup. Not only that, it would also need design time support in Visual Studio with SSO. And SSO in my opinion is not the right candidate for such storage. This is neither sensitive information nor application setting.

# re: BizTalk: Advanced Questions

left by Satya B. at 10/4/2013 8:12 AM Gravatar
Filter expression for the Send Port is defined at run-time, but Filter expression for the Orchestrations is defined only at design-time. Why so?

I was frustrated enough number of times that orchestrations dont have runtime filters.

If orchstration filters were changed during runtime, then it would affect the business logic in the orchestration. Lets say you change the filter from http://namepace.org/order to http://company.org/order, means that you want the orchestration to now process orders of a different kind.

Now lets say, you are modifying the filters to change Order.Qty which was set to 100, to now say 1000. Originally the orchestration had business logic to process orders of Qty 100. But changing the Qty to 1000, means that same business logic would no longer apply to it. If the business logic were the same, no problem. If the administrator who changes this filter has no idea what the orchestration is doing, then changing the filter at runtime is not productive.

# re: BizTalk: Advanced Questions

left by Satya B. at 10/4/2013 8:18 AM Gravatar
We bind an Orchestration with a Send Port. What does it do regards of the subscription?

The orchestration will ignore the filters of the Send port. This rule applies to Send port group --> Send port too.

# re: BizTalk: Advanced Questions

left by Jatin Kohli at 11/11/2013 8:32 PM Gravatar
Really a new way to learn things. Nice Post

# The error in BizTalk usually creates a suspended message. But routing error creates two messages. Why so? How we could utilize t

left by Ravindar Thati at 12/19/2013 2:51 AM Gravatar
Yes two messages are created,
one for failed message routing
and another for delivery notification.
you can use this delivery notification in running orchestration to check if the message has been delivered or not.

# re: BizTalk: Advanced Questions

left by Leonid Ganeline at 12/19/2013 6:50 AM Gravatar
@Satya B.
I think you are right about a motives regarding a filter for orchestrations vs. filter on send ports.
This decision is questionable but it is here.

About binding orch and port: you are right about hiding filters, but there is more. Binding adds one more part to the Subscription Expression:
for ReceivePort->Orchestration it adds
http://schemas.microsoft.com/BizTalk/2003/system-properties.ReceivePortID == {62EF13A8-0648-47D9-A8D9-C12C0F4D38D4} to the orchestration subscription;
for Orchestration->SendPort it adds
http://schemas.microsoft.com/BizTalk/2003/system-properties.SPTransportID == {99458E9C-D23B-4A92-9F53-A10CB4F12B52}
- kind of unsymmetrical. :)

@Ravindar Thati:
You are perfectly answered a question about delivery notification message. Unfortunately it was not in question :)

# re: BizTalk: Advanced Questions

left by Dhinesh at 2/11/2014 6:34 AM Gravatar
Tough and good questions too.

# re: The error in BizTalk usually creates a suspended message.But routing error creates two messages.Why so? How we could utilize

left by Ravindar at 3/10/2014 12:11 AM Gravatar
Actually when i did not enable routing failure on receive port, it created 2 messages. One with actual routing failed message and another for routing failure report. i did not find any context properties in routing failure report that we can use as it did not contain properties like error.description etc.


And when you enable Routing failure on Receive port, it created 3 messages. One for actual routing failed message and another 2 for Routing failure report with different context properties in them.

So now we can use this routing failed report like below
subscribe for this report in orchestration with filter say Error.ErrorType="FailedMessage". And then in orchestration read the context property Error.Description and map it to required output schema to deliver the error desription I.E error reason.

# re: BizTalk: Advanced Questions

left by Jay Mishra at 8/5/2014 2:49 AM Gravatar
@Leonid
we use a different property schema so that it wont be overload searching every elements from their respective schema whenever we access them .keeping it in one schema reduces the overload of going through the entire schema to find the value and hence makes it faster.

# re: BizTalk: Advanced Questions

left by Jay Mishra at 8/5/2014 2:57 AM Gravatar
@Leonid
Q)Can we create two Send Ports with the same URL? Can we create two Receive Locations with the same URL? Why so?
Yes we can create both send ports with same URL as well as receive location with same URL.
for the later scenario suppose we have a scenario in which we have to pick messages from a same URL but we have to process them differently as files starting with 'm' needs to be processed immediately and files starting with 's' in a schedule timed.we can do that by having to recv location both enabled and one have a time slot to pick up.

# re: BizTalk: Advanced Questions

left by Jay Mishra at 8/5/2014 3:31 AM Gravatar
and both the recv location will have different file mask.

# re: BizTalk: Advanced Questions

left by Leonid Ganeline at 8/5/2014 9:13 AM Gravatar
@Jay: Thank you for answers!
File masks are parts of URL, right? So, one Send Port URL can be the same as the other but not the Receive Location URL. BizTalk does not permit to create a RL with duplicate URL.

# re: BizTalk: Advanced Questions

left by Satya B at 12/17/2014 11:51 AM Gravatar
Why a BizTalk Assembly must be installed into GAC? Why deploying it to BizTalk database is not enough?

Yes, you can deploy the assembly to biztalk database. I would rather have it on the disk drive as a file. But you would really miss out on the security that GAC + .Net CLR provides. Why invent new places to hide away dlls when .Net provides a perfect home for these files.

# re: BizTalk: Advanced Questions

left by Satya B at 12/17/2014 12:01 PM Gravatar
Why do we need a special Property schema for Promoted properties? What is the purpose of this schema? Distinguished properties do not use this kind of schema. Why so?

Ans: Correlation. It is like a junction table in database. But what its really saying is the a property P1 in schema S1 is the same as a property P2 in schema S2.

# re: BizTalk: Advanced Questions

left by Satya B at 12/18/2014 5:54 PM Gravatar
Another reason is MessageContextPropertyBase. Since these types of promoted properties aren't the schema, it makes sense to have a seperate property schema.

# re: BizTalk: Advanced Questions

left by Vishal Sharma at 5/23/2015 12:28 AM Gravatar
@ Leonid.
Really Nice set of questions.

Good work Leonid!

# re: BizTalk: Advanced Questions

left by Orchiee at 8/13/2015 8:39 AM Gravatar
can somebody provide the answers to all these questions?

# re: BizTalk: Advanced Questions

left by Anitha at 4/21/2016 6:36 AM Gravatar
can we have answers please for the above advanced questions

# re: BizTalk: Advanced Questions

left by Leonid Ganeline at 4/21/2016 8:53 AM Gravatar
Of course, you cannot. But you can send me your questions and I add them to this list with your name :)

# re: BizTalk: Advanced Questions

left by BlueSnowXYZ at 7/27/2016 11:31 AM Gravatar
I would like to take a stab at "why 2 msgs are created for routing failure"

Ans- Since BTS supports bidirectional req-resp scenarios. In case of messaging, it is essential to inform the caller of the request what actually happened to the request. In such cases the BTSCorrelationID will be used to inform caller that incoming request failed.

hope i got it right...

# re: BizTalk: Advanced Questions

left by Leonid Ganeline at 7/27/2016 12:39 PM Gravatar
@BlueSnowXYZ: But if the actual request is suspended, can we subscribe to it and then send notification to caller? Yes, we can.
But you might be right. Say, request is suspended then it successfully replied. As a result we don't have a trace of this temporarily failure. Are those two messages help here? ... Not sure.
Say, the request is suspended. Why don't combine all information from both messages in the suspended request in the message properties? Why are two messages created?
BTW When the suspended message is successfully replied, both messages are gone, right?
Post A Comment
Title:
Name:
Email:
Comment:
Verification: