Today I want to share how BizTalk uses the persistence points and what to expect when an orchestration is suspended and we resume it.
Showing posts with label BizTalk. Show all posts
Showing posts with label BizTalk. Show all posts
Tuesday, February 20, 2018
Friday, November 10, 2017
BizTalk Maps - Using Recursive XSLT template to simulate FOR clause
Recently, I was resolving an MSDN forum question that needs to split an input String to String destination nodes with maximum 80 length.
The problem was, how to generate N destination nodes with only one input node splitting the string in fixed length strings.
The problem was, how to generate N destination nodes with only one input node splitting the string in fixed length strings.
Friday, September 01, 2017
"ORA-12154: TNS:could not resolve the connect identifier specified" from Visual Studio or BizTalk
Few days ago, testing my BizTalk solution on my local environment, I get all the time the same error: "ORA-12154: TNS:could not resolve the connect identifier specified"
Wednesday, August 09, 2017
Copy any message to a single node on destination message
This example is to copy any input message, the whole XML into a single node on a destination typed message.
Wednesday, August 02, 2017
BizTalk 2013 R2 Orphaned BizTalk DTA service instances are not removed
In one of our BizTalk 2013 R2 environments, after running Message Box Viewer, a warning was reported: "DTA Orphaned Instances (Incompleted Instances in DTA but not in Msgbox). 2 (Large number can impact DTA Size and so perfs) - one possible cause is described in KB 978796 - Contact Microsoft CSS for more info !"
Thursday, July 27, 2017
BizTalk360 don't send e-mail notifications
Recently we configured a BizTalk360 and in our environment, alerts/notification aren’t being sent.
Monday, July 03, 2017
Tracing SAP Adapter
When we have problems with the SAP Adapter, is easy to turn on tracing.
We need only add in our connection URI the RfcSdkTrace parameter and set to true.
Adding this parameter, the adapter traces will be sent to system32 folder, with a minimum trace level.
If you need to send the traces to other directory, you have to add RFC_TRACE_DIR environment variable and set the value of the desired output folder.
Also, if you need traces more detailed, you have to add RFC_TRACE environment variable and set it to 1 or 2. By default and if we don't add this variable, the value is 0 that means tracing level is bare minimum. The 2 value is the more detailed tracing level.
For more information, check this documentation.
We need only add in our connection URI the RfcSdkTrace parameter and set to true.
Adding this parameter, the adapter traces will be sent to system32 folder, with a minimum trace level.
If you need to send the traces to other directory, you have to add RFC_TRACE_DIR environment variable and set the value of the desired output folder.
Also, if you need traces more detailed, you have to add RFC_TRACE environment variable and set it to 1 or 2. By default and if we don't add this variable, the value is 0 that means tracing level is bare minimum. The 2 value is the more detailed tracing level.
For more information, check this documentation.
Wednesday, June 14, 2017
Getting your BizTalk environment software versions with SQL and PowerShell
Here is simple PowerShell ans SQL scripts, to get the software version easily of your BizTalk software environment:
Wednesday, May 24, 2017
Considerations when you deploy BizTalk360
When you go to deploy a BizTalk360 solution, you should take into account these requirements or steps.
Thursday, April 06, 2017
Deploy or Re-GAC
If we want to update a BizTalk application, sometimes we can only Re-GACing our DLLs instead of redeploy. Obviously, in production environments is recommended to redeploy, but in development environments we can save time just ReGACing.
Monday, March 06, 2017
Global Integration Bootcamp next March 25th 2017
Global Integration Bootcamp will be next March 25th, the first Integration Bootcamp with Microsoft technology held in Spain.
The event will be at Madrid. More info at http://www.kabel.es/globalintegrationbootcamp2017
Labels:
Azure,
BizTalk,
Cloud,
Enterprise Integration Pack
Friday, August 14, 2015
BizTalk ALM Webinar
Next 17-August-2015, Integration User Group offers a very interesting webinar about Continuous Integration for your BizTalk solutions. Here are the details:
http://www.integrationusergroup.com/?event=biztalk-alm&event_date=2015-08-17
http://www.integrationusergroup.com/?event=biztalk-alm&event_date=2015-08-17
Tuesday, September 09, 2014
Remove BOM sending a document
At the
beginning of UTF-8 or UTF-16 documents, usually are a set of not visible
characters called BOM (http://en.wikipedia.org/wiki/Byte_order_mark).
There are
some systems that doesn’t allow these characters on documents, then when we are
developing solutions on BizTalk and want to send a document to a system that
doesn’t understand BOM characters, we can add at the send pipeline an assembler
(XML or FLAT) and use their property Preserve
byte order mark.
If we set
to false this property, the
assembler will delete BOM characters of the outgoing document.
Friday, September 05, 2014
Expose BizTalk schemas as RPC Encoded
It's very easy to expose BizTalk schemas as RPC encoded. Do these steps:
1) On the service App_Code folder, open your csharp service files.
2) Comment SoapDocumentServiceAttribute:
//[System.Web.Services.Protocols.SoapDocumentServiceAttribute(Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Default)]
3) Use instead SoapRpcService
[System.Web.Services.Protocols.SoapRpcService]
4) Comment each SoapDocumentMethodAttribute:
//[System.Web.Services.Protocols.SoapDocumentMethodAttribute("namespaceAndMethod", OneWay=false, Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Default)]
5) Use instead SoapRpcMethod
[System.Web.Services.Protocols.SoapRpcMethod]
And that's all!
1) On the service App_Code folder, open your csharp service files.
2) Comment SoapDocumentServiceAttribute:
//[System.Web.Services.Protocols.SoapDocumentServiceAttribute(Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Default)]
3) Use instead SoapRpcService
[System.Web.Services.Protocols.SoapRpcService]
4) Comment each SoapDocumentMethodAttribute:
//[System.Web.Services.Protocols.SoapDocumentMethodAttribute("namespaceAndMethod", OneWay=false, Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Default)]
5) Use instead SoapRpcMethod
[System.Web.Services.Protocols.SoapRpcMethod]
And that's all!
Direct bound port error: "Illegal direct binding partner port"
If you get an "Illegal direct
binding port" as a compilation error when you have a Direct Port Binding between 2 orchestrations:
Maybe you have set
different Port on partner orchestration
on the two ports that are direct binding.
To configure correctly a Direct Port Binding, check the steps
given on http://msdn.microsoft.com/en-us/library/aa949436.aspx.
Here is an full example:
1.
In Orchestration A, select the Port shape
in the orchestration Toolbox. This starts the Port
Configuration Wizard.
2. On the Port
Properties page, in the Name field, type MyReceivePort. Click Next.
3. On the Select
a Port Type page, select Create a new Port Type. In
the Port Type Name field, type MyPartnerPortType. Click Next.
4.
On the Port Binding page, in
the Port direction of communication drop-down list,
select I'll always be receiving messages on this port. In the Port
binding drop-down list, select Direct.
5.
Select To receive messages from other
orchestrations, select this port here and in those orchestrations, and then
in the Port on partner orchestration drop-down list,
select OrchestrationA.MyReceivePort. Click Next.
6.
On the Completing the Port Wizard page,
click Finish.
7. In Orchestration
B, select the Port shape in the orchestration Toolbox. This starts the Port Configuration Wizard.
8. On the Port
Properties page, in the Name field, type MySendPort. Click Next.
9.
On the Select a Port Type page,
select Use an existing Port Type. Under Available Port
Types, select MyPartnerPortType, and then click Next.
10. On the Port
Binding page, in the Port direction of communication drop-down
list, select I'll always be sending messages on this port. In the Port
binding drop-down list, select Direct.
11. Select To
send messages to other orchestrations, select this port here and in those
orchestrations, and then in the Port on partner orchestration drop-down
list, select OrchestrationA.MyReceivePort. Click Next.
12. On the Completing
the Port Wizard page, click Finish.
Wednesday, May 16, 2012
Orchestration exposed as WCF service adds default serialization namespace to incoming and outgoing messages of type String, Int32, ..
If we need to publish an orchestration with message types System.String, System.Int32, ... (simple .NET Classes message types) as WCF service, we have to publish selecting "Publish Schemas as WCF service", instead of "Publish BizTalk orchestrations as WCF service"..
THE PROBLEM
I have developed a simple solution, with an orchestration that receives a System.Int32 message and returns a System.String message:
If we publish this orchestration as WCF service, using "Publish BizTalk orchestrations as WCF service", in the generated WSDL, we will find this messages:
Look that message types are int and string, but both namespaces are http://schemas.microsoft.com/2003/10/Serialization/.
I implemented a simple test C# console application to invoke the WCF service:
When I run this test console application, an unexpected exception is thrown:
<int xmlns="http://schemas.microsoft.com/2003/10/Serialization/"> was not expected.
Exception type: InvalidOperationException
Source: System.Xml
Target Site: System.Object Read_int()
THE SOLUTION
To avoid this error, we have to publish our solution using "Publish Schemas as WCF service" and include in our project a schema with primitive types, like:
And then publish our WCF service publishing this schemas as:
THE PROBLEM
I have developed a simple solution, with an orchestration that receives a System.Int32 message and returns a System.String message:
If we publish this orchestration as WCF service, using "Publish BizTalk orchestrations as WCF service", in the generated WSDL, we will find this messages:
I implemented a simple test C# console application to invoke the WCF service:
<int xmlns="http://schemas.microsoft.com/2003/10/Serialization/"> was not expected.
Exception type: InvalidOperationException
Source: System.Xml
Target Site: System.Object Read_int()
THE SOLUTION
To avoid this error, we have to publish our solution using "Publish Schemas as WCF service" and include in our project a schema with primitive types, like:

And then publish our WCF service publishing this schemas as:
In this step, the operation name have to be the same as operation name in orchestration (ReceiveInt32) and in request and response schema type, we have to select our schema with primitive types:
Tuesday, May 15, 2012
WCF HTTPS BizTalk Send Port: "Could not establish secure channel for SSL/TLS with authority '<remote url>'"
I have an application that needs to connect to a https url, after deploying it and test, the send port returns this message:
Usually this error means that remote certificate is not valid, is not well installed, user that runs the send port doesn't have enough permissions, ... but after checking all, the problem still exists.
The send port was configured with basicHttpBinding, transport security mode and clientCredentials behaviour with both certificates, client and server certificates to establish https connection.
The problem was that in my WCF send port configuration, I forget to set clientCredentialType in Security -> Transport...the error message doesn't help:
"System.ServiceModel.Security.SecurityNegotiationException: Could not establish
secure channel for SSL/TLS with authority '<remote url>'.
System.Net.WebException: The request was aborted: Could not create SSL/TLS
secure channel."
The send port was configured with basicHttpBinding, transport security mode and clientCredentials behaviour with both certificates, client and server certificates to establish https connection.
The problem was that in my WCF send port configuration, I forget to set clientCredentialType in Security -> Transport...the error message doesn't help:
Tuesday, May 08, 2012
Optional records in a positional flat file
This days I am working with a file with this structure:
AH Record (Mandatory): File's header, with 14 positions + AH identifier (AH12C0OMMTTD6204)
OD Record (Mandatory): 94 positions + OD identifier
EX Record (Mandatory): 6 positions + EX identifier
MN Record (Mandatory): 12 positions + MN identifier
XR Record (Optional): 4 positions + XR identifier
RF Record (Optional): 17 positions + RF identifier
PT Record (Optional): 2 positions + PT identifier
A sample file could be (all data is in the same line):
AH12C0OMMTTD6204OD9200000002 BUY 0001000.00M0ES0112805025 0000000000000090.000CODIGOCLIENTE5 EX040412MN100001000.00PT00
My first try, was to define a flat file schema with:
After reading this post http://www.codeproject.com/Articles/13707/Flattening-Out-the-Complexity-in-Flat-File-Schemas, I try to put optional records inside a Sequence block, with the same properties, now it works as I expected:
AH Record (Mandatory): File's header, with 14 positions + AH identifier (AH12C0OMMTTD6204)
OD Record (Mandatory): 94 positions + OD identifier
EX Record (Mandatory): 6 positions + EX identifier
MN Record (Mandatory): 12 positions + MN identifier
XR Record (Optional): 4 positions + XR identifier
RF Record (Optional): 17 positions + RF identifier
PT Record (Optional): 2 positions + PT identifier
A sample file could be (all data is in the same line):
AH12C0OMMTTD6204OD9200000002 BUY 0001000.00M0ES0112805025 0000000000000090.000CODIGOCLIENTE5 EX040412MN100001000.00PT00
My first try, was to define a flat file schema with:
- Records for each structure
- Tag identifiers
- Min occurs = 0 in optional records
After reading this post http://www.codeproject.com/Articles/13707/Flattening-Out-the-Complexity-in-Flat-File-Schemas, I try to put optional records inside a Sequence block, with the same properties, now it works as I expected:
Monday, May 07, 2012
Error importing binding file from remote computer "Failed to create 'AdapterName' Transport Component"
Yesterday I was trying to deploy a BizTalk solution from a continuos integration server to our DEV environment. The solution was deployed perfect, but in the import bindings step, I get this error:
"Failed to create 'AdapterName' Transport Component"
Finally I found the solution. The problem was that in my continuos integration server, I haven't installed this adapter, I don't know why, but is needed.
You can get this error using whichever tool that you use: BTSTask, MSBuild extension pack, Deployment Framework for BizTalk...
"Failed to create 'AdapterName' Transport Component"
Finally I found the solution. The problem was that in my continuos integration server, I haven't installed this
You can get this error using whichever tool that you use: BTSTask, MSBuild extension pack, Deployment Framework for BizTalk...
XLANGPart.LoadFrom - "Value cannot be null. Parameter name: s as MemoryStream"
If we use a .NET library for construct an orchestration message from a Stream data, we need to use the following code:
orchestrationMessage[0].LoadFrom(someStream);
If we don't use a MemoryStream, we receive the following error:
"Value cannot be null. Parameter name: s as MemoryStream"
We need to copy our stream to a MemoryStream object and then construct the XLANGPart:
MemoryStream someMemoryStream = StreamToMemoryStream(someStream);
orchestrationMessage[0].LoadFrom(someMemoryStream );
This is because the class Microsoft.XLANGs.Core.Value, only accepts MemoryStream objects in their LoadFrom method.
orchestrationMessage[0].LoadFrom(someStream);
If we don't use a MemoryStream, we receive the following error:
"Value cannot be null. Parameter name: s as MemoryStream"
We need to copy our stream to a MemoryStream object and then construct the XLANGPart:
MemoryStream someMemoryStream = StreamToMemoryStream(someStream);
orchestrationMessage[0].LoadFrom(someMemoryStream );
This is because the class Microsoft.XLANGs.Core.Value, only accepts MemoryStream objects in their LoadFrom method.
Subscribe to:
Posts (Atom)