BizTalk

What is BizTalk Server?
BizTalk is a messaging based integration tool. It consists of several tools like Business Processes (Orchestrations), Business Activity Monitoring (BAM), HAT (Health and Activity Tracking), Rules Engines, BizTalk Server Administrative Console etc.
Microsoft BizTalk Server (or simply "BizTalk") enables companies to automate business processes, through the use of adapters which are tailored to communicate with different software systems used in an enterprise. Created by Microsoft, it provides enterprise application integration, business process automation, business-to-business communication, message broker and business activity monitoring.

What is MessageType in BizTalk Server?
BizTalk sets a message context property called BTS.MessageType. This is a concatenation of the document namespace and Root Node Name in other words Message Type is a BizTalk System property that is promoted inside a Pipeline. It is made up of Document Name Space and Root Node Name.

What is MessageBox?
MessageBox is a SQL server database along with messaging agent. See MSDN MessageBox.

What is the purpose of MessageBox?
Store all messages and context received.
Stores all subscriptions.
Stores all Host Queues.

What happens to the messages coming into MessageBox?
Checking the subscription table is the First thing when messages come in MessageBox and a copy of the message is sent to the subscriber.

How does MessageBox treats messages without subscriber?
The message is suspended when there are no subscribers found for it.

How many receive locations can a single receive port have?
Receive port can have any number of receive location.

Types of subscription in BizTalk?
Two types of subscription 
1. Activation 
2. Instance

Instance subscriptions are removed from the message box while Activation subscriptions remain active as long as the orchestration or send port is enlisted.

Is it possible to have various  ports with the same name in two applications?
No. The names of the various ports must be unique, not just inside an Application but for the whole  BizTalk group.

In which state can a send port does not subscribe to a message?
In Unlisted state send port does not subscribe to any messages and no messages will be sent through the port.

What could be the reason for having multiple receive locations inside one Receive port?
The reason for having multiple receive locations inside one Receive port is to have the ability to receive different messages from different locations and having BizTalk treat them as if they were received from the same place and/or had the same message type.

How can we check what's going on inside BizTalk Server?
The group hub gives the user an overview of what is currently going on inside BizTalk.

Can a send group be a part of multiple send group?
No only static send ports can be part of send group.

Ordered delivery on send port has serious performance impact, why?
Because only one thread can submit messages through the port and each message has to wait for messages through the port and each message has to wait for the message before it can be processed.

Ordered delivery does not have an effect even after it is set, when this might happen?
When back up transport is also applied.

Can a message in a MessageBox be changed?
Messages in BizTalk are immutable after constructed and the message is considered constructed after it is placed into the MessageBoxDatabase.

What happens when we run MSI package?
When we run MSI packages, it will register the application with Windows Operating System and then load any related assemblies in the Global Assembly Cache.

In how many ways can we do the BizTalk Application deployment?
BizTalk Application deployment can be done using the following:
  • Deploying from Visual Studio
  • Building a Microsoft Installer (MSI) package that can be exported or imported between environments.
  • Using command line-based tools such as MSBuild and BtsTask.
  • Using community frameworks, such as BizTalk Deployment Framework and NANT.

How it's possible to work with several pipelines as soon as new Application is created?
BizTalk.System is already referenced in all new applications, as a result of this we can work with several pipelines as soon as a new application is created.

What happens to message when all subscribers have received their message?
BizTalk will no longer need to hold on the message and the message will be removed from BizTalk.

What can be done to avoid loss of messages in a scenario where we know beforehand unavailability of the destination system, but source system is publishing messages?
In this scenario we can stop the send port bound to the destination system. This way the messages will lie in a queue inside Messagebox. Subsequently, we can start the send port when the destination system is available.

When do Error Report properties get promoted?
When Failed message routing is enabled and if an error occurs at the port, then the message will have all the regular context properties unprompted and instead have some error-specific context properties promoted - all in the ErrorReport Namespace e.g. ErrorReport.ErrorType, ErrorReport.ReceivePortName etc.

Which is the first step to enable Subscription?
A filter on the send port is the first step to enable subscriptions in BizTalk.

Can Application be in start state when host is Offline?
Yes. But this application will not function properly.

When don't filters on send port apply?
If a send port is directly bound to an orchestration port,then filters do not apply.

How to apply maps on send port group?
Maps can't be applied to Send Port Group.

What effect does creating a new Host have on the Database?
When the new host is created it results in a new entry in the Host table in the Management database and also a new Host queue in the MessageBox.

The MessageBox database holds all the messages that are processed, what about messaging Objects?
Messaging objects viz. Receive Ports, Receive Locations, Send ports, etc. are stored in the Management Database.

Is there any change in the database when the filter is added to Send port or when Activate property of Receive shape is set to true?
Yes. An entry is added in subscription table.

What databases are part of every solution?
BizTalk Server Management database, MessageBox databases, Tracking database, and SSO database are four database which are used by BizTalk server runtime operations. It is the component that encapsulates and abstracts the database component and is the interface used by BizTalk Server to interact with the MessageBox. The Message Agent is a Component Object Model (COM) component that provides interfaces for publishing messages, subscribing to messages, retrieving messages, and so on. This interface is the only mechanism used by other BizTalk Server components, including the adapter framework and orchestrations, to interact with the MessageBox.

Which service looks after known issues in the database?
Monitor BizTalk Server, this job scans the BizTalkMgmtDb, BizTalkMsgBoxDb and BizTalkDTADb database for any known issues, including orphaned instances.

How would you define database role in context to BizTalk?
The database is used to store the data about the Message and other data required for processing it, along with the help of SQL Server Agent Jobs.

Which SQL Agent job runs continuously?
MessageBox_Message_ManageRefCountLog_BizTalkMsgBoxDb is the job which runs continuously in spite of scheduled to run once per minute.

Messages without subscribers are removed, how?
MessageBox_Message_ManageRefCountLog_BizTalkMsgBoxDb determines when a message is no longer referenced by any subscriber. When no subscriber found it starts MessageBox_Message_Cleanup_BizTalkMsgBoxDb which removes the unused message.

Does implementing BAM require more database?
Yes. BAM Analysis, BAM Archive, BAMAlertsApplication, BAMAlertsNSMain, BAM Primary Import database and BAM Star Schema can be used to implement BAM solution.

Which database stores the configuration information for receive locations?
Single Sign-On database (SSODb) securely stores the configuration information for receive locations, other known secret information is stored in the BizTalkMgmtDb.

How many databases are used for implementing BRE?
In addition to the default 4 databases only one database, i.e. Rule Engine Database.

What are the options for upgrading BizTalk Server Database?
There are two ways for upgrading 
1.In Place upgrade 
2.Transfer Upgrade.

How many states have the Receive Pipelines and the Send Pipelines?
The receive pipeline consists of four stages
  1. Decode Stage: This stage is used for components that decode or decrypt the message.
  2. Disassemble Stage: This stage is used for components that parse or disassemble the message.
  3. Validate Stage: This stage is used for components that validate the message format.
  4. Resolve Party Stage: This stage is a placeholder for the Party Resolution Pipeline Component.

Regarding to the send pipelines, they consist of three stages:
  1. Pre-assemble Stage: This stage is a placeholder for custom components that should perform some action on the message before the message is serialized. 
  2. Assemble Stage: Components in this stage are responsible for assembling or serializing the message and converting it to or from XML. 
  3. Encode Stage: This stage is used for components that encode or encrypt the message.

In a BizTalk project how to consume an external web service?About Consuming Web Services
  • Adding Web References
  • Constructing Web Messages
  • Creating Web Ports
  • Considerations When Consuming Web Services

Solution1
You can consume (call) a Web service from your orchestration by using Web ports. To consume a Web service from an orchestration, you create a Web port and construct Web messages.
You can use SOAP headers with the consumed Web service, change the URI of a consumed Web service, and dynamically set the URI for a consumed Web service.
Important  An orchestration is required to consume a Web service. You cannot use the SOAP send port in scenarios that only use messaging. SOAP send ports must be used with an orchestration.

Solution2
Add configuration port and on port type select web service port type it will automatic create appropriate request and response port.

Here you need to assign input message value to Web service request message

What are the security groups created by BizTalk?
  • SSO Administrators
  • SSO Affiliate Administrators
  • BizTalk Server Administrators
  • BizTalk Server Operators
  • BizTalk Application Users
  • BizTalk Isolated Host Users

Create the BizTalk Windows Service Accounts (Windows Users)
Full Name
User logon name
Enterprise Single Sign-On Service
SSOService
BizTalk Administrator
BTSAdmin
BizTalk Host Instance Account
BTSAppHost
BizTalk Isolated Host Instance Account
BTSIsolatedHost
Business Rule Engine Update Service Account
ReuService
Add the Windows Service Accounts to their respective Groups.
Windows Group
Windows User
Server Administrators
biztalk\BTSAdmin
SSO Administrators
biztalk\BTSAdmin and biztalk\SSOService
BizTalk Application Users
biztalk\BTSAppHost
BizTalk Isolated Host Users
biztalk\BTSIsolatedHost
What is a host?
A BizTalk host is a logical container within a BizTalk Server group that can house BizTalk Server items such as adapter handlers, receive locations (including pipelines), and orchestrations. You typically group items that have similar scale properties into a particular host.

Host Instances
After you create a host (a logical container), you can add physical BizTalk Server computers (host instances) to the host. A host instance runs as an NT Service on the designated BizTalk Server. For each host, you can have only one instance of a particular BizTalk Server computer. However, you can have instances of a particular host on one or more computers, and you can have instances of different hosts on a particular computer

Receiving. These items do the initial processing of messages after they are picked up in a receive location. When a host contains a receiving item, such as a receive location or pipeline, it acts as a security boundary, and the message decoding and decrypting occurs in a pipeline within the host.
Sending. These items do the final processing of messages before they are sent out to the send port. When a host contains a sending item, such as a send port or pipeline, the host acts as a security boundary, and the message signing and encryption occurs in a pipeline within the host.
Processing. These items process messages based on the instructions in an orchestration

Isolated and In Process Host
BizTalk hosts are one of two types, In-process or Isolated. In-process hosts run inside of the BizTalk Server runtime process and Isolated hosts do not run in the BizTalk Server runtime process. The following table lists the items that each of these host types may contain.
In-Process
  • Orchestrations
  • Adapter Send Handlers
  • Adapter Receive Handlers other than HTTP and SOAP
IsolatedHTTP and SOAP Receive Handlers

Zombie message
  1. Terminate control messages – The orchestration engine allows the use of control messages to cancel all currently running work in a specific orchestration instance. Since the control message immediately halts the running orchestration, zombie instances are not unexpected. A number of Human Workflow related designs tend to use this mechanism as well as some other designs.
  2. Parallel listen receives – In this scenario the service instance waits for 1 of n messages and when it receives certain messages it does some work and terminates. If messages are received on a parallel branch just as the service instance is terminating, zombies are created.
  3. Sequential convoys with non-deterministic endpoints – In this scenario, a master orchestration schedule is designed to handle all messages of a certain type in order to meet some type of system design requirement. These design requirements may include ordered delivery, resource dispenser, and batching. For this scenario, the tendency is to define a while loop surrounding a listen with one branch having a receive and the other having a delay shape followed by some construct which sets some variable to indicate that the while loop should stop. This is non-deterministic since the delay could be triggered, but a message could still be delivered. Non-deterministic endpoints like this are prone to generating zombies




4 comments: