Biztalk message propery promotion - biztalk

I have an orchestration which should be kicked off when a text file comes in from a receive location,
as far as I can see things look as they should but the orchestration isn't starting and I get this in the admin console:
The published message could not be routed because no subscribers were found. This error occurs if the subscribing orchestration or send port has not been enlisted, or if some of the message properties necessary for subscription evaluation have not been promoted. Please use the BizTalk Administration console to troubleshoot this failure.
Does this mean I have to promote the message properties and if so do I do that in the orchestration?

With a text file, the inbound message will not by default have enough information in it to allow the BTS runtime to route your message. You need to pass the message into a flat file dissembler, which will convert your flat file message into an xml message.
The process of disassembly to xml will promote certain things into the context of the message, one of which will be the message type.
By default this is what your orchestration subscription will be based on if you have set things up in the most usual fashion.
Your problem is likely due to one of the following:
You don't have a flat file disassembler as a stage in your inbound pipeline, or it is set up incorrectly.
Your orchestration subscription is for a message type which does not match the type of message being dissembled.
To further troubleshoot, after starting your orchestration run a query for subscriptions from the BizTalk Admin Console. You should be able to see a row (or two) for your orchestration, with type = "Activation".
You should be able to see the criteria against which the BTS engine will have to successfully evaluate so that inbound messages reach your orchestration.
Also you can enable tracking on inbound messages and inspect the body of the message which comes in before and after disassembly.
Hope this helps

Related

Routing Failure Report for "Routing Failure Report for A1.A1Process"

I'm getting strange suspended messages with error saying :
This service instance exists to help debug routing failures for instance "{GUID}". The context of the message associated with this instance contains all the promoted properties at the time of the routing failure.
However there is no other suspended messages and there is no indication what was wrong into fields of this message.
How can I find out what could these messages to appear ?
Routing failures never contain messages bodies, your only hope is the available context properties on the routing failure report. So analyse where they should have been going to, and figure out why they couldn't be routed to that location.

Start an Orchestration if an other Orchestration gets a specific value

I would like to do a main orchestration that receive a specific message and with a specific value in this message the main orchestration can call another orchestration (with call orchestration shape) that receive a different message with receive shape and do other function
Note: the main orchestration and the other orchestration is in the same project
in general how can I proceed with 2 orchestration with a receive shape in each one
I think you are heading toward the wrong direction, what you can do is like this.
Create a main orchestration,and receive the message (your specific) from message box.
In your orchestration, check the value you want to check.
When it is necessary to pass the message to another orchestration, you don't call the orchestration direction. create a new message, use a map, to transfer the message you got to the message which another orchestration is listening.
Publish the message back to message box.
In this way, you don't need to call the orchestration directly. BizTalk will help you to schedule and passed message to the orchestration that you want to invoke.
Or you can use a message only solution, which means , you don't need to have a main orchestration at all, you can setup filters on your receive location, and then use map to transfer the message.

Biztalk, need to consume a web service

What I need to do to send a request and to receive answer from the Web Service that I want to consume.
What i have done:
I have done the "add web Reference"
I added a Send Shape and a Receive Shape and a I configured a port that sent and received with web Type, the port binding Specify later and I connect with the Request and response to the Send and Receive shape.
I believe I am missing something ?
From your description I am guessing you might be missing -
A definition of the request and
response messages; you need to
ensure you have a request and
response message defined, with their
types being the generated web types.
Select the correct message for both
the send and receive shape. send
shape uses the request message,
receive shape uses the response
message.
Construct the request message using a construct and a transform or assignment shape before the send shape. the easiest way to get started is to use a map in a transform shape to create the request from whatever message triggered your process, but the exact implementation detail will, of course, depend on your scenario
This should be enough to call the service I would have thought
There are many blog posts on the subject, here's one I found with a quick search that shows all the pieces needed
I'm currently working my way through a project using Biztalk to consume a web service. I think you may have a error when compiling similar to :
"Use of unreconstructed message"
If this is the problem, add a construct message shape to the orchestration before the send to the web service port.
I'm stuck with creating the message syntax but this should get you moving.

Biztalk - processing a flat file receives "no subscribers found" message

I've created a flat file schema in Visual Studio from an instance of a CSV file I have, and it validates fine, and I've hooked up an orchestration to send and receive ports set to expect a file of that schema. When I publish the orchestration and use it to pick up a file, it's immediately suspended, with the following error:
The published message could not be
routed because no subscribers were
found. This error occurs if the
subscribing orchestration or send port
has not been enlisted, or if some of
the message properties necessary for
subscription evaluation have not been
promoted. Please use the Biztalk
Administration console to troubleshoot
this failure.
The send port is enlisted, and since I'm not doing any processing based on the contents, I don't think I need to promote anything. I'm currently using the PassthroughReceive pipeline - the other three pipelines I have give me errors about not being able to disassemble the file, as it seems they're expecting XML.
Am I missing something obvious here? Or, in other words:
Can I pass the contents of a CSV file
to my orchestration without a custom
pipeline?
Yes, when you create a custom flat file schema, you need to create a custom pipeline (a receive pipeline in this case), add the FlatFile Disassembler component to it and then configure its properties with your custom flat file schema.
Then you need to configure your receive port to use this receive pipeline.

Property promotion not happening in Wcf receive location

I have an "enevelope" schema and a body schema and I have setup the correct properties on the "envelope" to point to the body.
I also have a property schema for promoting a value in the body message so that i can route on it.
I set up a File drop receive location and two send ports. Each send port subscribing on a different value of the promoted property. The receive location uses XmlReceive and the send ports both use XmlTransmit.
When i drop one envelope message at the Rcv location, Bts picks it up, splits it, promotes the property and my send ports pick up the relevant messages and do their thing.
File drop was fine for testing, but the real scenario is slightly different.
I want clients to submit "envelope" schemas containing multiple document elements via Wcf
So i published the envelope schema as a Wcf endpoint using the publishing wizard. Let it create the new Receive location. Wired up a Wcf client to talk to this endpoint and submitted a message.
Without changing anything on the Send ports in BizTalk I expected the same result;
However I now get a routing failure.
If i remove the extra filter in the Send port that filters on the promoted property it works, no routing failure.
So ... it would appear that the promoting of my property is not happening on the Wcf receive location.
I have checked; the Wcf receive location is using XmlReceive.
What gives?
How do i fix this?
I would guess that the namespace of your incoming message has changed as a result of changing it to use WCF.
This can cause the property promotion to no longer match the incoming message.
You can view the property promotions in the tracked messages in the BizTalk server admin tools.

Resources