BizTalk Mapper Extensions UtilityPack is now available for BizTalk Server 2016

  • Sandro Pereira
  • Feb 28, 2018
  • 29 min read

BizTalk Mapper Extensions UtilityPack is a set of libraries with several useful functoids to include and use it in a map, which will provide an extension of BizTalk Mapper capabilities.

This particular version is optimized for BizTalk Server 2016

Functoids

Conversion Functoids

  • Convert from human-readable to epoch date Functoid: This functoid allows you to convert a traditional date (Human Readable Date) into a Unix date (Epoch Date).
  • Convert from epoch to human-readable date Functoid: This functoid allows you to convert a Unix date (Epoch Date) into a traditional date (Human Readable Date).
  • Convert DateTime format Functoid: This functoid allows you to convert the DateTime format.

Dynamic Generators Functoids

  • Password Generator Functoid: Use this functoid to build a random password.
  • Guid Generator Functoid: This functoid allows you to generate a new Guid.
  • Tiny Id Generator Functoid: This functoid allows you to generate a new Tiny Id.

Encoder Functoids

  • Base64 Decoder Functoid: This functoid allows you to decode Base64-encoded text strings.
  • Base64  Encoder Functoid: This functoid allows you to convert a string object into a base64 encoded string.

Configuration Functoids

  • BTSNTSvc Config Get Functoid: This functoid allows you to get configuration parameters from BTSNTsvc.exe.config. If no section is specified, the functoid reads from AppSettings.
  • System Environment Variable Get Functoid: This functoid allows you to get configuration parameters from the machine’s System Environment Variable.
  • Custom Config Get Functoid: This functoid allows you to get configuration parameters from a custom configuration file.
  • Windows Registry Config Get Functoid: This functoid allows you to get configuration parameters from the Windows Registry.
  • SSO Config Get Functoid: This functoid allows you to get configuration parameters from the SSO Database.
  • Rule Engine Config Get Functoid: This functoid allows you to obtain a definition value from a Vocabulary in the Business Rules Engine.

CRM Functoids

  • CRM Lookup Functoid: This functoid allows you to retrieve a value from a CRM lookup field. This functoid is able to perform a lookup operation using two different approaches: Accessing the CRM database (read-only), for local CRM integration or through the CRM web services if you want to avoid giving access to the database or if you have to integrate CRM online.
  • MSCRM Map Helper Base Types Functoid: Use this functoid when you want to map CRM base data types such as xs:stringxs:int, and so on.
  • MSCRM Map Helper Guid Functoid: Use this functoid when you want the map CRM guid type.
  • MSCRM Map Helper Money Functoid: Use this functoid when you want to map the CRM money type.
  • MSCRM Map Helper Option Value Functoid: Use this functoid when you want to map the CRM option value type.
  • MSCRM Map Helper References Functoid: Use this functoid when you want to map the CRM reference type.

String Functoids

  • String Constant functoid: This functoid allows you to set constant values (strings) inside the maps.
  • String ToTitleCase functoid: This functoid allows you to convert the specified string to title case (except for words that are entirely in uppercase, which are considered to be acronyms).
  • String Advance Compare Functoid: This functoid allows you to compare two specified String objects, ignoring or honoring their case, and returns a boolean that indicates if they are equal or not.
  • String Replace Functoid: This functoid returns a new string in which all occurrences of a specified string (second parameter) found in the first string are replaced with another specified string (third parameter).
  • String Normalize Functoid: This functoid allows you to normalize the text. It will remove two or more consecutive spaces and replace them with a single space, remove two or more consecutive newlines and replace them with a single newline, and “condense” multiple tabs into a single tab.
  • String PadLeft Functoid: This functoid allows you to set a new string that right-aligns the characters in this instance by padding them on the left with a specified Unicode character, for a specified total length.
  • String PadRight Functoid: This functoid allows you to set a new string that left-aligns the characters in this string by padding them on the right with a specified Unicode character, for a specified total length.
  • String Remove Leading Zeros Functoid: This functoid allows you to remove any leading zeros from an input string.

Custom Advanced Functoids

  • Default Value Mapping functoid: The Default Value Mapping have a similar but different behavior. You can use the Default Value Mapping functoid to return a value from one of two input parameters. If the value of the first input parameter is Null or Empty, then the value of the second input parameter is returned; otherwise, the first input parameter is returned.

XPath Functoids

  • XPath FunctoidThis functoid natively integrates custom XPath queries in the BizTalk Mapper.

SharePoint Functoids

  • Add SharePoint 2013 Document Set Functoid: Creates a Document Set in an existing SharePoint 2013 List. 

Logical Functoids

  • Advance Logical AND Functoid: Use the Advance Logical AND functoid to return the logical AND of input parameters. This functoid requires 2 to 100 input parameters.
  • Advance Equal Functoid: Use the Advance Equal functoid to return the value true if the first input parameter is equal to the second input parameter. This functoid requires two input parameters.
  • Advance Greater Than Functoid: Use the Advance Greater Than functoid to return the value true if the first input parameter is greater than the second input parameter. This functoid requires two input parameters.
  • Advance Greater Than or Equal To Functoid: Use the Advance Greater Than or Equal To functoid to return the value “true” if the first input parameter is greater than or equal to the second input parameter. This functoid requires two input parameters.
  • Advance Less Than Functoid: Use the Advance Less Than functoid to return the value “true” if the first input parameter is less than the second input parameter. This functoid requires two input parameters.
  • Advance Less Than or Equal To Functoid: Use the Advance Less Than or Equal To functoid to return the value “true” if the first input parameter is less than or equal to the second input parameter. This functoid requires two input parameters.
  • Advance Not Equal Functoid: Use the Advance Not Equal functoid to return the value “true” if the first input parameter is not equal to the second input parameter. This functoid requires two input parameters.
  • Advance Logical NOT Functoid: Use the Advance Logical NOT functoid to return the logical inversion of the input parameter. This functoid requires only one input parameter.
  • Advance Logical OR Functoid: Use the Advance Logical OR functoid to return the logical OR of input parameters. The input parameters have to be Boolean or numeric. This functoid requires 2 to 100 input parameters.
  • If-Then-Else Functoid: Use the If-Then-Else Functoid to return a value from one of two input parameters based on a condition. If the condition (first input) is True, then the value of the second input parameter is returned; otherwise, the Third input is returned.

📝 One-Minute Brief

An introduction to the BizTalk Mapper Extensions UtilityPack for BizTalk Server 2016, providing a rich set of custom functoids for date conversions, encoding, configuration access, dynamic value generation, and CRM integration to extend BizTalk mapping capabilities.

Conversion Functoids

Description

This library includes a suite of functoids for data conversions that you can use in BizTalk Mapper.

Convert from human-readable to epoch date Functoid

This functoid allows you to convert a traditional date (Human Readable Date) into a Unix date (Epoch Date).

What is epoch time? 

The Unix epoch (or Unix time or POSIX time or Unix timestamp) is the number of seconds that have elapsed since January 1, 1970 (midnight UTC/GMT), not counting leap seconds (in ISO 8601: 1970-01-01T00:00:00Z). Literally speaking, the epoch is Unix time 0 (midnight 1-1-1970), but ‘epoch’ is often used as a synonym for ‘Unix time’. Many Unix systems store epoch dates as a signed 32-bit integer, which might cause problems on January 19, 2038 (known as the Year 2038 problem or Y2038).

Human readable timeSeconds
1 minute60 seconds
1 hour3600 seconds
1 day86400 seconds
1 week604800 seconds
1 month (30.44 days)2629743 seconds
1 year (365.24 days) 31556926 seconds

Parameters 

The functoid takes two mandatory input parameters:

  1. The input date or DateTime
  2. A string describing the input format of the first parameter

The output of the functoid is a long, Example: 1289427321

Convert from epoch to human-readable date Functoid

This functoid allows you to convert a Unix date (Epoch Date) into a traditional date (Human Readable Date).

Parameters 

The functoid takes two mandatory input parameters:

  1. The input date or DateTime
  2. A string describing the input format of the first parameter

The output of the functoid is a DateTime, Example: 10-11-2010 22:15:21

Dynamic Generators Functoids

Description

This library includes a suite of functoids that generate dynamic data; you can use this inside BizTalk Mapper.

Password Generator Functoid

This functoid allows you to build a random password.

Parameters 

The functoid takes five mandatory input parameters:

  1. A Boolean that describes if you want to use Lower Case chars
    1. “a”, “b”, “c”, “d”, “e”, “f”, “g”, “h”, “i”, “j”, “k”, “l”, “m”, “n”, “o”, “p”, “q”, “r”, “s”, “t”, “u”, “v”, “w”, “x”, “y”, “z”
  2. A Boolean that describes if you want to use Upper Case chars
    1. “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”, “J”, “K”, “L”, “M”, “N”, “O”, “P”, “Q”, “R”, “S”, “T”, “U”, “V”, “W”, “X”, “Y”, “Z”
  3. A Boolean that describes if you want to use Numbers
    1. “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “0”
  4. A Boolean that describes if you want to use Symbols
    1. “!”, “@”, “#”, “$”, “%”, “&”, “*”, “?”
  5. An integer that represents the length of the password

The output of the functoid is a string, Example: 6FcUw7RBFi

Guid Generator Functoid

This functoid allows you to generate a new Guid.

Parameters 

The functoid takes no parameters

The output of the functoid is a string. Example: 8fe5cee8-279b-4f1b-96f2-450cff2c846c

Tiny Id Generator Functoid

This functoid allows you to generate a new Tiny Id.

Parameters 

The functoid takes no parameters

The output of the functoid is a string. Example: _2ZgiIhjCECNxi9QwU96FA

Encoder Functoids

Description

This library includes a suite of functoids that provide a data encoder you can use in BizTalk Mapper.

Base64 Encoder Functoid

This functoid allows you to convert a string object into a base64 encoded string.

Parameters 

The functoid takes one mandatory input parameter:

  1. String that represents the text that you want to encode to Base 64

The output of the functoid is a string. Example: U2FuZHJvIFBlcmVpcmE=

Base64 Decoder Functoid

This functoid allows you to decode Base64-encoded text strings.

Parameters 

The functoid takes one mandatory input parameter:

  1. Base 64 string representation that you want to decode to a text string

The output of the functoid is a string. Example: Sandro Pereira

Configuration Functoids

Description

This library includes a suite of functoids that make read configuration parameter values from different locations and that you can use inside BizTalk mapper

BTSNTSvc Config Get Functoid

This functoid allows you to get configuration parameters from BTSNTsvc.exe.config. If no section is specified, the functoid reads from AppSettings.

Parameters 

The functoid takes two mandatory input parameters:

  1. String that represents the keyname that you want to read from BTSNTsvc.exe.config.
  2. A string that represents the section (can be an empty String) from the BTSNTsvc.exe.config that you want to read the keyname.

The output of the functoid is a string with the value of the configuration parameters from BTSNTsvc.exe.config.

System Environment Variable Get Functoid

This functoid allows you to get configuration parameters from the machine’s System Environment Variable.

Parameters 

The functoid takes one mandatory input parameter:

  1. String that represents the key that you want to read from the System Environment Variable.

The output of the functoid is a string with the value of the configuration parameters from the System Environment Variable of the machine

Custom Config Get Functoid

This functoid allows you to get configuration parameters from a custom configuration file.

Parameters 

The functoid takes two mandatory input parameters:

  1. String that represents the key (variable name)that you want to read from a custom configuration file
  2. A string that represents the path to the custom configuration file that you want to read the key.

The output of the functoid is a string with the value of the configuration parameters from a custom configuration file.

SSO Config Get Functoid

This functoid allows you to get configuration parameters from the SSO Database.

Parameters 

The functoid takes two mandatory input parameters:

  1. String that represents the name of the affiliate application to represent the configuration container to access.
  2. A string that represents the property name to read from the affiliate application.

The output of the functoid is a string with the value of the configuration parameters from SSO.

Windows Registry Config Get Functoid

This functoid allows you to get configuration parameters from the Windows Registry.

Parameters 

The functoid takes two mandatory input parameters:

  1. A string that represents the name or path of the subkey to open.
  2. A string that represents the name of the value to retrieve from the registry. This string is not case-sensitive.

The output of the functoid is a string with the value of the configuration parameters from the registry.

Rule Engine Config Get Functoid

This functoid allows you to obtain a definition value from a Vocabulary in the Business Rules Engine.

Parameters 

The functoid takes two mandatory input parameters:

  1. A string that represents the definition name (e.g., Value1).
  2. A string that represents the vocabulary name (i.e., Config).

The output of the functoid is a string with the value of the definition name from a specified vocabulary on the Business Rule Engine.

CRM Functoids

Description

This library includes a suite of functoids that help you to work easily with a CRM integration solution; you can use them in BizTalk Mapper.

CRM Lookup Functoid

This functoid allows you to retrieve a value from a CRM lookup field. This functoid is able to perform a lookup operation using two different approaches:

  • Accessing the CRM database (read-only) for local CRM integration.
  • Through the CRM web services, if you want to avoid giving access to the database, or if you have to integrate CRM online.

Parameters 

The functoid takes five mandatory input parameters:

  1. SSO Application Name: The connection parameters are stored inside SSO. Here, you have to specify the application name where you decide to store the settings. This allows you to integrate multiple CRM environments.
  2. CRM Guid Field Name: key field name of which you want to get the value.
  3. CRM Entity Name: CRM entity name on which the resolution will be performed
  4. CRM Input Field Name: Imagine having a “code” as input, and you want to know the CRM physical key. In this attribute, specify the name of the “code” field.
  5. CRM Input Value: value from the source system to resolve

The output of the functoid is a string. Example: 6erg5r-sdrf56-4dfgt5-6ty5r4-456trt

Installation 

Create an SSO application.

SQL Server Lookup: Create the following SSO configuration parameters:

  • CrmConnectionType: sql.
  • CrmDatabaseConnectionString: specify the CRM database connection string.

Open SQL Server management console, connect to CRM database, and execute the script under CRMLookup.sql file in the project folder.

Local CRM web services lookup: Create the following SSO configuration parameters:

  • CrmConnectionType: ws.
  • CrmUserName: specify a valid CRM username.
  • CrmUserDomain: specify a user’s active directory domain name.
  • CrmUserPassword: specify the user password.
  • CrmUri: specify the CRM web service URL (ex, http://MyCrmServer/MyCrmInstance/XRMServices/2011/Organization.svc).

CRM Online web services lookup: Create the following SSO configuration parameters:

  • CrmConnectionType: ws.
  • CrmUserName: specify a valid CRM username (ex: harry@mydomain.onmicrosoft.com
  • CrmUserPassword: specify the user password.
  • CrmUri: specify the CRM web service URL (ex, https://mydomain.crm4.dynamics.com/XRMServices/2011/OrganizationData.svc ).

MSCRM Map Helper Base Types Functoid

Use this functoid when you want to map CRM base data types such as xs:string, xs:int, and so on.

Parameters

The functoid takes three mandatory input parameters:

  1. Source Field: Link from source schema field value.
  2.  Target Field Name: CRM target field name.
  3.  Target Field Type: CRM target field type (Example: xs:dateTime).

The output of this functoid should be linked to:

  • /<Schema>/<CRM_Operation>/entity/Attributes/KeyValuePairOfstringanyType/key.

MSCRM Map Helper Guid Functoid

Use this functoid when you want to map CRM guid type.

Parameters

The functoid takes two mandatory input parameters:

  1.  Source Field: Link from source schema field value.
  2.  Target Field Name: CRM target field name.

The output of this functoid should be linked to:

  • /<Schema>/<CRM_Operation>/entity/Attributes/KeyValuePairOfstringanyType/key.

You may use this functoid in combination with the CRM Lookup functoid, where you first find the entity guid and then use the result to map to the destination schema.

MSCRM Map Helper Money Functoid

Use this functoid when you want to map the CRM money type.

Parameters

The functoid takes two mandatory input parameters:

  1.  Source Field: Link from source schema field value.
  2. Target Field Name: CRM target field name.

The output of this functoid should be linked to:

  • /<Schema>/<CRM_Operation>/entity/Attributes/KeyValuePairOfstringanyType/key

MSCRM Map Helper Option Value Functoid

Use this functoid when you want to map the CRM option value type.

Parameters

The functoid takes two mandatory input parameters:

  1. Source Field: Link from source schema field value.
  2. Target Field Name: CRM target field name.

The output of this functoid should be linked to:

  •  /<Schema>/<CRM_Operation>/entity/Attributes/KeyValuePairOfstringanyType/key.

MSCRM Map Helper References Functoid

Use this functoid when you want to map the CRM reference type.

Parameters

The functoid takes three mandatory input parameters:

  1. Source Field: Link from source schema field value.
  2.  Target Field Name: CRM target field name.
  3. Entity Name: CRM referenced entity.

The output of this functoid should be linked to:

  • /<Schema>/<CRM_Operation>/entity/Attributes/KeyValuePairOfstringanyType/key.

String Functoids

Description

This library includes a suite of functoids that provide many methods for safely creating, manipulating, and comparing strings, which you can use in BizTalk Mapper.

String Constant functoid

This functoid allows you to set constant values (strings) inside the maps.

Parameters 

The functoid takes one mandatory input parameter:

  1. String value to be returned

The output of the functoid is the string set in the output. Example: P0011.

String ToTitleCase functoid

This functoid allows you to convert the specified string to title case (except for words that are entirely in uppercase, which are considered to be acronyms).

Parameters 

The functoid takes one mandatory input parameter:

  1. The string to convert to title case

The output of the functoid is a string converted to title case. Example: Sandro Augusto Sousa Pereira.

String Advance Compare Functoid

This functoid allows you to compare two specified String objects, ignoring or honoring case, and returns a Boolean indicating whether they are equal.

Parameters 

The functoid takes three mandatory input parameters:

  1. The first string to compare
  2. The second string to compare
  3. True to ignore case during the comparison; otherwise, False.

The output of the functoid is a Boolean value indicating whether they are equal. Example: True.

String Replace Functoid

This functoid returns a new string in which all occurrences of a specified string (second parameter) found in the first string are replaced with another specified string (third parameter).

Parameters 

The functoid takes three mandatory input parameters:

  1. String where we will replace the values.
  2. The string to be replaced.
  3. The string to replace all occurrences of oldValue.

The output of the functoid is a string that is equivalent to the current string except that all instances of oldValue are replaced with newValue. If oldValue is not found in the current instance, the method returns the current instance unchanged. Example: Sandro Pereira: BizTalk.

String Normalize Functoid

This functoid allows you to normalize the text. It will remove two or more consecutive spaces and replace them with a single space, remove two or more consecutive newlines and replace them with a single newline, and “condense” multiple tabs into a single tab.

Parameters 

The functoid takes one mandatory input parameter:

  1. The string to normalize

The output of the functoid is a string with consecutive spaces, lines, or tabs removed. Example: Sandro Augusto Sousa Pereira.

String PadLeft Functoid

This functoid allows you to set a new string that right-aligns the characters in this instance by padding them on the left with a specified Unicode character, for a specified total length.

Parameters 

The functoid takes three mandatory input parameters:

  1. String that will be padded on the left with a specified Unicode character
  2. The number of characters in the resulting string is equal to the number of original characters plus any additional padding characters.
  3. A Unicode padding character.

The output of the functoid is a new string that is equivalent to this instance, but right-aligned and padded on the left with as many paddingChar characters as needed to create a length of totalWidth. However, if totalWidth is less than this instance’s length, the method returns a reference to the existing instance. If totalWidth is equal to the length of this instance, the method returns a new string that is identical to this instance. Example: “*****BTS”.

String PadRight Functoid

This functoid allows you to set a new string that left-aligns the characters in this string by padding them on the right with a specified Unicode character, for a specified total length.

Parameters 

The functoid takes three mandatory input parameters:

  1. String that will be padded on the left with a specified Unicode character.
  2. The number of characters in the resulting string is equal to the number of original characters plus any additional padding characters.
  3. A Unicode padding character.

The output of the functoid is a new string that is equivalent to this instance, but left-aligned and padded on the right with as many paddingChar characters as needed to create a length of totalWidth. However, if totalWidth is less than this instance’s length, the method returns a reference to the existing instance. If totalWidth is equal to the length of this instance, the method returns a new string that is identical to this instance. Example: BTS******.

String Remove Leading Zeros Functoid

This functoid allows you to remove any leading zeros from an input string.

Parameters 

The functoid has one mandatory parameter:

  1. Input string that contains leading zeros that need to be removed.

The output of the functoid is an integer equal to the input instance, with the leading zeros removed.

Custom Advanced Functoids

Description

This library includes a suite of functoids that provide methods for Conditional mapping that you can use inside BizTalk Mapper.

Default Value Mapping functoid

The Value Mapping and Value Mapping (Flattening) functoids are used to provide a conditional mapping from an input instance message to an output instance message. When their first input parameter is true, the second input parameter is put into the specified element or attribute in the output instance message; otherwise, that element or attribute is not created in the output instance message.

The Default Value Mapping has a similar but different behavior. You can use the Default Value Mapping functoid to return a value from one of two input parameters. If the value of the first input parameter is Null or Empty, then the value of the second input parameter is returned; otherwise, the first input parameter is returned.

Parameters 

The functoid takes one mandatory input parameter:

  1. A string value tested as Null or Empty.
  2. A string value that will act as the default value in case the first input is null or empty.

If the value of the first input parameter is Null or Empty, then the value of the second input parameter is returned; otherwise, the first input parameter is returned. Example: P0011.

Authentication Functoids

Description

This library currently includes one functoid. This functoid enables you to obtain an authentication token from the Windows Azure Access Control Service.

Get Windows Azure ACS Wrap Token Functoid

This functoid allows you to obtain an ACS WRAP access token to access Windows Azure BizTalk Services Bridge or Windows Azure Service Bus resources. Note this token needs to be added to the outbound request message HTTP Header. In order to do so, use the Authorization key and assign its value as WRAP access_token={RECEIVED TOKEN}.

Parameters 

The functoid takes four mandatory input parameters:

  1. A string issuerName – IssuerName belonging to the BizTalk Service namespace or Windows Azure Service Bus namespace.
  2. A string issuerKey – Issuerkey belonging to the  BizTalk Service namespace or Windows Azure Service Bus namespace.
  3. A string endPoint – Full Uri pointing to the BizTalk Service Bridge or Windows Azure Service Bus queue/topic.
  4. A string windowsAzureACSNamespace – BizTalk Service or Service Bus ACS namespace name.

The output of the functoid is a string. Example:
net.windows.servicebus.action=Listen%2cManage%2cSend&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=https%3a%2f%2facsnamespace-bts.accesscontrol.windows.net%2f&Audience=http%3a%2f%2fnamespace.biztalk.windows.net%2fdefault%2f%2fRCVINBOUND&ExpiresOn=1390169379&Issuer=https%3a%2f%2fnamespace2786-bts.accesscontrol.windows.net%2f&HMACSHA256=pHxuXvfPSkvq4TRyB5F%2fj%1fUtC1m3TyQKEJ6%2bkO8mhQg%3

The output should then be added to the Authorization HTTP header of the outbound message. Example
[“Authorization”] = String.Format(“WRAP access_token=\”{0}\””, <YOUR TOKEN>).

XPath Functoids

Description

This library includes a suite of functoids that provide XPath methods that you can use inside BizTalk Mapper.

XPath Functoid

This functoid natively integrates custom XPath queries in the BizTalk Mapper. This unique functoid, which is a powerful competitor to the ScripterFunctoid or a custom XSLT stylesheet, mixes exceptionally well with other functoids.

Parameters

The functoid takes one mandatory input parameter and one optional parameter:

  1.  The first parameter specifies an absolute or relative XPath expression, which becomes a native part of the generated XSLT.
  2. The (optional) second parameter is a link to the source tree node that becomes the (looping) context for the XPath expression.

This defines the current context node for the XPath expression and enables relative XPath expressions. Additionally, the mapper will generate a looping construct for that linked node where appropriate.

The functoid output can be linked to a destination schema node or serve as input to other functoids

SharePoint Functoids

Description

This library includes a suite of functoids that help you to work easily in a SharePoint integration solution; you can use this inside BizTalk Mapper.

Add SharePoint 2013 Document Set Functoid

Creates a Document Set in an existing SharePoint 2013 List. It is a requirement that the SharePoint list contains a custom content-type of type document set.

Parameters

The following parameters are required:

  1.  string siteUrl = SharePoint Site Url.
  2.  string listName = SharePoint List Name containing the custom content-type Document Set.
  3.  string docSetContentTypeName = Document Set Content Type name.
  4. string newDocSetName=Name of the to document set to be created.

Comment: A custom content type of type document set needs to be available in SharePoint.

Logical Functoids

This library includes a suite of functoids to perform a variety of logical operations, often controlling whether a particular element or attribute is created in an output instance message. Most of the Logical Functoids are a replica of the existing Logical Functoids that came with BizTalk Server, with the advantage that these will allow you to connect with other Custom String Functoids. They are fully compatible with existing functoids and don’t produce any additional code.

Advance Logical AND Functoid

Use the Advanced Logical AND functoid to return the logical AND of input parameters. It determines whether all of the specified input parameters are true.

Parameters

This functoid requires a minimum of two input parameters and a maximum of one hundred:

  1. Parameter 1: A value that can be evaluated as either True or False.
  2. Parameters 2 – 100: Values that can be evaluated as either True or False.

Returns the logical AND of parameters. True if all of the specified input parameters evaluate to True; False otherwise.

Advance Equal Functoid

Use the Advanced Equal functoid to return the value “true” if the first input parameter is equal to the second input parameter. It tests whether the two input parameters are equal.

Parameters

This functoid requires two input parameters:

  1. Parameter 1: A value to be tested for equality with Parameter 2.
  2. Parameter 2: A value to be tested for equality with parameter 1.

Returns True if the values of the two input parameters are equal; False otherwise.

Advance Greater Than Functoid

Use the Advanced Greater Than functoid to return the value “true” if the first input parameter is greater than the second input parameter. It tests whether the first input parameter is greater than the second. 

Parameters

This functoid requires two input parameters:

  1. Parameter 1: A value to be tested to determine whether it is greater than parameter 2.
  2. Parameter 2: A value to be tested to determine whether it is greater than parameter 1.

Returns True if the value of the first input parameter is greater than the value of the second input parameter; False otherwise.

Advance Greater Than or Equal To Functoid

Use the Advanced Greater Than or Equal To functoid to return the value “true” if the first input parameter is greater than or equal to the second input parameter. It tests whether the first input parameter is greater than or equal to the second. 

Parameters

This functoid requires two input parameters:

  1. Parameter 1: A value to be tested to determine whether it is greater than or equal to parameter 2.
  2. Parameter 2: A value to be tested to determine whether it is greater than or equal to parameter 1.

Returns True if the value of the first input parameter is greater than or equal to the value of the second input parameter; False otherwise.

Advance Less Than Functoid

Use the Advance Less Than functoid to return the value true if the first input parameter is less than the second input parameter. It tests whether the first input parameter is less than the second. 

Parameters

This functoid requires two input parameters:

  1. Parameter 1: A value to be tested to determine whether it is less than parameter 2.
  2. Parameter 2: A value to be tested to determine whether it is less than parameter 1.

Returns True if the value of the first input parameter is less than the value of the second input parameter; False otherwise.

Advance Less Than or Equal To Functoid

Use the Advanced Less Than or Equal To functoid to return the value true if the first input parameter is less than or equal to the second input parameter. It tests whether the first input parameter is less than or equal to the second. 

Parameters

This functoid requires two input parameters:

  1. Parameter 1: A value to be tested to determine whether it is less than or equal to parameter 2.
  2. Parameter 2: A value to be tested to determine whether it is less than or equal to parameter 1.

Returns True if the value of the first input parameter is less than or equal to the value of the second input parameter; False otherwise.

Advance Not Equal Functoid

Use the Advanced Not Equal functoid to return the value true if the first input parameter is not equal to the second input parameter. It tests whether the two input parameters are not equal. 

Parameters

This functoid requires two input parameters:

  1. Parameter 1: A value to be tested for inequality with parameter 2.
  2. Parameter 2: A value to be tested for inequality with parameter 1.

Returns True if the values of the two input parameters are not equal; False otherwise.

Advance Logical NOT Functoid

Use the Advanced Logical NOT functoid to return the logical inversion of the input parameter. Use to logically negate the value of the Boolean input parameter.

Parameters

This functoid requires one input parameter only:

  1. Parameter 1: A value that can be evaluated as either True or False.

Returns True if the specified input parameter evaluates to False; False otherwise.

Advance Logical OR Functoid

Use the Advanced Logical OR functoid to return the logical OR of input parameters. The input parameters have to be Boolean or numeric. It determines whether any of the specified input parameters are true. 

Parameters

This functoid requires a minimum of two input parameters and a maximum of one hundred:

  1. Parameter 1: A value that can be evaluated as either True or False.
  2. Parameters 2 – 100: Values that can be evaluated as either True or False.

Returns True if any of the specified input parameters evaluate to True; False otherwise.

If-Then-Else Functoid

Use the If-Then-Else Functoid to return a value from one of two input parameters based on a condition. If the condition (first input) is True, then the value of the second input parameter is returned; otherwise, the Third input is returned.  

Parameters

This functoid requires three input parameters:

  1. A Boolean representing the result of a previous condition.
  2. The value to be returned if the condition is True.
  3. The value to be returned if the condition is False.

If the condition is True, then the value of the second input parameter is returned; otherwise, the third input is returned.

Installation

Installation in a production environment

In a production environment, you just need to install the DLL in the GAC:

  • gacutil /i assemblyPath

Installation in a development environment

In a development environment, you should install the DLL in two places:

  1. For using inside the Visual Studio BizTalk Mapper, you need to copy the dll file to the %BTS%\Developer Tools\Mapping Extensions folder, where %BTS% is the installation folder of BizTalk.
  2. Start Visual Studio.NET and go to Tools > Choose Toolbox Items and then go to the Functoids pane. Check the functoids that should be available in the toolbox.
  3. You must also install the assembly into the GAC so that the functoid is available to BizTalk at runtime.
    • gacutil /i assemblyPath

PowerShell

Installation in a production environment

In a production environment, copy the deployment directory and the PowerShell directory from the build environment and place them on the production server:

  • Ensure you are using the latest version of PowerShell, or download it.
  • Rename the deploymentSettings_Production.xml file to deploymentSettings.xml.
  • Ensure you have compiled the BizTalk Mapper Extensions UtilityPack Solution using the RELEASE option.
  • Execute the InstallAndRegisterFunctoids.ps1 script.

Installation in a development environment

In a development environment, go to the PowerShell directory

  • Ensure you are using the latest version of PowerShell, or download it here
  • Rename the deploymentSettings_Other.xml file to deploymentSettings.xml.
  • Ensure you have compiled the BizTalk Mapper Extensions UtilityPack Solution using the DEBUG option
  • Execute the InstallAndRegisterFunctoids.ps1 script

Download

THESE FUNCTOIDS ARE PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND.

You can download BizTalk Mapper Extensions UtilityPack from GitHub here:

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.

2 thoughts on “BizTalk Mapper Extensions UtilityPack is now available for BizTalk Server 2016”

  1. Hi Sandro,

    Thanks very much for the extensions!

    Something is possibly not right with the get SSO config functoid:

    Exception:
    Error:Transformation failed. The mapping does not exist. For Config Store applications, the config info has not been set.

    Exception type: XTransformationFailureException
    Source: Microsoft.XLANGs.Engine
    Target Site: Void ApplyInMemoryTransform(System.Type, Microsoft.XLANGs.RuntimeTypes.TransformMetaData, System.Object[], System.IO.Stream[])
    The following is a stack trace that identifies the location where the exception occured

    at Microsoft.XLANGs.Core.Service.ApplyInMemoryTransform(Type mapRef, TransformMetaData trfMetaData, Object[] outParams, Stream[] inStreams)
    at Microsoft.XLANGs.Core.Service.ApplyTransform(Type mapRef, Object[] outParams, Object[] inParams)
    at VVAA.IMM.ITS.GCI.Orchestrations.ProcessITS_DA_to_CRM.segment1(StopConditions stopOn)
    at Microsoft.XLANGs.Core.SegmentScheduler.RunASegment(Segment s, StopConditions stopCond, Exception& exp)
    Additional error information:

    An error occurred during a call to extension function ‘SSORead’. See InnerException for a complete description of the error.

    Exception type: XslTransformException
    Source: System.Data.SqlXml
    Target Site: System.Object Invoke(System.Object, System.Object[])
    The following is a stack trace that identifies the location where the exception occured

    at System.Xml.Xsl.Runtime.XmlExtensionFunction.Invoke(Object extObj, Object[] args)
    at System.Xml.Xsl.Runtime.XmlQueryContext.InvokeXsltLateBoundFunction(String name, String namespaceUri, IList`1[] args)
    at (XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime, XPathNavigator {urn:schemas-microsoft-com:xslt-debug}current)
    at (XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime, XPathNavigator {urn:schemas-microsoft-com:xslt-debug}current)
    at Root(XmlQueryRuntime {urn:schemas-microsoft-com:xslt-debug}runtime)
    at System.Xml.Xsl.XmlILCommand.Execute(Object defaultDocument, XmlResolver dataSources, XsltArgumentList argumentList, XmlWriter writer)
    at Microsoft.XLANGs.BaseTypes.CompiledXsltWrapperTransform.Transform(IXPathNavigable input, XsltArgumentList arguments, Stream output, XmlResolver resolver)
    at Microsoft.XLANGs.Core.Service.ApplyInMemoryTransform(Type mapRef, TransformMetaData trfMetaData, Object[] outParams, Stream[] inStreams)
    Additional error information:

    The mapping does not exist. For Config Store applications, the config info has not been set.

    Exception type: COMException
    Source: SSOConfigStore.SSOConfigStore.1
    Target Site: Void GetConfigInfo(System.String, System.String, Int32, Microsoft.EnterpriseSingleSignOn.Interop.IPropertyBag)
    Help Link:
    The following is a stack trace that identifies the location where the exception occured

    at Microsoft.EnterpriseSingleSignOn.Interop.ISSOConfigStore.GetConfigInfo(String applicationName, String identifier, Int32 flags, IPropertyBag properties)
    at BizTalk.Configuration.Functoids.SSOConfig.SSORead(String appName, String propName)

    The application name and property name are fine. Using the SSOSettingsFileReader.dll from BTDF I have no issues.

    Any idea whats wrong?

    Kind regards,
    Radoslaw Merkx

  2. I am having issues with the Default Value Mapping functoid. I can see the values coming in my source, but the output from the functoid does not return me any value. It gives me blank.

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