I'm taking a sabbatical next year at Estrellas en la calle in Cochabamba, Bolivia, thus I won't post anything here in 2010.
- Christoph
One year later, I'm back. Thanks for continue posting!
Random pitfalls (and their solutions) in EAI technologies such as BizTalk
Friday, December 25, 2009
Tuesday, December 8, 2009
Directly Create an EDIFACT Interchange
If you want to create the EDIFACT interchange directly instead of using the built-in functionality of BizTalk, you can create your own schema and send it the EdiSendPipeline. When you use BizTalk's built-in batching functionality, you can see which schema BizTalk uses to prepare the interchange. As far as I see, you can build your custom interchange schema this way:
Import...
Import...
- Microsoft.BizTalk.Edi.BaseArtefacts.EdifactServiceSchema.dll (with namespace "http://schemas.microsoft.com/Edi/EdifactServiceSchema")
- the EDI schema, e.g. EFACT_D06A_INVOIC_2.0
- root node "EdifactInterchangeXml"
- Below root, Create attribut @DelimiterSetSerializedData and set fixed value to 39:-1:-1:43:58:63:42:44:-1 (if this is how UNA should look like).
- Below root, create groups UNA, UNB, UNZ and reference the types from the EdifactServiceSchema
- Below root, create group "TransactionSetGroup" and subgroup "TransactionSet"
- Below "TransactionSet", create a group that references the EDIFACT schema
- Below "TransactionSet", create attribute @TransactionSetActivityId
- Below "TransactionSet", create attribute @DocType and set fixed value to http://schemas.microsoft.com/BizTalk/EDI/EDIFACT/2006#EFACT_D06A_INVOIC_2.0
Weired Error "This is often an indication that other memory is corrupt." executing pipeline component
After migrating our biztalk app to 2009 we received a confusing error message everytime we dropped a file into a file receive location with a pipeline containing a bunch of pipeline components:
"There was a failure executing the receive pipeline:
...
Reason: Attempted to read or write protected memory. This is often an indication that other memory is corrupt"
After along irritating searching we finally debugged the pipeline component and find the root cause:
The call of
message.Context.Read(propertyName, propertyNamespace);
within an pipeline component must not be done with a "Null" value of "propertyNamespace". Obviously there is no internal check for this and the following call within the unsafe code leads into a Null reference call and the error message above.
"There was a failure executing the receive pipeline:
...
Reason: Attempted to read or write protected memory. This is often an indication that other memory is corrupt"
After along irritating searching we finally debugged the pipeline component and find the root cause:
The call of
message.Context.Read(propertyName, propertyNamespace);
within an pipeline component must not be done with a "Null" value of "propertyNamespace". Obviously there is no internal check for this and the following call within the unsafe code leads into a Null reference call and the error message above.
Labels:
Biztalk,
Biztalk 2009,
BizTalk error,
Pipeline,
Pipeline Component
Friday, December 4, 2009
Problems getting the current assembly in VS2008/BTS2009
BizTalk 2009 seems to copy self-developed BizTalk assemblies into hidden system folders. If you run into the problem that your assemblies are not updated (although you deploy them in Biztalk, add them to the GAC, or save them to the pipeline components folder), it might be that BizTalk still references an old version of the assembly that is in a system folder.
In that case, find and delete the old version of the assembly and try again.
In that case, find and delete the old version of the assembly and try again.
Labels:
Assembly,
Biztalk,
Biztalk 2009,
BizTalk bug
Subscribe to:
Posts (Atom)