Subscribe: BizTalkers (Tareq Ali)
http://biztalkers.blogspot.com/atom.xml
Added By: Feedage Forager Feedage Grade B rated
Language: English
Tags:
biztalk  code  create  message  messages  microsoft  namespace  new  pipeline  port  send  server  source control  source  xml 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: BizTalkers (Tareq Ali)

BizTalkers (Tareq Ali)



Sharing BizTalk 2004,2006 Exprience



Updated: 2015-09-16T21:29:52.509+02:00

 



SQL Server 2008 has been released

2008-08-24T13:47:39.641+03:00

I noticed that I can download SQL Server 2008 from my MSDN subscription section, I saw the following edition:
SQL Server 2008 Developer
SQL Server 2008 Enterprise
SQL Server 2008 Workgroup
and
SQL Server 2008 Web

Web edition seems to be new in this release, here is the descirption:
SQL Server 2008 Web is a low total-cost-of-ownership option for Web hosters and Web sites that provide scalability and manageability capabilities for small to large scale Web properties(image)



Subscriptions Viewer

2008-04-27T10:28:45.908+03:00

Subscription Viewer was a very useful utility that was installed in the BizTalk installation folder to see the subscriptions. In Biztalk 2006 you can see the susbcriptions in the BizTalk using the Administration Console.

(image)
Double click on the subscription to subscription detials.

(image) (image)



Some good interview questions: local-name function - Persistance Points in Orchestration

2008-05-07T22:43:16.073+03:00

Why do we need to use the local-name function in our XPath expressions?

"local-name" function returns the node name in XML Document ignoring the namespace, for example the following XPath expression should fail if the xml document has namespace prefix:

/Order/OrderID

But this will never fail.
/*[local-name()=’Order’]/* [local-name()=’OrderID’]

What is the problem with the above approach?

We are ignoring the namespace completely which is not correct, we have sovled the problem by introducing a new one.
To overcome this we should include the namespace in the above expression as follows:
/*[local-name()='Order' and namespace-uri()='http://namespace']/*[local-name()='OrderID' and namespace-uri()='']



Sample Data:

(image)

Notice the use of the prefix in the above sample date, we have prefix "nso" this prevent using the simple XPath expression mentioned above without using the local-name

(image)



BizTalk Naming Conventions

2008-04-26T14:33:45.761+03:00

I have been through the BizTalk Naming conversions, I think this is a good starting point. However, I don't agree with using Hungarian notation in orchestration shapes as well as using underscore.
For example: Scope_CreditServiceCall, Rcv_rawCreditReport

My reasons are:

1- It doesn't follow the same standard in the first section named "BizTalk Messaging Artifacts"
2- Microsoft doesn't recommend using Hungarian notation in .NET coding standard.
3- If you see list of orchestration objects in a tree it will be difficult to find the object if you have a big list.(image)



SQL Server Adaptor Ignores TimeOut Property

2008-04-27T10:48:11.472+03:00

If you tried to increase the timeout in you SQL Server Port, it will not be saved in the connection string. A workaround is to edit the connection string manually in the property pane (don't open the connection property dialog).
You need to change it everytime you change the adaptor settings

;Connect Timeout=500;

(image)

(image)



UnZip Pipeline components A2Z

2007-01-03T01:12:01.848+02:00

I have read this blog entry which is good start for anyone interested in writing UnZip pipeline component for BizTalk, but when you try the code you notice it doesn't work because the code doesn't promote the properties to the newly created messages. When you read the comments, you can find that you need to add some code. This is not only the issue, I'm going to discuss all issues and solutions here.My Pipeline does the following (more on that later):1. Promotes the Message Type context Property based on the Pipeline properties.2. Handle directories in zip file (all files are extracted from zip file even if it is inside any folder)3. Reader the stream in the proper way (the articles code doesn't work actually, and I got an exception).4. Handle Password for zip files (A property in Pipeline)public void Disassemble(Microsoft.BizTalk.Component.Interop.IPipelineContext pc, Microsoft.BizTalk.Message.Interop.IBaseMessage inmsg){Stream strmZipFile;IBaseMessagePart msgPart;msgPart = inmsg.BodyPart;strmZipFile = msgPart.GetOriginalDataStream();ZipInputStream oZipStream = new ZipInputStream(strmZipFile);if (!string.IsNullOrEmpty(mPassword))oZipStream.Password = mPassword;try{ZipEntry sEntry = oZipStream.GetNextEntry();while (sEntry != null ){if (sEntry.IsDirectory){sEntry = oZipStream.GetNextEntry();continue;}MemoryStream strmMem = new MemoryStream();byte[] buffer = new byte[4096];int count = 0;while ((count = oZipStream.Read(buffer, 0, buffer.Length)) != 0)strmMem.Write(buffer, 0, count);strmMem.Seek(0, SeekOrigin.Begin);msgPart.Data = strmMem;IBaseMessage outMsg;outMsg = pc.GetMessageFactory().CreateMessage();outMsg.AddPart("Body", pc.GetMessageFactory().CreateMessagePart(), true);outMsg.BodyPart.Data = strmMem;for (int iProp = 0; iProp < inmsg.Context.CountProperties; iProp++){string strName;string strNSpace;object val = inmsg.Context.ReadAt(iProp, out strName, out strNSpace);// If the property has been promoted, respect the settingsif (inmsg.Context.IsPromoted(strName, strNSpace))outMsg.Context.Promote(strName, strNSpace, val);elseoutMsg.Context.Write(strName, strNSpace, val);}if (this.Namespace != null && this.RootElementName != null){string messageType = string.Format("{0}#{1}", this.Namespace, this.RootElementName);outMsg.Context.Promote("MessageType", "http://schemas.microsoft.com/BizTalk/2003/system-properties", messageType);}_msgs.Enqueue(outMsg);sEntry = oZipStream.GetNextEntry();}}catch (Exception ex){Debug.Write(ex.Message + Environment.NewLine + ex.StackTrace);throw;}You notice that I have two property "Namespace" and RootElementName, I use it to promote "MessageType" property, the author suggests to load xml document to get the message type, which is not a good idea for large message, so I have created those two properties. This means that all messages come out of the pipeline will have same type and root element (your zip file will contains same message types, not bad limitation). Note: - I will write a version to use XmlReader to get the message Namespace and Root Element.- We also copy the original message context to each newly created message (this code comes from the author feedback in the code project)His code to read and write the stream doesn't work and I got the following exception from "Invalid offset/count combination", I changed the way we read/write the stream and it is working fine now.Last issue to discuss is: what if you have a message that contains envelope and you want to execute the XmlDisassemble pipeline component after running the Unzip pipeline. You can't do that because the Disassemble stage only allows one components to be run (first match).There is a workaround, you can move unzip code to the Decode stage, but you will have a limitation, your zip file should contain one message only, because the decode stage receives single message and outputs single message. You can find a complete sample in Pro BizTalk book, if you don't have the book, don't panic, d[...]



Custom Pipeline Components in BizTalk 2006 Best Practise

2006-12-17T21:13:38.256+02:00

1. You will find a lot of people talking about create custom pipelines.
2. Read Stephen comment on using Custom pipeline
3. To add you pipeline to the MSI package:
A. Deploy you BizTalk project
B. Open BizTalk Admin Console (BTSmmc.msc)
C. Open Resources node and Add you new "Add new resources" context menu.
D. Check 'Add to Global Assembly Cache on MSI Import'


(image) (image)



BizTalk XmlNamespace Resolver Pipeline

2006-12-17T15:32:03.020+02:00

Namespaces in BizTalk is an essential part of the input documents, although, BizTalk can deal with messages without namespaces, it is not the best practice.
Suppose you have an incoming xml message without a namespace and it may have some processing instructions or doctype .
The following disassemble pipeline does that clean up and add the namespace to the incoming document.
When you complete and deploy your custom pipeline component, you need to add new custom pipeline in your BizTalk Project, and then set the namespace preopery.
All messages pass thorough this pipeline will have the same namespace and it will be cleaned up from any processing instructions.


Note:
I recommend read this article (UnzipDisassembler - A custom pipeline component for BizTalk Server 2004).Then use BizTalk Server Pipeline Component Wizard in the disassemble method, just copy and past that code, you will need to define a preoperty of name 'Namesapce' during the new pipline component wizard.
I will not write a complete steps, the important thing here is dealing with streams in the disassemble method.


public void Disassemble(Microsoft.BizTalk.Component.Interop.IPipelineContext pc, Microsoft.BizTalk.Message.Interop.IBaseMessage inmsg)
{
XmlAttribute namespaceAttribute;
string rootNodeName;
XmlDocument originalXmlDocument;
XmlDocument newXmlDocment;
MemoryStream memStream;
byte[] data;


originalXmlDocument = new XmlDocument();
originalXmlDocument.XmlResolver = null;

originalXmlDocument.Load(inmsg.BodyPart.GetOriginalDataStream());

// This not bad in case of small message size.
newXmlDocment = new XmlDocument();
newXmlDocment.LoadXml(originalXmlDocument.DocumentElement.OuterXml);
namespaceAttribute = newXmlDocment.CreateAttribute("xmlns");

// That is not accurate, User should specify the root node or we read that information from the schema.
rootNodeName = newXmlDocment.FirstChild.Name;
namespaceAttribute.Value = mNamespace ;
newXmlDocment.DocumentElement.Attributes.Append(namespaceAttribute);

inmsg.RemovePart("Body");
inmsg.AddPart("Body", pc.GetMessageFactory().CreateMessagePart(), true);


memStream = new MemoryStream();
// what about UTF16 messages?
data = UTF8Encoding.UTF8.GetBytes(newXmlDocment.OuterXml);
memStream.Write(data, 0, data.Length);
memStream.Seek(0, SeekOrigin.Begin);
inmsg.BodyPart.Data = memStream;
inmsg.BodyPart.ContentType = "xml";
inmsg.Context.Promote("MessageType", "http://schemas.microsoft.com/BizTalk/2003/system-properties", mNamespace + "#" + rootNodeName);

_msgs.Enqueue(inmsg);
}(image)



Visual Build Professional

2006-06-17T02:07:01.826+03:00

Currently, I'm developing a SOA application where we have a lot of projects, the main challenge was to build good CM (Configuration management) strategy.
We wrote a lot of scripts to follow continues integration guideline from Martin Folwer (nightly build, create distributed application, notify our client about a new build, upload to FTP , etc.)
We put a lot of effort into that scripts and we are in very good shape now, but today, I find this tool, Visual Build Professional , which I think it would have saved a lot of time for me.
anyway, I got an evaluation version, I will play with it and I will publish my feedback soon.


(image) (image)



VS 2005 Web Application Project - BizTalk Publishing Wizard

2006-06-17T01:46:38.433+03:00

VS 2005 Web Application Project has been release, I like it so much. It replaces web application templates in VS.NET 2005 so that we can use the old build model (which I like).
BizTalk publishing Wizard uses the new project model for generated web services (i.e. No project file is there, just solution file). I don't like this approach.
Today, I have tried to create a new project (Web Service project) using vs.net 2005 Web Application Project and I sucessfully move the generated code to it.
I was able to test my receive location againts the newly created web services.
See the picture below so you can image what could be done (Just copying the files to the new project, but take care of the directory structure).

(image) (image)



BizTalk 2004/2006 and Visual Source Safe

2006-06-16T15:45:07.320+03:00

Now every one can use Source Safe 2005 to store (Map, Schemas, etc.). In VSS 6.0 we used to tell VSS to deal with biztalk files as binary, becuase VSS wouldn't have understood the unicode files, that is good news.
An idea comes to my mind, what about developing visualizer to compare biztalk maps and orchestration, so you can see the dif. instead of tracking the xml files.(image)



Custom Trace Listener (Debug) for EntLib

2006-06-16T14:44:58.166+03:00

Why reinvent the wheel and create this custom trace listner?
The current custom trace listerner in the documentation uses debug .write, which doesn't work in the "release" mode.
I would like to show trace message to debugview even in release mode.
OutputDebugString do the magic, see the code below
using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Microsoft.Practices.EnterpriseLibrary.Common
.Configuration;
using Microsoft.Practices.EnterpriseLibrary.Logging
.Configuration;
using Microsoft.Practices.EnterpriseLibrary.
Logging;


namespace TareqCo.Framework.Logging
{
[ConfigurationElementType
(typeof(CustomTraceListenerData))]
public class DebugTraceListener:Microsoft.Practices.
EnterpriseLibrary.Logging.TraceListeners.CustomTraceListener
{
[DllImport("kernel32.dll", SetLastError = true)]
public static extern void OutputDebugStringA
(string message);

public override void TraceData(TraceEventCache eventCache,
string source, TraceEventType eventType, int id,
object data)
{
if (data is LogEntry && this.Formatter != null)
{
this.WriteLine(this.Formatter.Format(data as
LogEntry));
}
else
{
this.WriteLine(data.ToString());
}
}

public override void Write(string message)
{
OutputDebugStringA(message);
}

public override void WriteLine(string message)
{
OutputDebugStringA(message);
}

}
}(image)



All you need to know about Generics

2008-04-26T14:25:13.384+03:00

I'm fan of Generics and I used it immediately when it is released, It reduced our amount of code so much
Join our Group Of Experts @ http://url123.com/27gd6
Find articles and tutorials @ http://url123.com/2shdd
Learn about Generic collections @ http://url123.com/27rdu
Read an extensive introduction @ http://url123.com/2swdy
Read about the pros and cons @ http://url123.com/2s5d3
Good book
Professional .NET 2.0 Generics

Good Luck all of you...(image)



SourceSafe Binding Remover (VS 2003 only)

2006-06-17T02:09:06.363+03:00

Very good tool:
Removes all SourceSafe bindings from a selected folder, including subfolders. It displays the file names, and won't delete unless the checkbox is checked so you can see if any important files would be deleted. There is no option to selectively remove files from the list to be deleted. SourceSafe bindings are plain text files ending in scc, either .scc or .vssscc, but the pattern matches any file with an extension ending in *scc. You can change the pattern match in the application config file (need to include the * for wildcard matches).

http://www.gotdotnet.com/workspaces/workspace.aspx?id=05b9332b-3b4a-4239-be2f-2a0f86f9ce71(image)






BizTalk MSMQ Adaptor

2006-08-07T11:30:05.763+03:00

Nobody can admit that MSMQ is a key tool in SOA, so Microsoft comes up with a new adaptor, stable and easy to use adaptor.

To test this adaptor, do the following:
1.
Create a new Queue Name "myQueue", make sure that BizTalk can read messages from this queue. i.e. make sure that the windows account used for BizTalk services has sufficient permission to read from the queue.
2.
Create a new class that will be serialized and passed to MSMQ, any application can create instance from this class, sets it properties and send it to MSMQ, then you can pick it up using MSMQ adaptor.
Note: this class should be placed in a common assembly that can be shared between all other applications.

using System.Xml.Serialization;

///
/// Reperests a message to be send to MSMQ and picked up BizTalk orchestration.
///

[XmlRoot("MSMQMessage", Namespace=
"http://MyCompany.Schemas.MSMQMessageSchema")]
public class MSMQMessageMessage
{
///
/// Creates a new instance.
///

public MSMQMessageMessage()
{
}


///
/// Creates a new instance.
///

/// XML file path.
public MSMQMessageMessage(string XMLFilePath)
{
this.XMLFilePath = XMLFilePath;
}


private string mXMLFilePath;

///
/// Gets or sets the XML file path.
///

///
public string XMLFilePath
{
get { return mXMLFilePath; }
set { mXMLFilePath = value; }

}

}

}

3.
Create a console Application that send message to you queue. copy and paste the following:
//Submit message to MSMQ
string fileName = "C:\xyz.xml";
MSMQMessageMessage msg = new MSMQMessageMessage (fileName);
// create a message queue if
MessageQueue MQueue =new MessageQueue ("\private$\myQueue");
// create the message and set the base properties
Message msmqMsg = new Message (msg);
msmqMsg.Label = fileName;
// send the message as part of the transaction
MQueue.Send (msmqMsg,MessageQueueTransactionType.Single);
// commit the transaction
// close the mesage queue
MQueue.Close();

4.
Now the message is serialized and placed in MSMQ.

5. Create a new BizTalk Project, reference that assembly that contains "MSMQMessageMessage" type.

6.
Create a message and give it a type "MSMQMessageMessage" from the referenced assemblies.

7.
Create a receive and send port, those ports will send and receive the message which we have just defined.

Note: Ports bindings should be "Later"

8.
Deploy you orchestration and create send and receive "physical" ports, receive port‘s transport type should be "MSMQ", give it the queue name. Send port’s transport type should be file, so that it will leave the messages on specific folder.

9.
Bind the orchestration and run the console application to send message to MSMQ.

Note: I will provide you will a complete code sample soon.(image)



BizTalk and COM+ Transaction

2005-07-02T20:56:16.296+03:00

BizTalk and COM+ Transaction

If you would like to call a COM+ Serviced Component from a BizTalk Scope shape, it is very easy, but take care, all your Serviced Components shouldn’t have attribute of “RequiresNew”.

When you create an atomic scope shape, BizTalk creates a COM+ service behind the sense,I think so, this Serviced component uses “RequiresNew”. If any component of your COM+ components “RequiresNew” you should get an exception.

To try this:
Read this article Creating COM+ Objects using EnterpriseServices in .NET

Read this article, compile, deploy the code, call it from your orchestration, you should get an error from BizTalk in the event viewer. Change the attributes from “RequiresNew” to requires, everything will be fine.


Note:
you can use the code from the above article to make sure that transaction works as you expected.

read this useful article.(image)



[Sharepoint] ICellProvider, ICellConsumer

2005-07-02T21:04:36.816+03:00

Did you try before to implement a webpart that implements two interfaces? You can do that in two ways:
1.
Create two separate class, each one implements a one of the interfaces and the main webpart class should be drived from the webpart base class. Create 2 instances from the classes you have just created and pass them to the register interface method, see for a complete sample this.

2.
The webpart class should be derived from WebPart base class and implements the two interfaces, I recommend the first option, but in my early days with sharepoint I tried this option, I faced a problem because my webpart implements ICellProvider and ICellConsumer: (ICellProvider.CellConsumerInit) and (ICellProvider.CellProviderInit) has the same name, so you want to use the interface name to differentiate between the method and the event, to do this you have to "Property syntax" to define you event, this is the trick.
See the code here.

I.e. you can't say "event CellConsumerInitEventHandler CellConsumerInit" but you have to say "event CellConsumerInitEventHandler ICellConsumer.CellConsumerInit" instead.
Because we implenent the interface in this way we have to use property syntax(image)



[sharepoint]Be blind with event handler

2006-07-05T18:31:43.760+03:00

If you are developing sharepoint event handler take care of the following:
1.
Enable Event handler in sharepoint server:
Windows SharePoint Services --> Configure virtual server settings --> Pick server from list --> Virtual Server General Settings --> Event Handlers --> On

2.
Every time you change the code you have to:
- Remove old version from GAG
- Re Add the assembly into the GAG
- IISRESET
- You new assembly should be loaded and you can debug it using the W3wp.exe
See my post about this here

3.
Be careful when you edit document library settings for assembly name and class name: user reflector, see pics below to get assembly name and class name: see figure(1) and figure (2), the right values are in read rectangle.
Note: for the class name you have to find it implements "ILISTEVENTSINK" as whon in figure (2)(image)



[Sharepoint 2003]There is an error in XML document (1, 40)

2006-11-24T06:29:29.176+02:00

There is an error in XML document (1, 40)
If you are a sharepoint 2003 webpart developer and see this error, it seems to be a general error which indicate nothing. I faced this error and I figured out that I forget to deploy one of my dlls which I use in my webpart. You may also get an error states that your webpart can't be serialized, I think you may also forget to get add you dlls in GAG or site bin folder.(image)



Lazy or Busy, I'm sorry

2005-05-20T15:35:31.953+03:00

Hello Guys,
I'm sorry because I didn't post and new biztalk articles last 2 or 3 months, for last 3 months, I was involved in build alot sharepoint solution and web parts, I got more exprience and I will transfer it here on my blog, so expect the following articles very soon:
1. Implement ICellProvider - ICellConsumer [Same Webpart]
2. BizTalk Sharepoint Adaptor.
3. Schema Mapping in MAP Force (XML Spy)
4. MSMQ adptor how to.
and more...(image)



0 Comments

2005-04-09T03:14:47.363+02:00


Because I'm very interested in source Safe, Read this:


From MSND Magazine, April issue.


Team Foundation Source Control


Before creating any designs or code, you will want to set up source control using Team Foundation Source Control. Formerly known by its code name "Hatteras," Team Foundation Source Control is a much more robust platform than Microsoft Visual SourceSafe®. All of the content you store in this new source control system is automatically backed up in a SQL Server 2005 database for easy administration. The design goals for this new source control system include high scalability and performance, two features that are lacking in Visual SourceSafe. The new source control system will include more robust branching and merging capabilities. Because of this, multi-checkout will be turned on by default.


A new feature called "shelving" is also available. This feature allows you to take checked-out code that you are working on and check it into source control, but not into the primary branch, allowing developers to properly back up their work without forcing incomplete changes onto other developers on their team.


Visual SourceSafe will still be available and updated to work with Visual Studio 2005. Visual SourceSafe may prove useful on smaller projects with smaller teams that don't require the power of Team Foundation Server and that don't want to put forth the extra effort and expense of installing it. To select which source control engine you want to use, simply open Visual Studio, go to Tools | Options and select Source Control options.


Once you are configured to use Team Foundation Source Control, any time you create a new project in Visual Studio, you will have the option to add the project to source control. At that time, you will select the Team Foundation Server you wish to use. As a developer, when you are working on tasks you can mark work items to associate the work items with code that you are checking into source control. This association is then stored in the database and can be used later to create build reports. In addition, the new source control system also allows the creation of check-in policies. The purpose of a check-in policy is to restrict what code is allowed to be checked into the source control repository.

(image)



BAS made easy

2006-06-16T15:26:08.656+03:00

Download Code hereIntroduction:I know that BAS (Business Active Services is hard to be understood), so I will write this short article that explains it in a very simple way, it will not cover every aspect in BAS, but my main target to show you how to see the sample application.Learn by example:I will tell a story which show when you can use BAS. Suppose that you have to integrate an inventory application with inventory suppliers. Each supplier feeds the stock with a specific list of items. In your application you will watch stock and when an Item type becomes below the standard threshold, you have to order it from the right supplier. Now you want to send an order message to a specific supplier according to the type of the items.As a BizTalk genius, you will create a list of send ports and create a decide shape to your order orchestration and according to the order type, you send the message. Or you can create a dynamic send port and set its port properties according to the order type. But if you want to add new item type, you will need to modify, build and deploy orchestration. It will work, but Microsoft knows, in advance, that you will face this scenario a lot. So Microsoft introduced BAS.BAS allows you to create those suppliers in Share point site, and you can associate some suppliers information using, what is so called agreement. You can organize those suppliers in roles, according to specific criteria. For example, you can create a role called, Software suppliers, and Hardware suppliers. You can enlist Microsoft, IBM in the software suppliers and Dell, Compaq in the hardware supplier's role. You can receive and send message from those parties. Party is an organization which you want to communicate with. To start working with BAS, it is easy; you have to create a Role Link Type, and Role Link instance. You can add port types to the Rule link type either send or receive ports or both.Note:You can send messages to the party's inbox in the share point site suing some reserved names port types such as SendToInboxPTYou can add Parties to rules using BizTalk explorer, but you have to define parties at "Business Activity Services Site", and you can create a new agreement. I may write a tutorial on how install BAS and Business Activity Services Site.Sample Code:I include a sample code that shows how to work with Roles and Parties in BAS, it is very simple orchestration which receives an order message and according to the order type it forwards the suitable party. In the future I may enhance it to including using agreements. Party ResolutionAfter deploying the solution, you can start the orchestration and place a sample file in the receive location path. Orchestration checks the "OrderType" value if it is set to 1 it forward the order to "Fabrikam" party; else it sends it to "ITWrox" party. Using the following line of code in the "SetDestinationPartyTOFabrikam" expression shape:SendOrderToInboxRL(Microsoft.XLANGs.BaseTypes.DestinationParty) =new Microsoft.XLANGs.BaseTypes.Party("Fabrikam","OrganizationName");What this line of code means for us? This is called party resolution, i.e. select the appropriate party according to certain criteria such as it Organization Name, phone number etc. the following line of code show how to use alias of the Phone number.SendOrderToInboxRL(Microsoft.XLANGs.BaseTypes.DestinationParty) =new Microsoft.XLANGs.BaseTypes.Party("027231370","PhoneNumber");Alias is a property of the party which we select before[...]



Suspended messages

2005-02-02T17:45:02.386+02:00

Here is a question which I posted on Microsoft news group, I want to share Hugo response about it: Tareq: In Content Based routing, If BizTalk Port receives a message and the "subscriber" port has not been enabled yet, the message marked as suspended, and the receive Pipeline marked as terminated, when I enable the "Subscriber" port, why doesn't it subscribe to the suspended messages. What can I do to enable it to subscribe to the suspended messages? Second question, if I post a XML message which contains mistake forExample "open tag" which is not close, this was done by mistake, how I can track such messages and how to handle them? Hugo: The subscription required for the message to be processed is created when the port is enlisted. When the receive location picks up the message,it is delivered to the message box, where the message agent runs through thesubscription table to see if there are any services subscribing to themessage. If not, it is marked as suspended (unresumable). If there is a subscriber, but it is stopped, then the messages is suspended (resumable.) Restart the send port, and the message should clear.If the send port was not enlisted, then there will have been no availablesubscriber for the message when it arrived, so BizTalk cannot process it. Itis actually quite logical to suspend these messages and terminate thepipeline, as the alternative would require BizTalk to save every singlemessage it ever received, on the premise that someone might at some pointwant to subscribe to it. It's a bit like TiVo - you can pause live tv, butyou can't go back to a show that was on last week if you didn't record it! I've posted some links to others' articles on subscriptions here: http://hugorodgerbrown.blogspot.com/2005/01/message-subscriptions.html Tareq: Great post Hugo,but, I tried to post a xml documents that is not valid "Tag is opened and never closed" biztalk consumed it, I want to track such messages, so how ? Hugo: If your receive location is using an XmlReceive pipeline, then malformed Xmldocuments will be suspended, as the XmlDissasembler will throw an exceptionwhilst attempting to parse the document. All suspended documents can beviewed in HAT - look under Operations > Service Instances, selecting Class== "Messaging", and you should see it. You can use the context-menu option"Save Tracked Message" to save a copy of the message to disk, where you canview the contents. In this case the message never reaches the messagebox, so subscriptions arenever matched. (The message agent only processes messages that are receivedinto the message box.) If you use the PassThru pipeline in your receivelocation, the message will reach the message box regardless, as the xml isnot being parsed. However, no message properties will be promoted if you usethe PassThru pipeline, so CBR cannot be based on message content. If you do use a PassThru receive pipeline, and have your send port enlistedand routing messages based on non-content criteria (e.g. receive port name),then the message will be routed to the send port regardless of the validityof the xml. However - if the send port uses the XmlSend pipeline, themessage will now fail in the send port, because of the same issue. It will again be visible in HAT, and the contents of it can be viewed byright-clicking on the messaging service in HAT, and selecting "Save AllTracked Messages". So - if the xml is invalid, it will always fail in an XmlReceive or X[...]



BizTalk Auto deploy is back

2005-02-02T15:30:01.843+02:00

Hi All,
I want to clarify an issue with BizTalk auto deploy, if it is the first time to deploy your application you should change the solution configuration "Build --> configuration manager", as shown in the figure below,

(image)

In the future release, I will automatically include BizTalk projects into the "Deploy" list.

as a reminder, you can sign, build, deploy, enlist, start or undeploy,build, deploy, enlist, start you orchestrations and ports with one click

(image)
(image)