BizTalk Server 2020 – 20 days, 20 posts: XML Namespace Stripper Pipeline Component for BizTalk Server 2020

  • Sandro Pereira
  • Apr 17, 2020
  • 4 min read

BizTalk Server 2020 – 20 days, 20 posts – day 19. To finalize this topic about the BizTalk Pipeline Components Extensions UtilityPack project, here is another brand new component: XML Namespace Stripper Pipeline Component. I actually created this component for a need in a recent RosettaNet project.

📝 One-Minute Brief

Introduces the XML Namespace Stripper Pipeline Component for BizTalk Server 2020, a custom send‑pipeline component that removes all XML namespaces and prefixes from outbound messages to meet strict integration and legacy partner requirements.

XML Namespace Management Pipeline Component

This custom XML Namespace Stripper Pipeline Component is a pipeline component for BizTalk Server, which can be used in a Send Pipeline (Encode stage) to remove all namespaces and prefixes from an XML message.

XML Namespace Management

Once again, the goal of this component is to clean up all namespaces and prefixes present in XML outbound messages, transforming the message from this:

<?xml version="1.0" encoding="utf-8"?>
<ns0:Pip7B1WorkInProcessNotification xmlns:ns0="http://schemas.microsoft.com/biztalk/btarn/2004/7B1_MS_V01_00_WorkInProcessNotification.dtd" xmlns:ns1="http://Microsoft.Solutions.BTARN.Schemas.RNPIPs.BaseDataTypes" xmlns:ns2="http://www.w3.org/XML/1998/namespace">
  <ns0:fromRole>
    <ns0:PartnerRoleDescription>
      <ns0:ContactInformation>
        <ns0:contactName>
          <ns0:FreeFormText>Demo</ns0:FreeFormText>
        </ns0:contactName>
        <ns0:EmailAddress>demo@demo.com</ns0:EmailAddress>
        <ns0:telephoneNumber>
          <ns0:CommunicationsNumber>000-111-2222 EXT 1111</ns0:CommunicationsNumber>
        </ns0:telephoneNumber>
      </ns0:ContactInformation>
      <ns0:GlobalPartnerRoleClassificationCode>Solution Provider</ns0:GlobalPartnerRoleClassificationCode>
      <ns0:PartnerDescription>
        <ns0:BusinessDescription>
          <ns0:GlobalBusinessIdentifier>000000001</ns0:GlobalBusinessIdentifier>
        </ns0:BusinessDescription>
        <ns0:GlobalPartnerClassificationCode>Contract Manufacturer</ns0:GlobalPartnerClassificationCode>
      </ns0:PartnerDescription>
    </ns0:PartnerRoleDescription>
  </ns0:fromRole>
  ...
  <ns1:OrderReference>
      <ns0:DocumentReference>
        <ns0:GlobalDocumentReferenceTypeCode>Purchase Order</ns0:GlobalDocumentReferenceTypeCode>
        <ns0:LineNumber>00001</ns0:LineNumber>
        <ns0:ProprietaryDocumentIdentifier>QctPoNumber_0</ns0:ProprietaryDocumentIdentifier>
      </ns0:DocumentReference>
      <ns0:DocumentReference>
        <ns0:GlobalDocumentReferenceTypeCode>Customer Batch Number</ns0:GlobalDocumentReferenceTypeCode>
        <ns0:ProprietaryDocumentIdentifier>Name_0</ns0:ProprietaryDocumentIdentifier>
        <ns0:RevisionNumber>Value_0</ns0:RevisionNumber>
      </ns0:DocumentReference>
    </ns1:OrderReference>
    ...
 </ns0:Pip7B1WorkInProcessNotification>

Into this:

<?xml version="1.0" encoding="utf-8"?>
<Pip7B1WorkInProcessNotification>
  <fromRole>
    <PartnerRoleDescription>
      <ContactInformation>
        <contactName>
          <FreeFormText>Demo</FreeFormText>
        </contactName>
        <EmailAddress>demo@demo.com</EmailAddress>
        <telephoneNumber>
          <CommunicationsNumber>000-111-2222 EXT 1111</CommunicationsNumber>
        </telephoneNumber>
      </ContactInformation>
      <GlobalPartnerRoleClassificationCode>Solution Provider</GlobalPartnerRoleClassificationCode>
      <PartnerDescription>
        <BusinessDescription>
          <GlobalBusinessIdentifier>000000001</GlobalBusinessIdentifier>
        </BusinessDescription>
        <GlobalPartnerClassificationCode>Contract Manufacturer</GlobalPartnerClassificationCode>
      </PartnerDescription>
    </PartnerRoleDescription>
  </fromRole>
  ...
  <OrderReference>
      <DocumentReference>
        <GlobalDocumentReferenceTypeCode>Purchase Order</GlobalDocumentReferenceTypeCode>
        <LineNumber>00001</LineNumber>
        <ProprietaryDocumentIdentifier>0000000001</ProprietaryDocumentIdentifier>
      </DocumentReference>
      <DocumentReference>
        <GlobalDocumentReferenceTypeCode>Customer Batch Number</GlobalDocumentReferenceTypeCode>
        <ProprietaryDocumentIdentifier>demo</ProprietaryDocumentIdentifier>
        <RevisionNumber>D</RevisionNumber>
      </DocumentReference>
    </OrderReference>
    ...
</Pip7B1WorkInProcessNotification>

This component doesn’t require any configuration.

To use this pipeline component in your projects, you just copy the NamespaceStripper.dll file into the Pipeline Components folder that exists in the BizTalk Server installation directory:

  • ..\Program Files (x86)\Microsoft BizTalk Server\Pipeline Components;

on every server.

You do not need to add this custom pipeline component to the Global Assembly Cache (GAC) for the BizTalk Runtime to use.

What is BizTalk Pipeline Components Extensions Utility Pack?

BizTalk Pipeline Components Extensions Utility Pack provides a collection of custom pipeline components that developers can use in receive and send pipelines. These components extend BizTalk Server’s out‑of‑the‑box pipeline capabilities.

The project lives in the BizTalk Server Open Source Community repository on GitHub (https://github.com/BizTalkCommunity). Moreover, anyone can contribute new pipeline components or enhance existing ones to further improve BizTalk Server capabilities.

BizTalk Pipeline Components Extensions Utility Pack: Zip File Pipeline Component for BizTalk Server 2020

At the moment, this project is available for:

  • BizTalk Server 2020;
  • BizTalk Server 2016;
  • BizTalk Server 2010;
  • BizTalk Server 2006-2009

Download

You can download BizTalk Pipeline Components Extensions Utility Pack from GitHub:

Hope you find this helpful! If you liked the content or found it useful and would like to support me in writing more, consider buying (or helping to buy) a Star Wars Lego set for my son. 

Thanks for Buying me a coffe
Author: Sandro Pereira

Sandro Pereira lives in Portugal and works as a consultant at DevScope. In the past years, he has been working on implementing Integration scenarios both on-premises and cloud for various clients, each with different scenarios from a technical point of view, size, and criticality, using Microsoft Azure, Microsoft BizTalk Server and different technologies like AS2, EDI, RosettaNet, SAP, TIBCO etc. He is a regular blogger, international speaker, and technical reviewer of several BizTalk books all focused on Integration. He is also the author of the book “BizTalk Mapping Patterns & Best Practices”. He has been awarded MVP since 2011 for his contributions to the integration community.

Leave a Reply

Your email address will not be published. Required fields are marked *

The Ultimate Cloud
Management Platform for Azure

Supercharge your Azure Cost Saving

Learn More
Turbo360 Widget

Back to Top