Quantcast
Channel: BizTalk – SANDRO PEREIRA BIZTALK BLOG
Viewing all 287 articles
Browse latest View live

Visio 2013 Stencils for BizTalk Server Preview

$
0
0

It was just over two years since I published the first release of my Visio stencils for BizTalk Server and after many downloads, feedback, suggestions and some complaints :) … I decided that it was time to make a new upgrade!

This time will be a major upgrade, apart from improve some of the existing shapes, remove several and of course add new ones for example: "Cloud" and "Bridges", I also decided to use a more current design: metro style, similarly to what happens with the appearance of new shapes in Visio 2013.

Of course I’m not doing it all from scratch (I’m not a designer), instead I’m reusing many of the things that already exist today and join them.

So, if you want, now is the time to give your feedback and suggestion to what shapes you like to have… Take a look to the first scratch:

BizTalk-Server-Stencils-For-Visio-2013-first-draft

UPDATE: Here are some of the new shapes that will be available in the next version of Visio Stencils for BizTalk Server:

  • Certificates
  • Business Activity Monitoring
  • Business Rules Engine
  • BizTalk360 Server
  • SMTP Server
  • BizTalk Administration Console
  • Web Server
  • and Windows Azure BizTalk Virtual Machine

BizTalk-Server-Stencils-For-Visio-2013-second-draft_thumb



Visio 2013 Stencil for BizTalk Server

$
0
0

Finally I’m happy with the final result and ready to release the first version of this new version of Visio 2013 Stencils for BizTalk Server… This is a collection of 73 modern flat Visio 2013 shapes that will help you representing BizTalk Server physical architectures, Integration architectures (Cloud or Hybrid scenarios) or solutions diagrams in Visio 2013:

  • BizTalk Servers shapes
    • BizTalk, SQL, BAM, IIS and so on…
  • Common BizTalk artifacts:
    • Orchestrations, Receive and Send Pipelines, Transformations and Filters
  • BizTalk Out-of-box Adapters shapes
    • SMTP, SQL, File, FTP, SFTP, MSMQ, …
  • Business Activity Monitoring, Business Rules Engine, BizTalk Console Administration and BizTalk360
  • Windows Azure BizTalk Services and Cloud shapes
  • Common Integration Servers shapes
    • SMTP, Active Directory, Web, Mainframe, …
  • Certificates, RFID, Gateway, Secure Message and many more…

BizTalk-Server-Stencils-For-Visio-2013

As I said in my previous post, this is a major upgrade, apart from improve some of the existing shapes, several shapes were removed (like logo types and “static” receive port representations)… but many new ones were created for example: “Cloud” and “Bridges and other to provide better representation of receive and send ports. For you to have a good perspective we went from 37 to 73 available shapes that you can use and resize without losing quality!

Another big complaints that existed in the previous version was:

  • The size of the stencil file – 26,5MB
  • And the lack parameterization or flexibility on some of the shapes, specially receive and send ports shapes available

Well this two issues were solved this version. The size of the file is now 822KB! And all the shapes can be modify or reconfigured and you can apply different design templates.

There are still some points that could be improved as well as adding new stencil and I expect next month to release a new version with some of these improvements.

Instructions:

  • Download the file and copy to the folder “C:\Users\you_user\Documents\My Shapes” (that is the default folder for the Visio custom shapes)
  • To access the shapes in Visio, select from the Shapes Windows: “More Shapes -> My Shapes -> BizTalkServerStencilsForVisio2013.vssx”

Add-BizTalk-Server-Stencils-For-Visio-2013-to-toolbox

You can download Visio 2013 Stencil for BizTalk Server (or Visio icons for BizTalk Server) from:

Collection of Visio 2013 Stencil for BizTalk Server (822 KB)
Microsoft | TechNet Gallery

 

Other Resources:


How to create a Maintenance Plan to delete BizTalk Database Backups files

$
0
0

BizTalk Server database databases and their health are very important for a successful BizTalk Server database messaging environment. This is nothing new and everybody knows!

Although there can be many settings that we can configure, like auto-growth settings for BizTalk Databases (you can learn more here), there are two main things that we must understand and be aware, especially the database administrators:

  • Execution of the BizTalk Server SQL Agent jobs are crucial for managing the BizTalk Server databases and for maintaining optimal performance.
  • The Backup BizTalk Server job is the only supported method to backup the BizTalk Server databases and requires that all of the BizTalk Server databases are configured to use the SQL Server full recovery model.

BizTalk Server 2010/2013 is shipped out with a total of 13 SQL Agent jobs. 2 of these jobs must be configured. The two jobs that needs configuration are the two most important jobs:

  • The “Backup BizTalk Server“: This is the job provided by Microsoft to do a best practice backup of the BizTalk databases.
  • And the “DTA Purge and Archive“: This SQL Agent job purges and archives information from the tracking database, you do need to configure this job in order for it to work.

However what many times we forget is that this two jobs, by default, don’t provide functionalities for deleting backup files that have accumulated over time on our file system and we normally forget to create a “process” or a “job” to accomplish this until is too late. The result of that is… lots of times we just remember when disks are full and everything stop to work!

We can for example implementing your custom “sp_ DeleteBackupHistoryAndFiles” as you can see in my post: BizTalk 2013 Installation and Configuration – Configure BizTalk Server SQL Jobs (Part 15), however I personally don’t like this approach for two reasons:

  • I don’t like to change the scripts of the standard BizTalk jobs
  • And I also believe that this approach is very limited and doesn’t allow the flexibility that we all want.

Instead I prefer to create an SQL Server Maintenance Plan to delete BizTalk Database Backups to accomplish this task.

Maintenance Plan to clean BizTalk Database backup’s files

Maintenance Plans allows DBA’s to have flexibility to create a workflow to execute several tasks required to make sure that database are optimized, regularly backed up, and free of inconsistencies. However almost all of these tasks are warranted by the existing BizTalk jobs and I will not use them. The only thing we need is to create a task to clean BizTalk Database backup’s files from our file system.

The main advantage of this approach is that will allow us more flexibility for further changes and we can also use them to other backup’s that we have.

How to create a Maintenance Plan to clean BizTalk Database backup’s files

As a personal note, you should ensure that SQL Server Agent service is running because the maintenance plans depend on the Microsoft SQL Server Agent in order to run on a regular basis.

Important Note: this example is created to run in a developer machine, so if you are implementing this approach in production environments make sure to keep the backups for the time you see that fit your requirements or make sure the backups are save in an external storage before you delete this files from the file system.

To create the maintenance plan you need to:

  • Open the SQL Server Management Studio by choosing Start > Programs > Microsoft SQL Server [edition] > SQL Server Management Studio.

Or

  • Press the “Windows key” to switch to Windows Server 2012 Start Screen and type “SQL Management” or “SQL” and click in “SQL Server Management Studio” option on Apps menu.
  • Expand the server and then the “Management” folder.
  • Right-click “Maintenance Plans” and select “Maintenance Plan Wizard”. This launches the wizard and you can now step through and create a plan customized to meet your maintenance requirements.

create-new-Maintenance-Plan-Wizard

  • On the SQL Server Maintenance Plan Wizard page, click “Next”.

SQL-Server-Maintenance-Plan-Wizard-page

  • On the “Select Plan Properties” page:
    • In the “Name”: enter the name of the maintenance plan you are creating.
    • In the “Description”: enter a briefly describe your maintenance plan.
    • In the “Run as”: specify the credential that Microsoft SQL Server Agent uses when executing the maintenance plan – leave the default.
    • Select “Single schedule for the entire plan or no schedule” to specify the recurring schedule of the maintenance plan.

Select-Plan-Properties-page

    • Under Schedule, click “Change…”
      • Under “Frequency”, on the “Occurs” list, select “Daily” and in the “Recurs every” box, enter how often the job schedule repeats in days: 1 Day.
      • Under “Daily frequency”, select “Occurs once at” and specific the time of day when the job schedule should run: 12:00:00
      • Leave the default values in the rest of the properties and click “OK”

New-Job-Schedule

  • Back to the Select Plan Properties page, click “Next”
  • On the “Select Maintenance Tasks” page, select “Maintenance Cleanup Task” from the list and click “Next”

Select-Maintenance-Tasks

  • On the “Select Maintenance Task Order” page, click “Next” to continue
  • On the “Define Maintenance Cleanup Task” page, specify the following properties:
    • Under “Delete files of the following type”: select “Backup files”
    • Select “Search folder and delete files based on an extension” to delete all files with the specified extension in the specified folder
      • Under “Folder”: specify the path and name of the folder containing the files to be deleted.
      • Under “File extension”: Provide the file extension of the files to be deleted.
      • Select also “Include first-level subfolders” option if to want to delete the files also from first-level subfolders under the folder specified in Folder.
    • Select “Delete files based on the age of the file at task run time” and specify the minimum age of the files that you want to delete under “Delete files older than the following” property
      • Specify 1 Day
    • Click “Next”

Define-Maintenance-Cleanup-Task

  • On the “Select Report Options“ page, click “Next”.
  • On the “Complete the Wizard” page, verify the choices made on the previous pages, and click Finish.

Complete-the-Wizard

  • On the Maintenance Wizard Progress page, verify if every action where successful executed and then click “Close”

Maintenance-Wizard-Progress


Visio 2010 Stencil for BizTalk Server Updated with 63 new modern flat shapes

$
0
0

This week I published 73 modern flat shape that will help you representing BizTalk Server physical architectures, Integration architectures (Cloud or Hybrid scenarios) or solutions diagrams in Visio 2013. However I found out that many people are still using Visio 2010, so I thought it would be a good idea to provide these new shapes also for Visio 2010… The result was 63 new modern flat shapes that are now joining the 35 shapes that already existed (two of them were remove from this version) making a total of a total of 98 shapes, representing:

  • BizTalk topologies (Standalone and Clustering)
  • BizTalk Runtime Architecture and ESB Toolkit
  • Receive and Send Pipelines, Inbound and Outbound Maps, Adapters and Filters
  • Receive Ports and Receive Locations (One-way and Request Response)
  • Send Ports (One-way and Solicit-Response)
  • BizTalk Out-of-box Adapters shapes
    • SMTP, SQL, File, FTP, SFTP, MSMQ, …
  • Windows Azure BizTalk Services and Cloud shapes
  • And many more…

New-BizTalk-Server-Stencils-For-Visio-2010

BizTalk-visio-shapes

Note: Not all the shapes that are available for Visio 2013 will be in this version but you can use this new shapes and resize them without losing quality.

You can download Visio 2010 Stencil for BizTalk Server (or Visio icons for BizTalk Server) from:

Collection of Visio 2010 Stencil for BizTalk Server (18.2 MB)
Microsoft | TechNet Gallery

 

Other Resources:


How to install and configure BizTalk360 on BizTalk Server 2013 standalone machine running on Windows Server 2012

$
0
0

Are you planning to install BizTalk360 on a Windows Server 2012 machine? Check out Installing and Configuring BizTalk360 on Windows Server 2012 / BizTalk Server 2013 (user guide) available for download on BizTalk36o website.

BizTalk360-Installing-and-Configuring-BizTalk360-on-Windows-Server-2012

This user guide will explain how to install and configure BizTalk360 in an existing Microsoft BizTalk Server 2013 standalone machine (single computer) running under Windows Server 2012. This information will help you plan the BizTalk360 installation and configuration process and components on which it depends.

What is BizTalk360?

BizTalk360 (http://www.biztalk360.com/) is a web based (RIA) designed primarily to perform monitoring and support for BizTalk Server environments (Production, Test, Development). It addresses some of the common problems customers face today like governance/auditing, fine grained authentication, remote access and so on. It also makes life easy for people who support production BizTalk systems by providing various dashboard and greater visibility.

This tool is developed by Kovai Limited, based in London UK, but everyone knows this tool through its CTO Saravana Kumar, Microsoft BizTalk Server MVP since 2007 and a well-recognized member of the BizTalk community. Version 6.5.191.0 is available for download here, give it a try!

You can download user guide from:

Installing and Configuring BizTalk360 on Windows Server 2012 / BizTalk Server 2013 (user guide)
BizTalk360


Cannot generate serialization assembly {AssemblyName}.XmlSerializers.dll because it already exists. Use /force to force an overwrite of the existing assembly.

$
0
0

For some reason after having migrated a BizTalk 2006/Visual Studio 2005 solution to BizTalk 2010/VS 2010 using Visual Studio Conversion Wizard, I got the following error:

"Cannot generate serialization assembly {AssemblyName}.XmlSerializers.dll because it already exists. Use /force to force an overwrite of the existing assembly"

SGEN-Cannot-generate-serialization-assembly-XmlSerializers

The migration of this project was divided into two parts:

  • First part is to migrate the project as is to the new environment in order to discontinue the old platform;
  • The second part is to improve the project with new functionalities available in the new version (migrate SOAP adapter to WCF and so on);

CAUSE

The XML Serializer Generator creates an XML serialization assembly for types in a specified assembly in order to improve the startup performance of a XmlSerializer when it serializes or deserializes objects of the specified types.

However, some time if you have a traditional Web Service reference in your BizTalk Project this error may suddenly appear. It seems that when you try to build the solution the SGEN process is having some trouble deleting the original XMLSerializers.dll and in result will give you that error.

SOLUTION 1

This problem can be solved by:

  • Going to the path “%windir%\Microsoft.NET\assembly\” (.NET 4.0) or “C:\WINDOWS\assembly” (if you use previous version of .NET) and uninstall the corresponding Project name DLL from there.
  • And then rebuild the Project.

Limitation: each time you deploy the DLL to the GAC, the next time you need to build the project you first need to uninstall the DLL from the GAC

SOLUTION 2

You also can solve this error by choosing not to generate a Serializiation assembly from the Project Properties.

  • Right-click in the project name and select “Properties” option
  • On the left tree option choose “Build” tag
  • Under the Output properties, from the drop box “Generate serialization assembly” select “Off”

Visual-Studio-Project-Properties-Generate-serialization-assembly-off


BAM Portal: This website uses a data provider that may be unsafe. If you trust the website, click OK, otherwise click Cancel

$
0
0

When we try to access BAM Portal, sometimes Office Web Components Display Cross-Domain warning messages such as:

“This Web site uses a data provider that may be unsafe. If you trust the Web site, click OK, otherwise click Cancel.”

This-website-uses-data-provider-that-may-be-unsafe

Or this other common warning messages

“This page accesses data on another domain. Do you want to allow this?”

Or even:

“Failed to get data. If available, errors returned from the provider are listed below… Safety settings on this machine prohibit accessing a data source on another domain.”

CAUSE

This are some of the normal warning message that the Microsoft Office 2003 Web Components displays when a user try to accesses to BAM Portal, some because a scripted Web page tries to run ADO code from an untrusted provider (accessing data from a domain other than the one from which the Web page originates)

For ADO 2.7 and earlier you may receive: “This page accesses data on another domain. Do you want to allow this?”

However, for ADO 2.8 and later, the preceding message no longer appears. Instead, the following message appears in this context: “This Web site uses a data provider that may be unsafe. If you trust the Web site, click OK, otherwise click Cancel.”

The purpose for the alert is to prevent a Web page author from directing users to a potentially malicious page that uses the security context of the user to access data for which the author does not have access.

SOLUTION

To avoid this messages in Microsoft Internet Explorer, you can add a secure Web site to your Trusted Sites zone on the Security tab of the Internet Options dialog box:

  • In the Internet Explorer window, click “Tools”, then click “Internet Options”.
  • Click the “Security” tab, and then select the “Trusted sites” zone.

Add-BAM-Portal-Trusted-Sites-Zone-Security-tab

  • Click “Sites” button, and then “Add” the BAM Portal to the Trusted sites zone

Add-BAM-Portal-Trusted-Sites-Zone


Bouvet BizTalk Innovation Day 2013 | September 25 and 26, 2013 – Stavanger, Norway

$
0
0

After one year and together again with the usual suspects: Steef-Jan Wiggers, Nino Crudele, Saravana Kumar and of course the host of the event Tord Glad Nordahl, BizTalk Innovation Day is back to Norway! This year also with 2 extra special guest speakers: MVP Kent Weare is coming all the way from Canada and we are hoping to have Microsoft BizTalk Product Group member to hold the key notes about BizTalk 2013 and Azure BizTalk Services.

BizTalk Innovation Day is a one-day (sometimes two) community driven event focused purely on Microsoft BizTalk Server related topics that has been conducted in several major European cities since Feb 2011: Amsterdam (Netherland), Milan (Italy), Stavanger (Norway), London (UK) and Porto (Portugal).

Bouvet-BID-2013-logo

As happened last year this will be a two day event dedicated to BizTalk Server and all-around of Integration world and will occur on 25 and 26 September at the Clarion Hotel in Stavanger, one of the most exclusive hotels in Stavanger.

And we invite you all to join us where you can count with the following agenda:

DAY 1

08:30: Registration;

09:00: Welcome and Introduction;

10:45: Exposing Line of Business (LOB) services to mobile devices
by Kent Weare [Microsoft Integration MVP];

In this session Kent will demonstrate some of the different ways to expose SAP Line of Business data to mobile devices using BizTalk 2013 and the Azure Service Bus. The core principle that will be demonstrated will take a real world On-Premise BizTalk integration scenario and expose its functionality to external consumers using the aforementioned technologies.

10:00: Break;

10:15: BizTalk Server 2013 and the Windows Azure Service Bus: Hybrid Solutions
by Steef-Jan Wiggers [Microsoft Integration MVP];

BizTalk Server 2013 will bring on-premise systems closer to the cloud. This latest version of BizTalk Server will bring more capabilities and features to build hybrid solutions. In this session you will learn how to leverage BizTalk Server 2013 and Windows Azure Service Bus to create hybrid solutions. Real-world scenario’s will be featured with demo’s and code samples.

11:00: Key Notes of BizTalk 2013
by Microsoft

11:45: Lunch;

12:45: Management and Monitoring of BizTalk Server using BizTalk360
by Saravana Kumar [Microsoft Integration MVP]

Some of you might have attended the BizTalk innovation day in Stavanger last year and watched my session on BizTalk360. You may be thinking, you don’t want to hear the same story again. But, it’s pretty much 12 months since you heard the story and BizTalk360 is drastically advancing product with one simple objective "Increase the efficiency of day-to-day BizTalk Server operations". There were 2 major releases (5.0 and 6.0) since my last presentation and possibly a big announcement by the time I present the session in Stavanger again this year. So I can assure you, you’ll not be disappointed by this session.

13:30: BizTalk Mapping Patterns and Best Practices
by Sandro Pereira [Microsoft Integration MVP]

This presentation will explain how maps are processed internally by the engine of the product as we explore the map editor and will provide you with common mapper problems and solutions, i.e., some BizTalk Mapper Patterns specifying best practices and some of the best ways to address some of your needs within the context of message transformation and also to enhance your skills when using the BizTalk Server Mapper.

14:15: Break;

14:30: Proactivity in BizTalk
by Tord Glad Nordahl [Microsoft Integration MVP]

As BizTalk evolves and matures over time the importance of the applications and its dependencies is getting more attention. We all know that business critical application only ends up as business critical when they run in production. As a BizTalk Expert it’s important to be aware of the different areas to monitor and follow to create a proactive solution. When it comes to performance counters, logs, databases, disks, hardware e.g. it’s important to be aware when and if they are approaching a possible failure.

15:15: BizTalk Hostage Situation
by Nino Crudele [Microsoft Integration MVP]

There are many bad implementations of BizTalk around the world created by consultants that do not understand BizTalk. The deployed solution takes the IT budget hostage. The speaker will tell the story of a SWAT team taking control of the situation and solving the problem of a bad implementation. He will provide best practices and approaches for a solid BizTalk implementation that is future proof, resilient and sustainable.

16:00: Q and A
with 6 MVPs and Microsoft Product Group

20:00: Dinner;

DAY 2

(All labs run simultaneously for 1 hours and you can go to the one you want you will have the option to attend all labs based on the presentations)

09:00: Startup

09:30: Labs

11:30: Lunch

12:30: Labs

16:30: Event ends

You can find all detail about this event here.

Reserve your ticket now and we are looking forward to see you in September!

registerbbid2013



BAM Portal: “Failed to get data. If available, errors returned from the provider are listed below” when using IE10

$
0
0

After installing some upgrades in the BizTalk Server machine, in this particular case after installing Internet Explorer 10 I started to receive the following error message when I try to access BAM Portal:

“Failed to get data. If available, errors returned from the provider are listed below”

BAM-Portal-Failed-to-get-data

However without no error was listing… so what’s the problem and how can I solve it?

Additional I also get this error messages and bad behaviors:

BAM-Portal-Pivot-Table-Provider-MSOLAP-error

BAM-Portal-Pivot-Table-Provider-MSOLAP-error-2

CAUSE

Sometimes a website you’re visiting, in this case BAM Portal, doesn’t look like you expect it to. Images might not show up, menus might be out of place, and text boxes could be jumbled together. This can be caused by a compatibility problem between Internet Explorer and the site you’re on. When a site is incompatible with Internet Explorer, you’ll see the Compatibility View button in the Address bar.

Note: Not all website display problems are caused by browser incompatibility. Interrupted Internet connections, heavy traffic or network connections can also affect how a page is displayed.

SOLUTION

To solve this problem you must turn on Compatibility View for BAM Portal in the IE10. You can do this by:

  • Clicking in the “Compatibility View” button that appears in the Address bar to display the site in Compatibility View.

BAM-Portal-tap-Compatibility-View

Note: If you don’t see the button, there’s no need to turn on Compatibility View.

Once you turn on Compatibility View, Internet Explorer will automatically show that site in Compatibility View each time you visit. You can turn it off by tapping or clicking the button again. Or, you can clear the entire list of sites using Compatibility View by deleting your browsing history.


BAM: The cube "MyView" was not processed. Please run the cube DTS to process the cube

$
0
0

After I deploy a BAM activity to a new BizTalk Server 2010 environment I create a job called “BAM Generic Import data” to import all BAM data information to OLAP Cubes that will be presented on Aggregations tab in the BAM Portal.

However when I try to manual execute the job I got an error messages saying:

“The cube “MyView” was not processed. Please run the cube DTS to process the cube”

When I went to the event viewer I saw several Bam Event Provider warning messages with the following details:

Bam-Event-Provider-warning-messages

Log                Job History (BAM Generic Import data)
Step ID                0

Server                MyServer\BIZTALK
Job Name                BAM Generic Import data
Step Name                (Job outcome)
Duration                00:00:00
Sql Severity                0
Sql Message ID                0
Operator Emailed
Operator Net sent
Operator Paged
Retries Attempted                0

Message

The job failed. Unable to determine if the owner (Domain\User) of job BAM Generic Import data has server access (reason: Could not obtain information about Windows NT group/user ‘Domain\User’, error code 0×2. [SQLSTATE 42000] (Error 15404)).

CAUSE

This error most likely when the machine account that runs the job (BAM Generic Import data) doesn’t have permission to query the AD.

Job-BAM-Generic-Import-Data-ower

SOLUTION 1

I would recommend requesting to the AD administrator access to this user or change owner that runs this job to a low-privileged domain account that has proper permissions on the AD – Members of the Domain should be enough.

SOLUTION 2

However in my case the AD administrator was in vacation and the other unavailable and my user account indeed didn’t have permission to query the AD (don’t ask me why) so the only solution that I found to try to solve the problem was to change the owner to the SQL Login System administrator (sa) that, lucky, wasn’t locked.

Job-BAM-Generic-Import-Data-ower-fixed

And problem solved … at least momentarily until we can apply the solution 1


BizTalk Innovation Day 2013 Italy | October 17, 2013 – Milan, Italy

$
0
0

Great news for the BizTalk community, BizTalk Innovation Day will be back to Italy on October 17 and event more great news: the event is free but be aware that the places are limited! So book your seat now!

The speaker are the usual suspect, the "BizTalk Crew": me, Steef-Jan Wiggers, Tord Glad Nordahl, Saravana Kumar and of course the host of the event Nino Crudele! But as has been normal in recent events and the ones we are preparing, we will also have special guests, and in this particular case, a well known special guest: Paolo Salvatori and Salvatore Pelliteri.

BID-Italt-2013-bar

bid-italy-2013

BizTalk Innovation Day is a one-day community driven event focused purely on Microsoft BizTalk Server related topics that has been conducted in several major European cities since Feb 2011: Amsterdam (Netherland), Milan (Italy), Stavanger (Norway), London (UK) and Porto (Portugal) and we definitely hope to be a day with high technical sessions, in the company of prominent speakers and international experts in the field of integration, is definitely an event not to be missed for all professionals and companies that use BizTalk Server and interested in the field of integration and private public Cloud.

So we invite you all to join us next October 17, 2013 in Milan, Italy in the Microsoft Italia headquarters (Via Lombardia 2/a-1 – Peschiera Borromeo), where you can count with the following agenda:

09:00: Agenda Briefing, Health & Safety;

09:15: BizTalk Server 2013 and the Windows Azure Service Bus: Hybrid Solutions
by Steef-Jan Wiggers [Microsoft Integration MVP];

The IT landscape has changed over the years. Applications and services are spread within enterprises and in the cloud. The demand for integration will increase in the future. Microsoft’s will provide us the technology to build hybrid solutions, bridging on-premise systems with the cloud.

10:15: Use Windows Azure Service Bus, BizTalk Services, Mobile Services, and BizTalk Server to create hybrid solutions
by Paolo Salvatori [Microsoft Windows Azure Customer Advisory];

The Service Bus is part of Windows Azure and is designed to provide connectivity, queuing, and routing capabilities not only for the cloud applications but also for on-premises applications. Microsoft BizTalk Server enables organizations to connect and extend heterogeneous systems across the enterprise and with trading partners. Using both together enables a significant number of scenarios in which you can build secure, reliable and scalable hybrid solutions that span the cloud and on premises environments. Windows Azure BizTalk Services is a simple, powerful, and extensible cloud-based integration service that provides Business-to-Business (B2B) and Enterprise Application Integration (EAI) capabilities for delivering cloud and hybrid integration solutions. Windows Azure Mobile Services accelerates connected client application development by streamlining common backend tasks like structuring storage, authenticating users, and sending push notifications. In this session you will see how to integrate these technologies to build secure, reliable and scalable hybrid solutions that span the cloud and on premises environments.

11:15: Break;

11:30: Management and Monitoring of BizTalk Server using BizTalk360
by Saravana Kumar [Microsoft Integration MVP]

Some of you might have attended the BizTalk innovation day in Milan last year and watched my session on BizTalk360. You may be thinking, you don’t want to hear the same story again. But, it’s pretty much 12 months since you heard the story and BizTalk360 is drastically advancing product with one simple objective "Increase the efficiency of day-to-day BizTalk Server operations". There were 2 major releases (5.0 and 6.0) since my last presentation and possibly a big announcement by the time I present the session in Milan again this year. So I can assure you, you’ll not be disappointed by this session.

12:30: Lunch;

14:00: BizTalk Mapping Patterns and Best Practices
by Sandro Pereira [Microsoft Integration MVP]

This presentation will explain how maps are processed internally by the engine of the product as we explore the map editor and will provide you with common mapper problems and solutions, i.e., some BizTalk Mapper Patterns specifying best practices and some of the best ways to address some of your needs within the context of message transformation and also to enhance your skills when using the BizTalk Server Mapper.

15:00: Break;

15:15: Proactivity in BizTalk
by Tord Glad Nordahl [Microsoft Integration MVP]

BizTalk is used by the majority of all large companies worldwide and is considered the heart of many companies, when it comes to supporting and transferring parcel information, updating gas prices or combining important information at an ER. It’s important to understand the different bottlenecks and the resources available for your environment. You have to keep it stable, available and fully supported. This presentation will give you the overview of the important aspects that needs to be taken into consideration when running a BizTalk environment where availability, scalability and stability is important.

16:15: BizTalk 2013: All about in real environment
by Nino Crudele [Microsoft Integration MVP] and Salvatore Pellitteri [Community Member]

Our clients target many requests at gaining a complete understanding, and a subsequent optimal application, of the innovations introduced with BizTalk 2013. The facets that should be addressed are equally numerous, from new licensing and productivity, to an analysis of the expected advantages, and all these aspects should be investigated strategically in order to reap the best results from this new platform.

17:00: Q &A
with all Speakers and Guests

You can find all detail about this event here.

Reserve your ticket now and we are looking forward to see you in October!

And don’t forget that we are also held in Stavanger (Norway) the Bouvet BizTalk Innovation Day 2013 on September 25 and 26, 2013.


The file ‘…’ cannot be copied to the run directory. The process cannot access the file because it is being used by another process.

$
0
0

I’ve been working on a BizTalk Server 2004 project that had (not any more) between 6 or 8 visual studio solutions each one with a BizTalk Project inside. After a few minutes swapping from a solution to another I decided to add all the project in a single solution.

I notice that all the solution are configure to build the assemblies to a common reference folder shared by all projects:

Visual-studio-2003-build-options

And the other project are referring the assemblies from that folder.

However when trying to compile the project I was getting the following error:

The file ‘MyDLLProject.dll’ cannot be copied to the run directory. The process cannot access the file because it is being used by another process.

But when I open that project isolated from the others projects I could successfully compile.

CAUSE

The cause is easy… the Visual Studio has a lock on the file.

Note: That this lock could be from the Visual Studio instance that you are working on or another Visual Studio instance in another session.

SOLUTION 1

The easy solution to avoid further problems is to change the “Output path” to another location for example the default “bin\Development\”

And then instead of referring the assembly from a folder, chose Add reference from Projects

Visual-studio-2003-add-reference-from-project

Work like a charm!

SOLUTION 2

Close all the Visual Studio solution that reference this assembly or assemblies and build the project.


Everything you want to know about BizTalk Server 2013 Developer Edition

$
0
0

In the last months many of you asked or somehow became concerned by the absence of the BizTalk Server 2013 Developer Edition because you may not knew what to use to create your or your clients development environments. And maybe worse, often you didn’t know how to answer the questions of your clients about this topic.

I am not able to find the download for BizTalk 2013 Developer Edition, this version has been discontinued?

No. Developer Edition was not discontinued and will be available in the BizTalk Server 2013 version.

So when will be available?

As probably you already know, the BizTalk Server 2013 Developer Edition is coming and is scheduled to arrive on November 1, 2013 (check BizTalk Server 2013: Developer Edition – It’s Coming!). However there’s one “small” difference comparing to the previous Developer edition (2010), BizTalk Server 2013 Developer Edition will not be free.

How match BizTalk Server 2013 Developer Edition will costs?

For people not covered by MSDN they will probably can buy the Developer edition for a nominal fee of around $30 per seat (again this apply to people not covered by MSDN).

For now there’s no BizTalk Server 2013 Developer Edition, so what can I use to create my developer environments right now?

In the meantime, these are your options:

  • People covered by MSDN (Premium or Ultimate) don’t need to wait for a developer edition, you can use the Enterprise version for Developer/Test today.
  • If you don´t have MSDN, you can use the Evaluation Edition that have a 120-day time-bombed Enterprise Edition.

Alternatively, you can also use the BizTalk Server 2013 on Windows Azure IaaS (Windows Azure VM) were you can find the following BizTalk images available:

  • BizTalk Server 2013 Enterprise
  • BizTalk Server 2013 Standard
  • BizTalk Server 2013 Evaluation

With MSDN discounts, a medium BizTalk Enterprise instance is less than $50 a month (For more information check: Configuring BizTalk Server 2013 on a Windows Azure VM or Announcing BizTalk Server 2013 in Windows Azure Infrastructure Services)

We installed BizTalk Server 2013 Evaluation for a developer environment but the copy is now expiring. Can I upgrade this version?

There is no easy option to change/upgrade the edition.

One of the best option is to just setup a new environment and do a fresh install of your applications. However this mean that you have to setup a new environment.

The other option is explained here: http://charlesemes.blogspot.pt/2011/01/biztalk-server-evaluation-version.html.


An error occurred while attempting to install the BizTalk application: World Wide Web service (W3SVC) on host "localhost" not available

$
0
0

Today I encountered the following issue when I was trying to install an application into a new BizTalk Server environment:

An error occurred while attempting to install the BizTalk application: World Wide Web service (W3SVC) on host “localhost” not available.

The following Windows component may not be installed: Application Server -> Internet Information Services (IIS) -> Common Files.
Unknown error (0×80005000)
Unknown error (0×80005000)”

World-Wide-Web-service-not-available

Note: This error occurred either if I try to install the application by or the MSI or by the BTSTask tool and this error is also followed by other two errors with no particular or interest information.

CAUSE

On a particular note, when I’m installing or configuring a new BizTalk environment I really prefer to install all features that BizTalk provides like BAM, BRE, … even though I don’t need them , at least for now, since we do not know the challenges of tomorrow and I try to follow all the guidelines provided by Microsoft or community members.

However we sometimes find clients that don’t install all components simply because they don’t need them for now, or even worse, they don’t install all the features necessary like IIS 6 Management Compatibility role services because for them it makes no sense

The problem this time was that IIS 6 Management Compatibility role services was not installed.

The Deployment Framework for BizTalk includes support for deploying application pools and virtual directories in IIS.  Virtual directory and application pool deployment is fully active for server deployments.

Due to IIS 7.0/7.5 includes significant change on the configuration system, on Windows Server 2008 and above, we need to enable IIS 6 Management Compatibility role services: IIS Metabase and IIS 6 configuration compatibility, IIS 6 WMI Compatibility and IIS 6 Scripting Tools to allow System.DirectoryServices code work on modifying IIS configurations on IIS7.x.

This topic is clearly documented in BizTalk 2010 installation guides.

SOLUTION 1

To solve this problem you must enable IIS 6 Management Compatibility role services by following the steps below:

  • Go to Administrative Tools à Server Manager
  • Select “Roles” and under “Web Server (IIS)” select “Add Role Services”
  • On the “Select Role Services” window, check the box next to “IIS 6 Management Compatibility”. Make sure you checked all four options below it.

IIS-Select-Roles-Services

Note: After this steps you need to restart the ISS.

SOLUTION 2

In alternative you can install these features by using PowerShell:

Import-Module ServerManager
@("Web-Server",
"Web-Http-Errors",
"Web-App-Dev",
"Web-Asp-Net",
"Web-Net-Ext",
"Web-ASP",
"Web-CGI",
"Web-ISAPI-Ext",
"Web-ISAPI-Filter",
"Web-Includes",
"Web-Basic-Auth",
"Web-Windows-Auth",
"Web-Mgmt-Compat",
"Web-Metabase",
"Web-WMI",
"Web-Lgcy-Scripting",
"Web-Lgcy-Mgmt-Console"
)| Add-WindowsFeature

You can download this PowerShell script from:

Enable all the requires IIS features for BizTalk Server with PowerShell
Microsoft | TechNet Gallery


New release of BizTalk Mapper Extensions UtilityPack for BizTalk Server 2010 is available

$
0
0

I just release a new version of “BizTalk Mapper Extensions UtilityPack” project (available on CodePlex and Code Gallery) this time with only 1 new but cool functoid for BizTalk Server 2010 that was inspired by a problem that occurred to me last week.

biztalk-mapper-extensions-utilitypack-2010-v1-6

Project Description

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 is the list of previous functoids available:

  • 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 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 string object into base64 encoded string.
  • Configuration Functoids
    • BTSNTSvc Config Get Functoid: This functoid allows you to get configuration parameters from BTSNTsvc.exe.config. If there is no section specified, the functoid reads from the AppSettings.
    • System Environment Variable Get Functoid: This functoid allows you to get configuration parameters from machine 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 Windows Registry.
    • SSO Config Get Functoid: This functoid allows you to get configuration parameters from SSO Database.
  • CRM Functoids
    • CRM Lookup Functoid: This functoid allows you to retreive a value from CRM lookup field.
  • String Functoids
    • String Constant functoid: This functoid allows you to set constant values (strings) inside de maps.
    • String ToTitleCase functoid: This functoid allows you to Converts 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 an 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 one.
    • 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.
What’s new in this version?

Although BizTalk Server provides many functoids to support a range of diverse operations when working with conditional mapping, we are limited to the number of existing operations or otherwise have to use custom XSLT. This new version will provide a new library that enables to perform 1 new method for you to be able to perform conditional mapping inside BizTalk mapper.

Default Value Mapping functoid

The Value Mapping and Value Mapping (Flattening) functoids are used to provide 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 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 is returned.

Parameters

The functoid takes one mandatory input parameters:

  1. String value to tested as Null or Empty.
  2. String value that will act as Default Value in case of the first input will be 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 is returned, Example: “P0011”

default-value-mapping-functoid

I will explain better the use of is functoid in my next post.

You can found and download Source Code, Application Binaries and Documentation in CodePlex BizTalk Mapper Extensions UtilityPack home page:

BizTalk Mapper Extensions UtilityPack
CodePlex

 

or from MSDN Code Gallery:

BizTalk Mapper Extensions UtilityPack for BizTalk Server 2010 (522.1 KB)
Microsoft | MSDN Code Gallery



BizTalk Mapper Extensions UtilityPack for BizTalk Server 2013 released

$
0
0

I just update and release the last version of “BizTalk Mapper Extensions UtilityPack” project (available on CodePlex and Code Gallery) this time optimized for BizTalk Server 2013.

Although the version of BizTalk Server 2010 is compatible with 2013, this project as mentioned earlier is optimized (some minor changes were made), compiled in framework 4.5 and properly tested for BizTalk Server 2013.

biztalk-mapper-extensions-utilitypack-2010-v1-6Project Description

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. And is divide in libraries:

  • Conversion Functoids: This library includes a suit of functoids that make data conversions that you can use inside BizTalk mapper.
  • Dynamic Generators Functoids: This library includes a suit of functoids that generate dynamic data; you can use this inside BizTalk mapper.
  • Encoder Functoids: This library includes a suit of functoids that make data encoder that you can use inside BizTalk mapper.
  • Configuration Functoids: This library includes a suit of functoids that make read configuration parameter values from different locations and that you can use inside BizTalk mapper.
  • CRM Functoids: This library includes a suit of functoids that help you to wok easly in CRM integration solution; you can use this inside BizTalk mapper.
  • String Functoids: This library includes a suit of functoids that provides many methods for safely creating, manipulating, and comparing strings that you can use this inside BizTalk mapper.
  • Custom Advanced Functoids: This library includes a suit of functoids that provides methods for Conditional mapping that you can use this inside BizTalk mapper.

You can found and download Source Code, Application Binaries and Documentation in CodePlex BizTalk Mapper Extensions UtilityPack home page:

BizTalk Mapper Extensions UtilityPack
CodePlex

 

or from MSDN Code Gallery:

BizTalk Mapper Extensions UtilityPack for BizTalk Server 2013 (533.1 KB)
Microsoft | MSDN Code Gallery


Collection of Visio 2013 Stencil for BizTalk Server updated with new stencils

$
0
0

First of all I have to say thanks and welcome to the recent contributor Michael Stephenson to this project.

I’m sure he probably don’t need any introductions, never the less, Michael Stephenson is a UK based integration specialist who has worked with many consultancies and customers delivering integration solutions based on Microsoft technologies such as BizTalk and Windows Azure. He is heavily involved in community activities such as the UK Connected Systems User Group and speaking at events across Europe. Michael has also been a Microsoft Integration MVP for the past 5 years.

Having said that and thanks to Michael contributions, there’s a new release available of “Collection of Visio 2013 Stencil for BizTalk Server” with 3 new modern flat Visio 2013 shapes making a total of 76 modern flat shapes that you can use and resize without losing quality:

3-new-modern-flat-Visio-2013-shapes

That you can download it for free and start using it to help you representing BizTalk Server physical architectures, Integration architectures (Cloud or Hybrid scenarios) or solutions diagrams in Visio 2013:

  • BizTalk Servers shapes
    • BizTalk, SQL, BAM, IIS and so on…
  • Common BizTalk artifacts:
    • Orchestrations, Receive and Send Pipelines, Transformations and Filters
  • BizTalk Out-of-box Adapters shapes
    • SMTP, SQL, File, FTP, SFTP, MSMQ, …
  • Business Activity Monitoring, Business Rules Engine, BizTalk Console Administration and BizTalk360
  • Windows Azure BizTalk Services and Cloud shapes
  • Common Integration Servers shapes
    • SMTP, Active Directory, Web, Mainframe, …
  • Certificates, RFID, Gateway, Secure Message and many more…

BizTalk-Server-Stencils-For-Visio-2013

You can download Visio 2013 Stencil for BizTalk Server (or Visio icons for BizTalk Server) from:

Collection of Visio 2013 Stencil for BizTalk Server (1.2 MB)
Microsoft | TechNet Gallery

 

Other Resources:


New release of BizTalk Mapper Extensions UtilityPack for BizTalk Server 2010 and for 2013 is available

$
0
0

For the last weeks I have been preparing my demos for BizTalk Innovation day in Norway and Italy that will occur during September and October were I will talk about BizTalk Mapping Patterns and Best Practices. Functoids will definitely be one of the topics that I will discuss and the reason I published a new release of this project was the need of this new functoid for one of my labs.

Sometimes the functoids I create are inspired in real scenarios for the need of my clients, others requested by community members and sometimes for playing like this one… but always if I think for some reason that they will be useful in real scenarios. But regardless of the reasons, I am very glad that this project is constantly evolving and have already 23 functoids!

Project Description

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 is the list of previous functoids available:

What’s new in this version?

In the BizTalk Business Rules Engine you can define a vocabulary which is essentially parameters which can be used within the execution of a rules policy. These vocabularies can be accessed from C# code so the idea here is that you could define constants in a vocabulary which you could deploy to the BRE which you would then access from a helper class to get your configuration data.

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 one mandatory input parameters:

  1. String that represents the definition name (e.g. Value1).
  2. 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 specify vocabulary on the Business Rule Engine: “Set dynamic constant using Business Rule Engine”

Rule-Engine-Config-Get-functoid

You can find the advantages and disadvantages for storing configurations in a Vocabulary in the Rules Engine in this post from Michael Stephenson: Where do I store my custom configuration for a BizTalk solution
You can found and download Source Code, Application Binaries and Documentation in CodePlex BizTalk Mapper Extensions UtilityPack home page:

BizTalk Mapper Extensions UtilityPack
CodePlex

 

or from MSDN Code Gallery:

BizTalk Mapper Extensions UtilityPack for BizTalk Server 2013 (538.1 KB)
Microsoft | MSDN Code Gallery

 

BizTalk Mapper Extensions UtilityPack for BizTalk Server 2010 (747.7 KB)
Microsoft | MSDN Code Gallery


PowerShell to Configure BizTalk Server Host and Host Instances according to some of the Best Practices

$
0
0

Personally I like to create all my BizTalk Server installation and configuration process manually at least one time or maybe from time to time, but when we are dealing with several environments and even worse each environment with several BizTalk Servers… this can be very annoying and time consuming. In this case automation is the key!

One of the task that we need to do in all our new BizTalk environment over and over again is creating and configuring the Host, Host Instances and of course the adapter handlers.

What’s is Host, Host Instances and Adapter Handlers?

The BizTalk Host is a logical process and security boundary within BizTalk Server that represents a logical set of zero or more run-time processes in which you can deploy BizTalk Server services and artifacts (such as adapter handlers, receive locations, and orchestrations). Each host has a security group assigned to it and may contain multiple host instances, each on an individual machine, that perform the work of the host.

In turn, a host instance is the physical instance of a host on a computer running BizTalk Server. Each host instance belongs to exactly one host, and the service account of the host instance belongs to the security group of the host. The security group may be used to grant permissions to physical resources such as databases for use by any host instances in the host.

An adapter handler is an instance of a BizTalk host in which the adapter code runs. When you specify a send or receive handler for an adapter you are specifying which host instance the adapter code will run in the context of. An adapter handler is responsible for executing the adapter and contains properties for a specific instance of an adapter. A default BizTalk Server configuration will create adapter handlers for all of the installed adapters, but you may want to create additional adapter handlers for purposes of load balancing or to provide process isolation for a particular adapter handler.

Best practices to Configuring Hosts and Host Instances

As the official documentation specify, in addition to the high availability aspects of the host instance configuration, you should separate sending, receiving, processing, and tracking functionality into multiple hosts. This provides flexibility when configuring the workload in your BizTalk group and is the primary means of distributing processing across a BizTalk group.

This also allows you to stop one host without affecting other hosts. For example, you may want to stop sending messages to let them queue up in the MessageBox database, while still allowing the inbound receiving of messages to occur.

Separating host instances by functionality also provides some of the following benefits:

  • Each host instance has its own set of resources such as memory, handles, and threads in the .NET thread pool.
  • Multiple BizTalk Hosts will also reduce contention on the MessageBox database host queue tables since each host is assigned its own work queue tables in the MessageBox database.
  • Throttling is implemented in BizTalk Server at the host level. This allows you to set different throttling characteristics for each host.
  • Security is implemented at the host level; each host runs under a discrete Windows identity.

However this also may bring some potential drawbacks if too many host instances are created because each host instance is a Windows service (BTSNTSvc.exe or BTSNTSvc64.exe), which generates additional load against the MessageBox database and consumes computer resources (such as CPU, memory, threads), so you need to be careful.

Normally we read that we need to create at least 4 host instances: sending, receiving, processing, and tracking, but that’s not absolutely true because, at least with the newer environments, we typically use 64-bits versions and in this case we also need to create at least one Host Instance that will run on 32-bits because FTP adapter, SQL adapter, POP3 adapter and MIME Decoder on 64-bit host instances is not supported by the product (http://technet.microsoft.com/en-us/library/aa560166.aspx)

We can define that one of the best practices for hosts and host instances is the following:

  • BizTalkServerTrackingHost: A BizTalk Host that hosts tracking is responsible for moving the DTA and BAM tracking data from the MessageBox database to the BizTalk Tracking (DTA) and BAM Primary Import databases. This movement of tracking data has an impact on the performance of other BizTalk artifacts that are running in the same host that is hosting tracking. Thus, you should use a dedicated host that does nothing but host tracking.
    • Only the optionAllow Host Tracking” must be selected because we only will use this host for tracking.
  • BizTalkServerReceiveHost: All options (Allow Host Tracking”, “32-bits only” or “Make this default host in the group”) should be unselected. This host will be responsible for processing messages after they are picked up in a receive location. When a host contains a receiving item, such as a receive location (with a pipeline), the message decoding and decrypting occurs in a pipeline within this host.
    • All receive handlers, except the isolated ones like SOAP, HTTP, WCF-BasicHttp, WCF-WsHttp or WCF-CustomIsolated and 32 bit adapters (FTP,SQL and POP3) will be configured for this host. This will mean also that all receive locations will run in this host instance.
  • BizTalkServerReceive32Host: has the same goal as the previous however this must have the “32-bits only” option select so that we can run the 23-bits adapters.
    • The receive handlers for the FTP, SQL and POP3 adapters will be configured for this host.
  • BizTalkServerSendHost: All options (Allow Host Tracking”, “32-bits only” or “Make this default host in the group”) should be unselected. This host will be responsible for processing messages before they are sent out to the send port. When a host contains a sending item, such as a send port, the message signing and encryption occurs in a pipeline within this host.
    • All send handlers, except 32 bit adapters like native SQL and FTP adapter, will be configured for this host. This will mean also that all send ports will run in this host instance.
  • BizTalkServerSend32Host: has the same goal as the previous however this must have the “32-bits only” option select so that we can run the 32-bits adapters.
    • The Send handlers for the FTP and SQL adapters will be configured for this host.
  • BizTalkServerApplication: Only the option32-bits only” should be select in this host. This host will be responsible for process messages based on the instructions in orchestrations that need to run in 32-bits.
  • BizTalkServerApplication64Host: Only the optionMake this default host in the group” should be select in this host. This host will be responsible for process messages based on the instructions in all or most common orchestrations.

Note: You can create other Application Host if you want to separate process base in some application logic.

How can I automate this task?

Windows PowerShell is a Windows command-line shell designed especially for system administrators and can be used by BizTalk administrators to help them in automating tasks.

This is a simple script to configure the Host, Host Instance and Adapter Handlers described earlier in this post:
Function that will create a new BizTalk Host

function CreateBizTalkHost([string]$hostName, [int]$hostType, [string]$ntGroupName, [bool]$authTrusted, [bool]$isTrackingHost, [bool]$is32BitOnly)
{
    try
    {
        [System.Management.ManagementObject]$objHostSetting = ([WmiClass]"root/MicrosoftBizTalkServer:MSBTS_HostSetting").CreateInstance()

        $objHostSetting["Name"] = $hostName
        $objHostSetting["HostType"] = $hostType
        $objHostSetting["NTGroupName"] = $ntGroupName
        $objHostSetting["AuthTrusted"] = $authTrusted
        $objHostSetting["IsHost32BitOnly"] = $is32BitOnly
        $objHostSetting["HostTracking"] = $isTrackingHost

        $putOptions = new-Object System.Management.PutOptions
        $putOptions.Type = [System.Management.PutType]::CreateOnly;

        [Type[]] $targetTypes = New-Object System.Type[] 1
        $targetTypes[0] = $putOptions.GetType()

        $sysMgmtAssemblyName = "System.Management"
        $sysMgmtAssembly = [System.Reflection.Assembly]::LoadWithPartialName($sysMgmtAssemblyName)
        $objHostSettingType = $sysMgmtAssembly.GetType("System.Management.ManagementObject")

        [Reflection.MethodInfo] $methodInfo = $objHostSettingType.GetMethod("Put", $targetTypes)
        $methodInfo.Invoke($objHostSetting, $putOptions)

		Write-Host "Host $hostName was successfully created" -Fore DarkGreen
    }
    catch [System.Management.Automation.RuntimeException]
    {
		if ($_.Exception.Message.Contains("Another BizTalk Host with the same name already exists in the BizTalk group.") -eq $true)
        {
			Write-Host "$hostName can't be created because another BizTalk Host with the same name already exists in the BizTalk group." -Fore DarkRed
        }
		else{
        	write-Error "$hostName host could not be created: $_.Exception.ToString()"
		}
    }
}

Function that will update an existent BizTalk Host

function UpdateBizTalkHost([string]$hostName, [int]$hostType, [string]$ntGroupName, [bool]$authTrusted, [bool]$isTrackingHost, [bool]$is32BitOnly, [bool]$isDefaultHost)
{
    try
    {
        [System.Management.ManagementObject]$objHostSetting = ([WmiClass]"root/MicrosoftBizTalkServer:MSBTS_HostSetting").CreateInstance()

        $objHostSetting["Name"] = $hostName
        $objHostSetting["HostType"] = $hostType
        $objHostSetting["NTGroupName"] = $ntGroupName
        $objHostSetting["AuthTrusted"] = $authTrusted
        $objHostSetting["IsHost32BitOnly"] = $is32BitOnly
        $objHostSetting["HostTracking"] = $isTrackingHost
		$objHostSetting["IsDefault"] = $isDefaultHost

        $putOptions = new-Object System.Management.PutOptions
        $putOptions.Type = [System.Management.PutType]::UpdateOnly; # This tells WMI it's an update.

        [Type[]] $targetTypes = New-Object System.Type[] 1
        $targetTypes[0] = $putOptions.GetType()

        $sysMgmtAssemblyName = "System.Management"
        $sysMgmtAssembly = [System.Reflection.Assembly]::LoadWithPartialName($sysMgmtAssemblyName)
        $objHostSettingType = $sysMgmtAssembly.GetType("System.Management.ManagementObject")

        [Reflection.MethodInfo] $methodInfo = $objHostSettingType.GetMethod("Put", $targetTypes)
        $methodInfo.Invoke($objHostSetting, $putOptions)

		Write-Host "Host $hostName was successfully updated" -Fore DarkGreen
    }
    catch [System.Management.Automation.RuntimeException]
    {
        write-Error "$hostName host could not be updated: $_.Exception.ToString()"
    }
}

Function that will create a new BizTalk Host Instance

function CreateBizTalkHostInstance([string]$hostName, [string]$serverName, [string]$username, [string]$password)
{
    try
    {
        [System.Management.ManagementObject]$objServerHost = ([WmiClass]"root/MicrosoftBizTalkServer:MSBTS_ServerHost").CreateInstance()

        $objServerHost["HostName"] = $hostName
        $objServerHost["ServerName"] = $serverName
        $objServerHost.Map()

        [System.Management.ManagementObject]$objHostInstance = ([WmiClass]"root/MicrosoftBizTalkServer:MSBTS_HostInstance").CreateInstance()

        $name = "Microsoft BizTalk Server " + $hostName + " " + $serverName
        $objHostInstance["Name"] = $name
        $objHostInstance.Install($username, $password, $true)

		Write-Host "HostInstance $hostName was mapped and installed successfully. Mapping created between Host: $hostName and Server: $Server);" -Fore DarkGreen
    }
    catch [System.Management.Automation.RuntimeException]
    {
		if ($_.Exception.Message.Contains("Another object with the same key properties already exists.") -eq $true)
        {
			Write-Host "$hostName host instance can't be created because another object with the same key properties already exists." -Fore DarkRed
        }
		else{
        	write-Error "$hostName host instance on server $Server could not be created: $_.Exception.ToString()"
		}
    }
}

Function that will delete an existent host handlers in the adapters

function DeleteBizTalkAdapterHandler([string]$adapterName, [string]$direction, [string]$hostName)
{
	try
    {
		if($direction -eq 'Receive')
		{
			[System.Management.ManagementObject]$objHandler = get-wmiobject 'MSBTS_ReceiveHandler' -namespace 'root\MicrosoftBizTalkServer' -filter "HostName='$hostName' AND AdapterName='$adapterName'"
	        $objHandler.Delete()
		}
		else
		{
			[System.Management.ManagementObject]$objHandler = get-wmiobject 'MSBTS_SendHandler2' -namespace 'root\MicrosoftBizTalkServer' -filter "HostName='$hostName' AND AdapterName='$adapterName'"
	        $objHandler.Delete()
		}

		Write-Host "$direction handler for $adapterName / $hostName was successfully deleted" -Fore DarkGreen
    }
    catch [System.Management.Automation.RuntimeException]
    {
        if ($_.Exception.Message -eq "You cannot call a method on a null-valued expression.")
        {
			Write-Host "$adapterName $direction Handler for $hostName does not exist" -Fore DarkRed
        }
        elseif ($_.Exception.Message.IndexOf("Cannot delete a receive handler that is used by") -ne -1)
        {
			Write-Host "$adapterName $direction Handler for $hostName is in use and can't be deleted." -Fore DarkRed
        }
		elseif ($_.Exception.Message.IndexOf("Cannot delete a send handler that is used by") -ne -1)
        {
			Write-Host "$adapterName $direction Handler for $hostName is in use and can't be deleted." -Fore DarkRed
        }
		elseif ($_.Exception.Message.IndexOf("Cannot delete this object since at least one receive location is associated with it") -ne -1)
        {
			Write-Host "$adapterName $direction Handler for $hostName is in use by at least one receive location and can't be deleted." -Fore DarkRed
        }
        else
        {
            write-Error "$adapterName $direction Handler for $hostName could not be deleted: $_.Exception.ToString()"
        }
    }
}

Function that will create a handler for a specific adapter on the host

function CreateBizTalkAdapterHandler([string]$adapterName, [string]$direction, [string]$hostName, [string]$originalDefaulHostName, [boolean]$isDefaultHandler, [boolean]$removeOriginalHostInstance)
{
	if($direction -eq 'Receive')
	{
		[System.Management.ManagementObject]$objAdapterHandler = ([WmiClass]"root/MicrosoftBizTalkServer:MSBTS_ReceiveHandler").CreateInstance()
		$objAdapterHandler["AdapterName"] = $adapterName
	    $objAdapterHandler["HostName"] = $hostName
	}
	else
	{
		[System.Management.ManagementObject]$objAdapterHandler = ([WmiClass]"root/MicrosoftBizTalkServer:MSBTS_SendHandler2").CreateInstance()
		$objAdapterHandler["AdapterName"] = $adapterName
	    $objAdapterHandler["HostName"] = $hostName
	    $objAdapterHandler["IsDefault"] = $isDefaultHandler
	}

    try
    {
        $putOptions = new-Object System.Management.PutOptions
        $putOptions.Type = [System.Management.PutType]::CreateOnly;

        [Type[]] $targetTypes = New-Object System.Type[] 1
        $targetTypes[0] = $putOptions.GetType()

        $sysMgmtAssemblyName = "System.Management"
        $sysMgmtAssembly = [System.Reflection.Assembly]::LoadWithPartialName($sysMgmtAssemblyName)
        $objAdapterHandlerType = $sysMgmtAssembly.GetType("System.Management.ManagementObject")

        [Reflection.MethodInfo] $methodInfo = $objAdapterHandlerType.GetMethod("Put", $targetTypes)
        $methodInfo.Invoke($objAdapterHandler, $putOptions)

        Write-Host "$adapterName $direction Handler for $hostName was successfully created" -Fore DarkGreen
    }
    catch [System.Management.Automation.RuntimeException]
    {
		if ($_.Exception.Message.Contains("The specified BizTalk Host is already a receive handler for this adapter.") -eq $true)
        {
			Write-Host "$hostName is already a $direction Handler for $adapterName adapter." -Fore DarkRed
        }
		elseif($_.Exception.Message.Contains("The specified BizTalk Host is already a send handler for this adapter.") -eq $true)
        {
			Write-Host "$hostName is already a $direction Handler for $adapterName adapter." -Fore DarkRed
        }
		else {
        	write-Error "$adapterName $direction Handler for $hostName could not be created: $_.Exception.ToString()"
		}
    }

	if($removeOriginalHostInstance)
	{
		DeleteBizTalkAdapterHandler $adapterName $direction $originalDefaulHostName
	}
}

Function that will have the logic you want to implement to create the default hosts and host instances and add configure the host instances to the various handlers

function ConfiguringBizTalkServerHostAndHostInstances
{
	# Separate sending, receiving, processing, and tracking functionality into multiple hosts.
	# This provides flexibility when configuring the workload and enables you to stop one host without affecting other hosts.
	# you can use a common well use convention to define the name of the host:
	#  - <Job>_<bit support>_<seq>_<adapter/functionality>_<throughput>_<priority>_<clustered>
	# Sample 'Rcv_x32_1_FTP_L_Critical_Clustered'
	# But I will use a more simple convencion
	# Defining the names of the hosts
	[string]$receiveHostName = 'BizTalkServerReceiveHost'
	[string]$sendHostName = 'BizTalkServerSendHost'
	[string]$processingHostName = 'BizTalkServerApplication64Host' # use this to create another processing host
	[string]$trackingHostName = 'BizTalkServerTrackingHost'
	# Note: why we need to create 32bits hosts? FTP, POP3 and SQL doesn't support 64bits
	[string]$receive32HostName = 'BizTalkServerReceive32Host'
	[string]$send32HostName = 'BizTalkServerSend32Host'

	# 'BizTalkServerApplication' is the default host instance created when you install the biztalk on your box.
	# This application will be running on "32-bit only".
	[string]$defaultHostName = 'BizTalkServerApplication'

 	##############################
	# Creating hosts for receiving
	# HostType: Invalid: 0, In-process:	1, Isolated: 2
	CreateBizTalkHost $receiveHostName 1 $ntHostGroupName $false $false $false
	CreateBizTalkHost $receive32HostName 1 $ntHostGroupName $false $false $true

	# Create a host instances for receiving associated with the previous hosts created
	CreateBizTalkHostInstance $receiveHostName $bizTalkServerName $hostCredentials.UserName $hostCredentialsPassword
	CreateBizTalkHostInstance $receive32HostName $bizTalkServerName $hostCredentials.UserName $hostCredentialsPassword

	# Set adapters that should be handled by receiving host instance
	CreateBizTalkAdapterHandler 'FILE' 'Receive' $receiveHostName $defaultHostName $false $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'MQSeries' 'Receive' $receiveHostName $defaultHostName $false $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'MSMQ' 'Receive' $receiveHostName $defaultHostName $false $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'WCF-Custom' 'Receive' $receiveHostName $defaultHostName $false $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'WCF-NetMsmq' 'Receive' $receiveHostName $defaultHostName $false $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'WCF-NetNamedPipe' 'Receive' $receiveHostName $defaultHostName $false $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'WCF-NetTcp' 'Receive' $receiveHostName $defaultHostName $false $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'Windows SharePoint Services' 'Receive' $receiveHostName $defaultHostName $false $removeOriginalAdapterHandler
	#32 bits adapters
	CreateBizTalkAdapterHandler 'FTP' 'Receive' $receive32HostName $defaultHostName $false $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'POP3' 'Receive' $receive32HostName $defaultHostName $false $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'SQL' 'Receive' $receive32HostName $defaultHostName $false $removeOriginalAdapterHandler

 	##############################
	# Creating hosts for sending
	# HostType: Invalid: 0, In-process:	1, Isolated: 2
	CreateBizTalkHost $sendHostName 1 $ntHostGroupName $false $false $false
	CreateBizTalkHost $send32HostName 1 $ntHostGroupName $false $false $true

	# Create a host instances for sending associated with the previous hosts created
	CreateBizTalkHostInstance $sendHostName $bizTalkServerName $hostCredentials.UserName $hostCredentialsPassword
	CreateBizTalkHostInstance $send32HostName $bizTalkServerName $hostCredentials.UserName $hostCredentialsPassword

	# Set adapters that should be handled by sending host instance
	CreateBizTalkAdapterHandler 'FILE' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'HTTP' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'MQSeries' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'MSMQ' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'SOAP' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'SMTP' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'WCF-BasicHttp' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'WCF-Custom' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'WCF-NetMsmq' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'WCF-NetNamedPipe' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'WCF-NetTcp' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'WCF-WSHttp' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'Windows SharePoint Services' 'Send' $sendHostName $defaultHostName $true $removeOriginalAdapterHandler
	#32 bits adapters
	CreateBizTalkAdapterHandler 'FTP' 'Send' $send32HostName $defaultHostName $true $removeOriginalAdapterHandler
	CreateBizTalkAdapterHandler 'SQL' 'Send' $send32HostName $defaultHostName $true $removeOriginalAdapterHandler

	# Create a host for tracking
	CreateBizTalkHost $trackingHostName 1 $ntHostGroupName $false $true $false

	# Create a host for orchestrations
	CreateBizTalkHost $processingHostName 1 $ntHostGroupName $false $false $false

	# Create a host instance for orchestrations
	CreateBizTalkHostInstance $processingHostName $bizTalkServerName $hostCredentials.UserName $hostCredentialsPassword

	# Create a host instance for tracking
	CreateBizTalkHostInstance $trackingHostName $bizTalkServerName $hostCredentials.UserName $hostCredentialsPassword

	# Remove "Allow Host Tracking" options from BizTalkServerApplication Host
	UpdateBizTalkHost $defaultHostName 1 $ntHostGroupName $false $false $true $true

	# Updating the processinh host to be the default host
	UpdateBizTalkHost $processingHostName 1 $ntHostGroupName $false $false $false $true
}

And in the last the main script

Write-Host "Starting configure the BizTalk Server environment..." -Fore DarkGreen

# General variables
# Defining the BizTalk Server Name, this line will read the Server name on which the script is running
$bizTalkServerName = $(Get-WmiObject Win32_Computersystem).name

# STEP 1
# The Windows group is used to control access of a specif host and associated host instances to databases and other
# resources. Each instance of this host must run under a user account that is a member of this group.
# Note that you can change the Windows group only if no instances of this host exist.
# Defining the name of the group the BizTalk hosts should run under
[string]$ntHostGroupName = Read-Host -Prompt "Please enter windows group to control access to Hosts and ssociated Host Instances"

# STEP 2
# This account must have SQL Server permissions. The recommended way to grant these permissions is to add this account
# to the BizTalk Server Host Windows group.
# BizTalk Server will add this account to the "Log on as a service" security policy.
# For domain accounts, use "domain\user" format
# Defining the credentials in witch the host instance should run under.
try
{
	$domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()
	$domainName = $domain.name
}
catch
{
	$domainName = $(Get-WmiObject Win32_Computersystem).name
}
$hostCredentials = $Host.ui.PromptForCredential("Logon Credentials","This account must have SQL Server permissions. The recommended way to grant these permissions is to add this account to the BizTalk Server Host Windows group.

BizTalk Server will add this account to the 'Log on as a service' security policy", $domainName + "\", "");
[String]$hostCredentialsPassword = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($hostCredentials.Password));

# STEP 3
# Defining the option if you want to automatically try to remove the BizTalkServerApplication Host Instance from
# the Adapters handlers
$windowsShell = new-object -comobject wscript.shell
$questionResult = $windowsShell.popup("Do you want to try to remove the BizTalkServerApplication Host Instance from the Adapters handlers?

Note: The script cannot remove the default host instances if there are any receiveports, sendports or orchestrations configured.",
						  0,"BizTalk Applications, Receive and Send Ports",4)

If ($questionResult -eq 6) {
	$removeOriginalAdapterHandler = $true
}
else {
	$removeOriginalAdapterHandler = $false
}

# STEP 4
# Create default hosts, host instances and handlers
Write-Host "Creating hosts and host instances..." -Fore DarkGreen
ConfiguringBizTalkServerHostAndHostInstances

# STEP 5
# This configurations changes requires host instances restart for the changes to take effect.
# Check if you want to restart the Host Instances
Write-Host "Host and Host Instance configuration is almost completed..." -Fore DarkGreen
$questionResult = $windowsShell.popup("This configurations changes requires host instances restart for the changes to take effect.

Do you want to restart the Host Instances now?", 0,"Please restart Host Instances",4)
If ($questionResult -eq 6) {
	get-service BTS* | foreach-object -process {restart-service $_.Name}
	Write-Host "Restart Host Instance completed..." -Fore DarkGreen
}

# STEP 6
# Check if you want to properly configure BizTalk Services and Enterprise Single Sign-On Service 'Startup type' property
# to Automatic (Delayed Start)
$questionResult = $windowsShell.popup("By default, the 'Startup type' propriety of BizTalk Services and Enterprise Single Sign-On Service are set as 'Automatic', however BizTalk Server services may not start automatically after a system restart, to avoid this behavior you must config the 'Startup type' to 'Automatic (Delayed Start)'.

Do you want to configure BizTalk Services to 'Automatic (Delayed Start)'?", 0,"Configure BizTalk Services to Automatic (Delayed Start)",4)
If ($questionResult -eq 6) {
	#=== Name of the Enterprise Single Sign-On Service. ===#
	$entSSOServiceName = 'ENTSSO'

	#=== Change the startup type for BizTalk services to Automatic (Delayed Start) ===#
	get-service BTSSvc* | foreach-object -process { SC.EXE config $_.Name start= delayed-auto}

	#=== Change the startup type for Enterprise Single Sign-On Service to Automatic (Delayed Start) ===#
	SC.EXE config $entSSOServiceName start= delayed-auto

	Write-Host "BizTalk Services and SSO configured successfully..." -Fore DarkGreen
}

Write-Host "Your BizTalk Server environment is now properly configured" -Fore DarkGreen

The script can be found and download on Microsoft TechNet Gallery:
PowerShell to Configure BizTalk Server Host and Host Instances (7.4 KB)
Microsoft TechNet Gallery


BizTalk Mapper Extensions UtilityPack for BizTalk Server 2006/2009: New version available

$
0
0

I finally fulfill the promise to upgrade BizTalk Mapper Extensions UtilityPack for BizTalk Server 2006/2009 with all FunctoIds that are currently available for the 2010 and 2013 versions of this project… and if memory serves me correctly, the last version was published on Nov 18, 2010 with only 6 FunctoIds!

This means there’s plenty of new features for BizTalk Server 2006/2009 in this project… a total of 17 new FunctoIds.

Project Description

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 is the list of previous functoids available:

What’s new in this version for BizTalk Server 2006/2009?

Conversion Functoids

  • Convert datetime format Functoid: This functoid allows you to convert datetime format.

Dynamic Generators Functoids

  • Tiny Id Generator Functoid: This functoid allows you to generate a new Tiny Id.

Configuration Functoids

  • BTSNTSvc Config Get Functoid: This functoid allows you to get configuration parameters from BTSNTsvc.exe.config. If there is no section specified, the functoid reads from the AppSettings.
  • System Environment Variable Get Functoid: This functoid allows you to get configuration parameters from machine 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 Windows Registry.
  • SSO Config Get Functoid: This functoid allows you to get configuration parameters from 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 retreive a value from CRM lookup field.

String Functoids

  • String Constant functoid: This functoid allows you to set constant values (strings) inside de maps.
  • String ToTitleCase functoid: This functoid allows you to Converts 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 an 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 one.
  • 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.

Custom Advanced Functoids

  • Default Value Mapping functoid: The Default Value Mapping have a simillar but different behaviour. 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 is returned.

Also this means that now all versions of this project are equal!

You can found and download Source Code, Application Binaries and Documentation in CodePlex BizTalk Mapper Extensions UtilityPack home page:

BizTalk Mapper Extensions UtilityPack
CodePlex

 

or from MSDN Code Gallery:

BizTalk Mapper Extensions UtilityPack for BizTalk Server 2006/2009 (601.5 KB)
Microsoft | MSDN Code Gallery


Viewing all 287 articles
Browse latest View live