Today, the BizTalk Product Group announced the general availability of the BizTalk Server Accelerator for SWIFT – Message Pack 2016.
Download : https://www.microsoft.com/en-us/download/details.aspx?id=53948
We are happy to announce two new Cumulative updates one for BizTalk Server 2013 (CU5) and BizTalk Adapter Pack 2013 (CU4) is available. Cumulative update package 5 for Microsoft BizTalk Server 2013: This cumulative update package for Microsoft BizTalk Server 2013 CU5 contains hotfixes for the BizTalk Server 2013 issues that were resolved after the…
Blog Post by: BizTalk Team
I just updated three of my useful BizTalk PowerShell scripts in some cases fixing some small bugs, improving performance and in other cases adding also new capabilities. PowerShell to configure Default Dynamic Send Port Handlers for each Adapter: This is a simple script that allows you to configure the default send handlers associated with all […]
Blog Post by: Sandro Pereira
Hi All,
I just came across an issue/bug with the pipeline unit test in BizTalk 2013/r2. In my case, I’ve multiple document specification present in the XML disassembler stage. When we write Unit test for this custom pipeline it fails with the error “System.InvalidOperationException: None of the disassembler components could recognize a data”. The error basically means that I do not have a Schema Document Specification added to the XML Disassembler for the message, but that’s not correct. I’ve the doc spec available along with the other schema doc specs in the collection.
I’ve written unit test using Spec Flow and Winterdom BizTalk Pipeline Testing tool. The Unit test is mentioned below:
Feature: Pipelines
Scenario Outline: Test Inbound Request Pipeline
Given the pipeline has been configured with the “<TypeName>” and “<SubscriberName>”
When the inbound request pipeline is executed with the “<InputMessage>”
Then the following Context Properties should be promoted “<MessageType>”, “<SubscriberName>”
Examples:
| InputMessage | TypeName | MessageType | SubscriberName |
| ManageAlertResponse.xml | SQLProviderResponse | http://schemas.microsoft.com/Sql/2008/05/TypedProcedures/dbo#ManageAlertsResponse | |
using System;
using System.IO;
using System.Linq;
using Microsoft.BizTalk.Message.Interop;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using TechTalk.SpecFlow;
using Common.Patterns.PipelineComponent;
using Common.Utilities.BAM.Message.V1;
using Common.Utilities.Helper.Component;
using DB.Common.Pipelines;
using DB.Common.Schemas;
using Winterdom.BizTalk.PipelineTesting;
namespace DB.Common.Test.Bindings.Pipelines
{
[Binding]
public sealed class InboundRequestPipeline : BasePipelineBinding
{
[Given(@”the pipeline has been configured with the “”(.*)”” and “”(.*)”””)]
public void GivenThePipelineHasBeenConfiguredWithTheAnd(string typeName, string subscriberName)
{
ReceivePipelineWrapper pipeline = PipelineFactory.CreateReceivePipeline(typeof(RcvDBResponseMsg));
pipeline.AddDocSpec(typeof(TypedProcedure_dbo));
ScenarioContext.Current.Add(“Pipeline”, pipeline);
}
[When(@”the inbound request pipeline is executed with the “”(.*)”””)]
public void WhenTheInboundRequestPipelineIsExecutedWithThe(string inputMessageName)
{
var pipeline = (ReceivePipelineWrapper)ScenarioContext.Current[“Pipeline”];
string inputMessagePath = String.Format(“{0}.{1}”, MESSAGE_RESOURCE_PATH, “Input”);
using (Stream inputMessageStream = GetResourceStream(inputMessagePath, inputMessageName))
{
IBaseMessage inputMessage = MessageHelper.CreateFromStream(inputMessageStream);
inputMessage.Context.Promote(“InterchangeID”, “http://schemas.microsoft.com/BizTalk/2003/system-properties”, Guid.NewGuid().ToString());
inputMessage.Context.Promote(“CorrelationToken”, “http://schemas.microsoft.com/BizTalk/2003/system-properties”, Guid.NewGuid().ToString());
MessageCollection outputMessageCollection = pipeline.Execute(inputMessage);
IBaseMessage outputMessage = outputMessageCollection.FirstOrDefault();
ScenarioContext.Current.Add(“OutputMessage”, outputMessage);
}
}
[Then(@”the following Context Properties should be promoted “”(.*)””, “”(.*)”””)]
public void ThenTheFollowingContextPropertiesShouldBePromoted(string targetMessageType, string targetSubscriberName)
{
var outputMessage = (IBaseMessage)ScenarioContext.Current[“OutputMessage”];
string messageType = outputMessage.Context.Read(“MessageType”, “http://schemas.microsoft.com/BizTalk/2003/system-properties”).ToString();
Assert.AreEqual(targetMessageType, messageType);
}
#region PrivateHelper
#endregion
}
}
The test fail on the highlighted step above with the below exception :
Test Name: TestInboundRequestPipeline_ManageAlertResponse_Xml
Test FullName: DB.Common.Test.Features.PipelinesFeature.TestInboundRequestPipeline_ManageAlertResponse_Xml
Test Source: : line 2147483647
Test Outcome: Failed
Test Duration: 0:00:00.1399699
Result Message:
Test method DB.Common.Test.Features.PipelinesFeature.TestInboundRequestPipeline_ManageAlertResponse_Xml threw exception:
System.InvalidOperationException: None of the disassembler components could recognize a data
Result StackTrace:
at Microsoft.Test.BizTalk.PipelineObjects.Stage.Execute(IPipelineContext pipelineContext, IBaseMessage inputMessage)
at Microsoft.Test.BizTalk.PipelineObjects.GenericPipeline.ExecuteSubPipeline(IPipelineContext pipelineContext, IBaseMessage inputMessage, Int32 startStageIndex, Int32 endStageIndex)
at Microsoft.Test.BizTalk.PipelineObjects.ReceivePipeline.Execute(IPipelineContext pipelineContext)
at Winterdom.BizTalk.PipelineTesting.ReceivePipelineWrapper.Execute(IBaseMessage inputMessage)
at .DB.Common.Test.Bindings.Pipelines.InboundRequestPipeline.WhenTheInboundRequestPipelineIsExecutedWithThe(String inputMessageName) in c:ShadabWSDevelopmentIntegrationDBCommon2.0DB.Common.TestBindingsPipelinesInboundRequestPipeline.cs:line 46
at lambda_method(Closure , IContextManager , String )
at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance)
at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()
at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()
at .DB.Common.Test.Features.PipelinesFeature.ScenarioCleanup() in c:ShadabWSDevelopmentIntegrationDBCommon2.0DB.Common.TestFeaturesPipelines.feature.cs:line 0
at .DB.Common.Test.Features.PipelinesFeature.TestInboundRequestPipeline(String inputMessage, String typeName, String messageType, String subscriberName, String[] exampleTags) in c:ShadabWSDevelopmentIntegrationDBCommon2.0.DB.Common.TestFeaturesPipelines.feature:line 7
at .DB.Common.Test.Features.PipelinesFeature.TestInboundRequestPipeline_ManageAlertResponse_Xml() in c:ShadabWSDevelopmentIntegrationDBCommon2.0..Common.TestFeaturesPipelines.feature.cs:line 0
After doing some investigation, We found that if there is other Schemas Doc Specification present first in the order to the doc spec which is passed from the unit test, the unit test component did not recognize the schema spec and fails the unit test.
For example: I’ve passed schema type “TypedProcedure_dbo“ from my unit test to the pipeline which is second in the list.
The unit test fails, because the first Schema type in the list is “EmployerSecurity”.
As soon as I move the “TypedProcedure_Dbo” up in the order, compile, Gac and run the unit test, all looks good and success.
It looks like the Pipeline Unit test only validate schema with the first spec, my question is why does the order matter in the Unit test while it does not matter at the run time? Just wondering if anyone have already experience similar issue and have a better solution?
Regards,
Shadab
We followed Mohamed M Malek and used the WCF-WebHTTP adapter to integrate with the Apache ActiveMQ Rest API. Initially we used a HTTP GET to consume the message but discovered that after a while the central message broker ran out of memory. Researching the Apache documentation we discovered that you can consume messages by browsing to the subscription but you must then DELETE the message when you have finished processing it, to acknowledge a particular message.
We tried to acknowledge our HTTP GET with a subsequent HTTP DELETE but could not DELETE the message from the queue. It had already been removed from our subscription.
In the end we changed from using a HTTP GET to a HTTP DELETE. The Apache documentation says you can use either a HTTP DELETE or GET to consume the message. We found that response was identical whether we used GET or DELETE. What was more pleasing was that the memory no longer increased on the central message broker and this solved our issue. Thanks to Deepa Kamalanathan for working all this out.
No comments yet.
RSS feed for comments on this post. TrackBack URI
Today, the BizTalk Product Group announced the general availability of the BizTalk Server Accelerator for SWIFT – Message Pack 2016.
Download : https://www.microsoft.com/en-us/download/details.aspx?id=53948
We are happy to announce the availability (RTM) of Message Pack 2016 for BizTalk Server Accelerator for SWIFT. This can be downloaded from: https://aka.ms/biztalkswift Microsoft BizTalk Accelerator for SWIFT (A4SWIFT) provides a set of schemas, rules, and associated tools to assist you in the integration of SWIFT messaging with your internal applications. It uses BizTalk…
Blog Post by: BizTalk Team
In May, I gave a session at Integrate 2016 titled Azure IaaS Essentials for the BizTalk Developer (watch online now).
In that session I outlined that prices for Azure resource vary by data center.
In case you did not know, the price you pay for Azure resources in a US datacenter can vary from that in Brazil (expensive) , Japan, Indian, and so on.
What is interesting though, is that event data centers in the United States have different prices.
From what I’ve seen, the East 2 and West 2 data centers seem to have better prices than a lot of the other US data centers.
I checked some prices on Virtual Machines and Storage – not all Azure resource – but some prices were as much as 13% lower!
If you use a lot of Azure saving up to 13% or maybe more can really add up.
The key take-a-way is to ensure you check the prices of the resources in multiple data centers if you have the ability to do so for your scenario.
Instead of trying to archive everything I want at once, what will probably take me long time, I decided to publish another version of my Microsoft Integration Stencils Pack with an additional of 80 new shapes and some reorganization. With these new additions, this package now contains an astounding total of ~911 shapes (symbols/icons) that […]
Blog Post by: Sandro Pereira
Exciting news Version 1.9.1.0 of BizTalk Mapper Extensions UtilityPack for BizTalk Server 2013 R2 and 2013 is now available! Here’s the change-log for this release: Updated Logical Functoids: The project has sign strong name key solving an issue regarding to “Unable to add BizTalk.Logical.Functoids.dll to the GAC (version 1.9.0.0)” – However, this is a false […]
Blog Post by: Sandro Pereira
Colin Dijkgraaf and I presented this on Integration Monday today. In this session we showed why the WCF-WebHTTP adapter requires some workarounds. We used BizTalk 2016 Tap release to demonstrate these workarounds. The presentation and PowerPoint presentation can be downloaded from here.
RSS feed for comments on this post. TrackBack URI