1

I am getting below error when I run the Orchestration and try to assign value to a promoted property by reading the value of another promoted property.

Error in Suspended Orchestration:

Inner exception: There is no value associated with the property BankProcesses.Schemas.Internal_ID' in the message.

Detail:

I have 2 XSD schemas, 1 for calling a stored procedure and reading its response and another to write it into a flat file. The internal ID returned in the response from SP needs to be passed to a node in another XSD schema to write to a flat file format.

I have promoted an element from the response schema and also promoted an element from the schema to write to flat file. I am assigning the value to promoted propeties as below:

strInternalId = msgCallHeaderSP_Response(BankProcesses.Schemas.Internal_ID);

msgCallSP(BankProcesses.Schemas.Header_Internal_ID) = strInternalId;

But when I run the orchestration I get the error as mentioned above. I have checked the reponse from stored procedure and the reponse XML does contain some value but I am unable to assign that value to another schema. Please advice

Thanks, Mayur

Serkan Arslan
  • 12,345
  • 4
  • 22
  • 38
Mayur Jadhav
  • 125
  • 10
  • If all you want to do is copy it from one message to another and don't need it promoted (so it can be accessed from the message context), then you would be better of distinguishing it rather than promoting. Promoting has a higher processing cost. What data type is the Internal_ID? – Dijkgraaf Dec 03 '13 at 03:04

3 Answers3

2

You can use exists to check the existence of property.

if(BankProcesses.Schemas.Internal_ID exists msgCallHeaderSP_Response)
{
    strInternalId = msgCallHeaderSP_Response(BankProcesses.Schemas.Internal_ID);

    msgCallSP(BankProcesses.Schemas.Header_Internal_ID) = strInternalId;
}
Serkan Arslan
  • 12,345
  • 4
  • 22
  • 38
0

One scenario that might cause this error is that there is no Header_Internal_ID element in the message you are trying to modify. Can you inspect the message before modification to ensure that there is an element whose value should be changed - drop the message out to a file location, maybe.

If this is the case, then just ensure that you create this element when you instantiate you r message for the first time - even if you initially set it to an empty element.

HTH

TJ Amas
  • 1,271
  • 13
  • 19
0

To check if the property exists, you can use this syntax:

BMWFS.LS.BizTalk.CFS.BankProcesses.Schemas.Internal_ID exists msgCallHeaderSP_Response

However, if the case is that the source field would always be there, you have to work backwards to find out why the Property is not appearing on the Context.

If it's coming from a Port, is the message passign through an XmlDisassembler Component? If it's coming from another Orchestration, are you actually setting the Property?

The easiest way to look at the Context is to route the Message, msgCallHeaderSP_Response, to a Stopped Send Port. You can then view the Context in BizTalk Administrator.

Johns-305
  • 10,704
  • 10
  • 21