Quantcast
Channel: Kevin Morillo – Tallan
Viewing all 37 articles
Browse latest View live

Whats new in BizTalk360

$
0
0

We have a great love for BizTalk 360 here at Tallan, and the many capabilities it affords to the realm of BizTalk monitoring, alerting, and governance.  For those not familiar, BizTalk 360 is a web based portal designed in Microsoft Silverlight which monitors BizTalk environments and is designed to address the the common hurdles enterprises face when managing BizTalk environments.  One great example of this is the fact that by default, there are two windows groups used by BizTalk for the purpose of administering a BizTalk environment, the BizTalk Administrators group, and the BizTalk Operators group.  The problem comes into play when an enterprise tries to control the access that users have to the BizTalk environment and realize that the BizTalk Operators group lacks most of the rights needed to properly administer an environment, and the BizTalk Administrators group has too many permissions necessary for normal day to day operations.  BizTalk 360 solves these issues and more.

The BizTalk 360 blog has a great section giving an overview of the features of BizTalk 360, and they also have many great videos showing how to install,configure, and use BizTalk 360.

Though I want to focus on a few of the new features of the recently released version 6 of BizTalk 360.

Whats New

Search and Action on BizTalk Artifacts

The search and action on BizTalk artifacts feature allows users of BizTalk 360 to quickly query BizTalk artifacts and perform normal administrative actions on the artifacts like starting/stopping/disabling, etc.

In the example above, I have used the ‘Search BizTalk Artifacts’ feature to search for all receive locations with the string ‘Receive Loc’ in the name.  I can then do mass operations like enabling or disabling all of them.  In the below example, I have searched for all orchestrations with the string ‘Tallan.BizTalk’ in the name.

The examples above show the ease of which an administrator can perform actions on groups of BizTalk artifacts and manage an environment with a large number of applications and artifacts.  More information about the Search and Action on BizTalk Artifacts feature can be found at the BizTalk360 site.

ESB Exception Management Portal

Another new feature of BizTalk 360 version 6 is the addition of a new dashboard showing the Microsoft Enterprise Service Bus (ESB) Toolkit error messages logged by BizTalk.  The ESB Toolkit is a collection of tools that extend the service oriented capabilities of BizTalk, though one of the most widely used features of the ESB Toolkit is its centralized exception management capabilities. The toolkit contains an ASP.NET portal and accompanying set of BizTalk applications and assemblies which subscribe to warning and error messages and provide an easy to navigate web site to view and manage the errors. With the newest version of BizTalk 360, the ability to view and manage errors usually shown in the ESB Portal have been added to the BizTalk 360 dashboard. This allows an administrator to easily see any errors through the ESB dashboard functionality, and easily query instances and administer the BizTalk environment from the same interface, a true time saver.

More information about the ESB dashboard withing BizTalk 360 can be found on the BizTalk 360 site.

Updated Custom SQL Query Functionality

A neat feature of previous versions of BizTalk 360 was the ability to create and store custom SQL queries in the BizTalk 360 dashboard.  With the new update, the custom SQL functionality has been redone and is more streamlined, also allowing for easier editing of queries.

The above picture shows a custom SQL query for showing all of the receive locations that are disabled, and also shows the edit window allowing an administrator to edit the query.

SQL Job Outcome monitoring

One of the major components of BizTalk 360 is the ability to add alarms that will fire on certain conditions within the BizTalk environment, and send emails or text messages when the alert conditions were met.  One of the alerts that can be set is an alert monitoring SQL Jobs and ensuring that all of the jobs tied to the alert are at the desired state, enabled etc.  In the newest version of BizTalk 360, not only is the state of jobs able to be monitored, but also the outcome of the last execution.  Now alarms can be set to send an email to an administrator when important jobs do not run, such as a backup job, or the BizTalk archive logs.  The image below is an example of an alarm ‘test’ with one job set to always be enabled, and the last execution executing successful in order for a ‘pass’ condition on the alarm.  You can see that the last execution of my SQL Job failed, thus the status of the alarm is ‘Critical’ and an alert email will be sent to the email addresses specified in the alarm configuration.

For more information about BizTalk 360 check out the BizTalk 360 blog, An evaluation edition of BizTalk 360 can be downloaded from their site as well.


BizTalk EDI Invalid Control Standard Identifier ISA11

$
0
0

A short and sweet post for this thursday morning.

While testing a HIPPA 834 Benefits Enrollment and Maintenance EDI Message for a client I came across an error translating the EDI message into an XML message using my EdiReceive pipline.  The ISA 11 value that was specified in the file was “{“.  However, I encountered a suspended message while receiving the message, specifying that:

An output message of the component "Unknown " in receive pipeline "Microsoft.BizTalk.Edi.DefaultPipelines.EdiReceive, Microsoft.BizTalk.Edi.EdiPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" is suspended due to the following error:
Error: 1 (Miscellaneous error)
16: Invalid Control Standard Identifier
Error: 2 (Field level error)
SegmentID: ISA
Position in TS: 1
Data Element ID: ISA11
Position in Segment: 11
Data Value: {
7: Invalid code value.
The sequence number of the suspended message is 1.
An output message of the component "Unknown " in receive pipeline "Microsoft.BizTalk.Edi.DefaultPipelines.EdiReceive, Microsoft.BizTalk.Edi.EdiPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" is suspended due to the following error:      Error: 1 (Miscellaneous error)	16: Invalid Control Standard Identifier
Error: 2 (Field level error)	SegmentID: ISA	Position in TS: 1	Data Element ID: ISA11	Position in Segment: 11	Data Value: {	7: Invalid code value. The sequence number of the suspended message is 1.

Opening the agreement party settings in the Admin Console I verified that my ISA repetition seperator was correctly specified as “{“, however I continued to get this error!

What I did not realize, is that I failed to specify in my receive pipeline that my ISA11 value was supposed to be used as a repetition separator.  After opening my pipeline settings, and changing the “UseISA11AsRepetitionSeparator” to “True“, and resetting my host instances, all was well.

Custom Functions in Microsoft Business Rules Engine

$
0
0

The Microsoft Business Rules Engine (BRE), part of Microsoft BizTalk Server, allows for the creation of rich easily readable business rules which can be applied by a BizTalk solution, or any .NET code.   Out of the box, BRE and the main interface Business Rules Composer (BRC) have many different predicates that can be used within a rule, such as Equal, Less Than, Range, Greater Than, Not Equal, Between, and so on.  However, when creating a set of rules for a client, I realized that simple string functions that are not available ‘Out of the Box’  in the BRC.  I decided to create a .NET class which will contain a collection of  string functions for use within business rules.

The first step in creating custom functions that can be called within business rules is to create a .NET assembly project with a static class and all of the public methods for the functions you would like to call.

1 using System; 2  using System.Collections.Generic; 3  using System.Linq; 4  using System.Text; 5 6 namespace Tallan.BizTalk.Generic.Enrichment.Entities 7 { 8 public static class BREFunctions 9 { 10 public static string Concatenate(string string1, string string2) 11 { 12 return string1 + string2; 13 } 14 15 public static string Trim(string string1) 16 { 17 return string1.Trim(); 18 } 19 20 public static string Left(string string1, int positions) 21 { 22 return string1.Substring(0, positions); 23 } 24 } 25 }

Make sure that the assembly is added to the GAC, and open up BRC.  In BRC, create a new policy and within the Fact Explorer browse to your .NET class in the GAC.

image

BREFunctions is the class I have created that contains my custom functions.  The policy that I have created for this is “_myPolicy” and the rule that I have created to demonstrate my custom functions is “”myRule”.

image

Dragging the Trim function from my BREFunctions class to the left hand equal to operand of my IF window adds the function to the rule.  The left hand operand equals ‘”    hasextraspaces    “   my right hand operand equals “hasextraspaces”.  The exists statement is included to facilitate testing my function with an XML document instance.

In testing my rule, I passed in an instance of my test X12EnrichedMessage, and received the following output.

image

As can be seen above, the static class was not executed.  This is because by default, static classes cannot be executed without specifying an instance of our static class.   However, we can bypass this by specifying the “StaticSupport” registry DWORD =1.  To do this, navigate to the following registry entries:

x86: HKLM_LOCAL_MACHINE\\SOFTWARE\Microsoft\BusinessRules\3.0\

x64: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\BusinessRules\3.0

If the StaticSupport DWORD does not exist, create it and set its decimal value to 1.  If it does exist, set the decimal value from 0 to 1.

image

Now retesting my XML instance, we can see that the TRIM custom function was executed successfully.

image

Cleaning up BizTalk Databases

$
0
0

One maintenance task that I often perform when finishing development on a client is to refresh my BizTalk environment.  This usually includes cleaning up the tracking and MessageBox databases of old tracking data and messages.  The BizTalk 2010/2013 installation includes a set of stored procedures that can assist in this effort and ensure a BizTalk environment.

One word of warning, the following should not be performed on a production environment.

  • The first step is to stop all BizTalk Host Instances and stop IIS.
    Create the ‘bts_CleanupMsgbox’ stored procedure by executing the <BizTalk Installation>\Schema\msgbox_cleanup_logic.sql on the BizTalkMsgBoxDb.
  • After the creation of the stored procedure run the following SQL query:

execute bts_CleanupMsgBox

  • Then execute the bts_PurgeSubscriptions stored procedure using the following query:

execute bts_PurgeSubscriptions

  • The dtasp_CleanHMData stored procedure within the BizTalkDTADb  database will clean up the tracking database.  Execute the following query against the BizTalkDTADb:

execute dtasp_CleanHMData

  • Start all BizTalk Host Instances and start IIS.

More information can be found on MSDN

Querying BAM Data using BAM’s Web Services

$
0
0

Our BizTalk Practice has recently embarked on the endeavor of creating a tracking portal for one of our new BizTalk solution accelerators.  One of the initial steps for me was to devise a proof of concept for querying the BAM Database using the two included web services with BAM, BAMManagementService and BAMQueryService.  Microsoft does not officially support directly utilizing the two web services, limiting their official use to the BAM Portal exclusively.

If however, you find yourself in need of querying BAM data using the predefined web services, you can use the following:

The first step required before utilizing the web services is to add them as web services in your visual studio project.

Add a web reference and point to your BAM Management Service URL, the default being

http://localhost/BAM/BamManagementService/BamManagementService.asmx.

image

image

Then do the same for BAMQueryService pointing to your BAMQueryService URL, the default being

http://localhost/BAM/BAMQueryService/BAMQueryService.asmx

The following code snippet will call the BAMQueryService for the specified view ‘vw_ProcessTracking’, and activity.  The cd 2D array will then contain all of the tracking data present in BAM for that view.

1 DataTable dt = new DataTable("BamTable"); 2  using (var queryService = new BAMQueryWebService.BamQueryService()) 3 { 4 // The client must be a member of the BAM Portal Users group. 5   queryService.Credentials = System.Net.CredentialCache.DefaultCredentials; 6 7 var query = new Tallan.BizTalk.BAM.Utility.BAMQueryWebService.InstanceQuery(); 8 query.SelectClauses = GetViewColumns("vw_ProcessTracking").ToArray(); 9 10 Column[][] cd = queryService.GetInstanceData("vw_ProcessTracking", "ProcessTracking", query, 15); 11 }

The GetViewColumns method utilizes the BAMManagementService to get a list of the columns present in the specified view.

1 public List<String> GetViewColumn(String viewName) 2 { 3 // Create a web service proxy object. 4   var managementService = new BamManagementService(); 5 6 // must be a member of the BAM Portal Users group. 7   managementService.Credentials = System.Net.CredentialCache.DefaultCredentials; 8 9 // retrieve BAM view definition XML. 10   var bamXML = managementService.GetViewDetailsAsXml(viewName); 11 12 //Get enumeration of columns in the view 13   var xmlDoc = new XmlDocument(); 14 xmlDoc.LoadXml(bamXML); 15 var ns = new XmlNamespaceManager(xmlDoc.NameTable); 16 ns.AddNamespace("bam", "http://schemas.microsoft.com/BizTalkServer/2004/10/BAM"); 17 var node = xmlDoc.SelectSingleNode(string.Format("//bam:View[@Name='{0}']", viewName), ns); 18 XmlNodeList columnNodeList = node.SelectNodes("./bam:ActivityView/*", ns); 19 20 return columnNodeList.OfType<XmlNode>().Select(x => x.Attributes["Name"].Value).ToList(); 21 } 22  

Note:

If you receive the following error, as I originally did, when executing the BAMQueryService web service call, make sure to verify the view name argument of the ‘GetInstanceData’ meothod.

System.Web.Services.Protocols.SoapException: Server was unable to process request. —> Microsoft.BizTalk.Bam.Management.BamManagerException: Failed to list permissions for BAM view. —> Microsoft.BizTalk.Bam.Management.BamManagerException: The dbo.bam_vw_ProcessTracking_AllInstances view does not exist in the BAMPrimaryImport database.

The ‘GetInstanceData’ method expects the view name, activity name, query object, and an integer representing the timeout value.  The view name, above shown as ‘vw_ProcessTracking’ is the same view name that appears in the BAM Portal as can be seen below.  This is different than what may be seen on MSDN

image

Cryptographic Failure While Signing Assembly While Building BizTalk Solution

$
0
0

I encountered a peculiar error while building an existing BizTalk 2010 Visual Studio solution in a new BizTalk 2010 development environment.

Cryptographic failure while signing assembly ‘assembly name here’ — ‘Access is denied. ‘

This error appeared while trying to sign a .NET assembly with a strong name key file.  The cause for this error is pretty obvious as being a permissions error, however, permission error where?  In this case, the error is caused by the current user not having ‘full control’ to the following folder “C:\ProgramData\Microsoft\Crypto\RSA\MachineKey”.  This will grant Visual Studio with permission to sign with the strong  key.  For good measure, I would also suggest assigning the same rights to the BizTalk Server Administrators group, as any developer should also be part of that group.

MSVCP100.dll Missing When Installing BizTalk Server 2013

$
0
0

A quick post today.  While installing Microsoft BizTalk Server 2013 today on a fresh Windows Server I received the following error during the Enterprise Single Sign-On Server installation step:

“The program can’t start because MSVCP100.dll is missing from your computer.  Try reinstalling the program to fix the problem.”

Also:

“The following platform components failed to install and will need to be manually installed before setup can proceed.  Enterprise Single Sign-On Server: Unspecified error.  Check the log for details.”

The BizTalk Server 2013 installation wizard then fails.  The cause of the above errors is the absence of the Microsoft Visual C++ 2010 Redistributable Packages.  The fix is very painless and involves installing the VC redistributable packages from the Microsoft site.

For a 64 bit installations, ensure that both the x86 and x64 packages are installed, x86 first then x64.  For 32bit installations, just the x86 package is needed.

Microsoft Visual C++ 2010 Redistributable Package (x86)

Microsoft Visual C++ 2010 Redistributable Package (x64)

Utilizing Promoted Properties within Receive Shape Filters in BizTalk

$
0
0

Receive shape filters using promoted properties can provide great flexibility as to what messages your orchestration is subscribed to.  Though, that flexibility also introduces some difficulty when using an typed XML Document message. Recently I attempted to utilize a receive shape filter using a promoted property within my project. However, I noticed that when using an XML Document message type as the receiving message prevented me from using the my project’s  promoted properties within my receive shape filter.

As an example, below is my Property Schema showing my CurrentProcess promoted property

image

We can also see that i have a  field within my RoutingSlip schema with the same promoted property.

image

After building the project, my receive shape filter does not have the option of utilizing my promoted properties within the filter when using an XML document.  The fix for this, other than forgoing the using of an XML Document message type, is to change the ‘Property Schema Base’ property within the Property Schema from MessageDataPropertyBase (default) to MessageContextPropertyBase.  MessageContextPropertyBase signifies to BizTalk that this particular promoted property does not necessarily have to exist within the message data of the message that it was promoted from.  To put it simply, this allows for the use of the promoted properties without requiring that the message schema exist within the same project as the Property Schema, and without the orchestration having to match the message type of the incoming message with that of the promoted property.

image

After building the project with the above change, we can see that I can now select my promoted property within the receive shape filter of the XML Document.

image


Failed to Validate BAM Portal Web Site (BAMPortal)

$
0
0

I have recently encountered an error while trying to reinstall BAM Tool and the BAM Portal on a Microsoft BizTalk Server 2013 installation.  I encountered the following error while attempting to configure the BAM Portal in the Microsoft BizTalk Server Configuration window.

Capture

The error specific error encountered when clicking on the red validation icon is:

Capture

Failed to validate BAM Portal Web Site (BAMPortal)
ADDITIONAL INFORMATION:

The BAM Portal website Default Web Site is not valid. (Microsoft.BizTalk.Bam.CfgExtHelper.PortalHelper)

Exception from HRESULT: 0×80005008 (System.DirectoryServices)

The usual culprit for this error is the “IIS 6 Management Compatibility” windows feature missing – However, this was not the case in this specific scenario, as the feature was already present.  In this specific case, since I was reinstalling the BAM Portal, the Microsoft BizTalk Server Configuration wizard did not completely uninstall the BAM Portal from IIS.  There were a few lingering pieces that have to be manually removed – Specifically the BAMManagementService and BAMQueryService IIS applications.

The solution is to manually remove those two IIS applications by following the following steps.

1.  Open IIS Manager and select your website, by default it is ‘Default Web Site’
2.  Click on ‘View Applications’ within the right hand ‘Actions’ panel.

    Capture

3.  Remove BAMManagementService and BAMQueryService.

Capture

4.  Go back to the Microsoft BizTalk Server Configuration Window, uncheck ‘Enable BAM Portal’ and recheck ‘Enable BAM Portal’ to revalidate the settings.

image

5.  Apply the Configuration.

image

Could not enlist Send Port HRESULT: 0xC00CE557

$
0
0

A quick tip today – I came across an error while trying to enlist one of my send ports while deploying a BizTalk application using the amazing BizTalk Deployment Framework.

“Could not enlist Send Port ‘X’. Exception from HRESULT: 0xC00CE557 (Microsoft.BizTalk.SnapIn.Framework)

Untitled picture

This error is commonly caused by a erroneous carriage return and line feed in the send port <Filter> element of an imported binding file – In this case, the PortBindingsMaster.xml binding file in my BTDF deployment configuration.

Untitled picture2

Below is the original filter expression.

<Filter>
&lt;?xml version=”1.0″ encoding=”utf-16″?&gt;
&lt;Filter xmlns:xsi=”
http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema”&gt;
&lt;Group&gt;
&lt;Statement Property=”BTS.MessageType” Operator=”0″ Value=”
http://schemas.microsoft.com/Sql/2008/05/TypedProcedures/dbo#uspUpdateBatchStatus” /&gt;
&lt;/Group&gt;;
&lt;Group&gt;
&lt;Statement Property=”BTS.MessageType” Operator=”0″ Value=”
http://schemas.microsoft.com/Sql/2008/05/TypedProcedures/dbo#uspUpdateRecordStatus” /&gt;
&lt;Group&gt;
&lt;/Filter&gt;
</Filter>

Next is the fixed filter expression with the line break after the <Filter> tag removed.

<Filter>&lt;?xml version=”1.0″ encoding=”utf-16″?&gt;
&lt;Filter xmlns:xsi=”
http://www.w3.org/2001/XMLSchema-instance” xmlns:xsd=”http://www.w3.org/2001/XMLSchema”&gt;
&lt;Group&gt;
&lt;Statement Property=”BTS.MessageType” Operator=”0″ Value=”
http://schemas.microsoft.com/Sql/2008/05/TypedProcedures/dbo#uspUpdateBatchStatus” /&gt;
&lt;/Group&gt;;
&lt;Group&gt;
&lt;Statement Property=”BTS.MessageType” Operator=”0″ Value=”
http://schemas.microsoft.com/Sql/2008/05/TypedProcedures/dbo#uspUpdateRecordStatus” /&gt;
&lt;Group&gt;
&lt;/Filter&gt;
</Filter>

Importing the binding file anew, or redeploying using BTDF will then update the binding in the deployed BizTalk application and allow for the successful start of the application.

Solution to Common BizTalk Deployment errors in Visual Studio

$
0
0

There are a few common deployment errors in Microsoft Visual Studio when redeploying a previously deployed BizTalk project.

“Failed to add resource(s). Change requests failed for some resource.  BizTalkAssemblyResourceManager failed to complete end type change request.  Failed to update binding information.  Cannot update receive port “”.  Transform “” not found”

Untitled picture

 

There are a few other similar errors that share the same root error “Failed to add resource(s). Change requests failed for some resource” such as

“Failed to add resource(s). Change requests failed for some resources. BizTalkAssemblyResourceManager failed to complete end type change request. Cannot update assembly”

and

“Failed to add resource(s). Change requests failed for some resources. BizTalkAssemblyResourceManager failed to complete end type change request. Failed to update binding”

These all share the same root cause.  Visual Studio uses cached binding files when deploying BizTalk applications.  Removing these cached binding files will result in a ‘clean’ deployment that should resolve any binding related deployment errors.  The files are stored in

%APPDATA%\Microsoft\BizTalk Server\Deployment\BindingFiles\

Clearing the contents of this directory should resolve any deployment issues related to cached bindings.

Introducing the T-Connect EDI File Splitter

$
0
0

A common trend that we have been seeing recently is the similarities in the pain points that companies are often faced with.  One of those such pain points is the difficulty in quickly receiving and processing large EDI files having a file size over 10 MB.  In one instance, there was a need to receive a HIPAA EDI 834 Enrollment file totaling 1.3 GB, containing roughly 800,000 enrollments.  The already powerful BizTalk Server in a 1-1 architecture – 1 BizTalk Server, 1 SQL Server, was having difficulty processing the file.  The file would take several hours to process, often taking up several gigabytes of drive space to attempt to disassemble the file using the EdiDisassembler pipeline.

Benefits

Our solution to this problem was in the creation of the T-Connect EDI File Splitter.  The EDI File Splitter is a Microsoft BizTalk Server pipeline component that enables the rapid splitting of large EDI files within BizTalk Server.  These split files are delivered to an user configurable folder location.  Some of the benefits of this solution include:

  • Splitting large files up into smaller size files improves processing time significantly
  • Easy configuration settings promotes flexibility
  • Deploy easily as a BizTalk Pipeline Component and use with any supported BizTalk adapter
    • Split file by record count allows you to specify the individual file record count as they are split from the larger EDI file
    • Delay split file timer allows you to control and throttle your own delivery of individual files as they are split
    • Split file location allows you to specify where the individual split files will be delivered
  • Process files independently by reconstructing the ISA and GS envelope for each split file
  • Updates ST segment counts to reflect new split file record counts
  • Supports HIPPA X12 EDI Transaction Sets
  • Supports Supply Chain/Order Processing/Transportation X12 EDI Transaction Sets

The tool is able to process files very quickly.  Below are some general speed metrics for a few configurations for an 834 Enrollment file.  All other file types will have similar, if not the same performance.

Record Count File Size Records per split file Total split time
40,000 60 MB 500 10 seconds
40,000 60 MB 1000 10 seconds
800,000 1.3 GB 1000 3.75 minutes

Installation and Setup

The following steps can be used to install and configure the T-Connect EDI File Splitter into an existing BizTalk app

  1. Unzip the installation package after downloading the installation package from the following page
  2. The Install.bat file should then be executed to install the package to the default directory “C:\Program Files (x86)\EDISplitter”  This directory can be altered by opening up the Install.bat file and editing the following line
    • set InstallPath=C:\Program Files (x86)\EDISplitter
    • 1
  3. The bat file will uninstall any previous versions, configure the license, and install the latest version of the T-Connect EDI File Splitter.
  4. The installation will consist of the pipeline components and a sample receive port within the default BizTalk Application 1 application.
    • 2
  5. Below is an example of the configuration options within the T-Connect EDI Splitter pipeline component.
    • 3
  6. By default, the license file is installed to the documents folder of the currently logged in user.  The file can be moved to any location as long as the LicenseFilePath configuration option within the pipeline component settings.  The settings that should be configured by the user are specified below:
Property name Description Default value Required
EdiTransactionType Type of EdiTransaction  is defined herePossible values are : X12_00501_834, X12_00501_837_P, X12_00501_837_I, X12_00501_837_D, X12_00501_835, X12_00501_820, X12_00501_278, X12_00501_270, X12_00501_271, X12_00501_276, X12_00501_277 Empty Yes
OutFolder Specifies the local directory or file share path output file delivery. e.g: C:\Archive Empty Yes
ReleaseAfterXSeconds Number of seconds to delay before the next EDI file written into output folder 0 No
SegmentTerminator Edi segment terminator ~ Yes
SplitAfterOccurances Number of records in an EDI file before it written to out folder 1 Yes

Information

We have rolled this product into a simple to install package which can be downloaded from the following page.  A 30 day full functionality trial is included in the download.  If you would like to learn more about the T-Connect EDI File Splitter, or to purchase a license, please contact us.

BizTalk Build Error: The Namespace already contains a definition for _Module_PROXY_

$
0
0

While building BizTalk projects within Visual Studio, it is possible to receiving the following error when trying to compile a project with multiple orchestrations:

“The namespace ‘[namespace]’ already contains a definition for ‘_MODULE_PROXY_’”

While the error seems obvious, in my case, the namespaces were indeed unique, such that the above error did not make much sense.  The underlying issue was in fact that the type names of two of the orchestrations within the project were identical.  It turns out that an orchestration was at one point duplicated, and only the namespace was changed.  After making the type names unique, the project successfully compiled and deployed.

BizTalk: Slow Performance while viewing or restarting host instances

$
0
0

Recently, while troubleshooting performance issues at a client, I came across a peculiar issue.  The environment in question was a multi- server environment with multiple BizTalk Servers (2010) connected to a SQL Server cluster.  The issue was extremely slow performance when trying to view, refresh, start or stop the host instances through the Administration Console.  Now usually it takes a few seconds for host instances to start, stop, or restart, however, in this case just refreshing the status of the host instances was taking over a minute.

The problem was that one of the BizTalk Servers in the group was offline for some time, causing the host instances tied to that BizTalk Server, within the same group, to become unresponsive.  This caused slowdown in viewing the host instances for any of the other servers in the BizTalk Group.

There are two ways to resolve this:

1. Turn on any offline BizTalk Servers

2. Remove the host instances for any BizTalk Servers that are no longer needed.

In our case, the second option was our chosen on, as the offline BizTalk server was no longer needed.  Once we removed the host instances from the group, the Administration Console was a lot snappier and responded quicker when refreshing, starting, or stopping host instances.

T-Connect EDI Accelerator Now Available!

$
0
0

1 We are happy to announce the availability of our enhanced product, the T-Connect EDI Accelerator for BizTalk.  We have seen a trend in the difficulties encountered while processing EDI messages.  That trend includes all types - both HIPAA and Manufacturing/supply chain transactions.  Originally, we developed the T-Connect HIPAA Accelerator to address these pain points, allowing companies in the Healthcare space to successfully process claims, authorizations, benefit enrollments, eligibility inquiries, and acknowledgements.  The T-Connect EDI Accelerator was purpose built to address pain points that many companies experience in working with EDI files.  This includes, but is not limited to:

  1. The process of on-boarding of new trading partners is time consuming and expensive
  2. There is a significant risk of implementing unproven platforms, especially complex point to point architectures.
  3. Their current EDI platform is a “home grown” point-to-point or manual/paper-based system
    1. This is very hard to maintain
    2. Inability to scale to accommodate increasing volume of claims, enrollments, purchase orders, etc.
    3. It is difficult to upgrade to new compliance or regulatory standards
  4. There is little to no insight into the day-to-day processing of EDI messages.
  5. Legacy systems do not support custom validations with business rules
  6. Large EDI messages are very slow to process

The Accelerator is uniquely designed as the core within our T-Connect product suite. It can seamlessly integrate with our other products to provide a robust set of features and benefits.  Some of the T-Connect suite of products that the EDI Accelerator ‘bolts on’ to are:

  • T-Connect EDI File Splitter– Easily split large EDI files into smaller files for faster processing.  Supports All HIPAA transaction sets and EDI 810, 832, 850, and 846 manufacturing/supply chain transaction sets.
  • –   T-Connect EDI Validator – Create custom business rules to add an extra layer of validation and reporting to EDI processing
  • –   T-Connect EDI Dashboard – Monitor and track processing of inbound and outbound EDI messages.
  • –   T-Connect HIPAA EDI Viewer – Convert EDI messages from EDI text format to paper forms.

The T-Connect EDI Accelerator, paired with the suite of T-Connect products provide the following benefits:

  • –   Government Compliance – Our solution simplifies moving from legacy 4010 to 5010+ EDI standards.
  • –   Fast Trading Partner Onboarding - Onboard trading partners in 25% of the time it takes with other vendors’ solutions.
  • –   Store EDI in Database - Leverage pre-built data storage solutions that persists your EDI messages in a relational database, including support for large EDI messages.
  • –   Blueprinted Technologies - Take advantage of an intelligent service based architecture and easily consume/subscribe EDI messages to/from non-BizTalk systems.
  • –   Extensible - “Bolt on” your proprietary file or custom back office system processing easily
  • –   ACK/NACK Enabled - Acknowledgement (ACK) automated.
  • –   Insight into Processing - Gain insight into your processing with message logging, audit trail, and monitoring.
  • –   Monitor and Alerting – We offer our T-Connect Dashboard, T-Connect EDI Portal, and other tools to ensure you are aware of potential issues before your clients are.
  • –   EDI Validation – We offer EDI validations that are deployed and tailored to each of your trading partners. Furthermore, we are proud to announce our new T-Connect EDI Dynamic Validator software that allows you to implement custom rules that go beyond the standardized EDI schema validations.
  • –   Speed – Load gigabytes of EDI messages into a database in minutes with the inclusion of the T-Connect EDI Splitter.

The T-Connect EDI Accelerator supports a wide range of both HIPAA and non-HIPAA version 005010 and Errata transactions sets including:

HIPAA Transaction sets version 005010 Errata

  • –   270 Transaction Eligibility/Benefit Inquiry
  • –   271 Transaction Eligibility or Benefit Information (response to 270)
  • –   276 Transaction Claim Status Request
  • –   277 Transaction Claim
  • –   Status Notification (response to 276)
  • –   278 Transaction Referral/Authorization Request, Response to Request for Review
  • –   820 Transaction Premium Payment
  • –   834 Transaction Benefit Enrollment and Maintenance
  • –   835 Transaction Claim Payment/Advice (Electronic Remittance)
  • –   837 Transaction Three implementations of this transaction:
    • –   Institutional
    • –   Professional
    • –   Dental
    • –   997 / 999 Transaction Functional Group Acknowledgement

Non – HIPAA Transaction sets version 005010

  • –   850 Purchase Order
  • –   810 Invoice
  • –   846 Inventory

Note: We also support 004010 transaction sets, and migration from 004010 to 005010 versions.


New Update to the T-Connect EDI Splitter Now Available!

$
0
0

Picture1

In September of last year, we released the T-Connect EDI Splitter For BizTalk.  We are proud to announce the release and immediate availability of the newest version of the T-Connect EDI Splitter.  For the uninitiated, the EDI File Splitter is a Microsoft BizTalk Server pipeline component that enables the rapid splitting of large EDI files within BizTalk Server.  These split files are delivered to an user configurable folder location.   Along with additional features added to the EDI Splitter for BizTalk, we are also releasing a standalone application for Microsoft Windows available today: The T-Connect EDI Splitter for Windows

The T-Connect EDI Splitter for BizTalk and the T-Connect EDI Splitter for Windows provide these  great benefits and features:

  • Faster file processing speed - Splitting large files up into smaller size files improves processing time significantly
  • Simple Deployment - Easy configuration settings promotes flexibility
  • Broad Transaction Support
    • Supports HIPPA X12 EDI transaction sets
    • NEW: Supports Supply Chain/Order Processing/Transportation X12 EDI transaction sets
  • Flexibility-
    • Split file by record count allows you to specify the individual file record count as they are split from the larger EDI file
    • NEW: Ability to split incoming messages into a predetermined number of target files
  • Throttling – Delay split file timer allows you to control and throttle your own delivery of individual files as they are split
  • NEW:  Enhanced, easy to use installation wizard.
  • Platform Support
    • BizTalk Support - Deploy easily as a BizTalk Pipeline Component that easily ‘bolts on’ to existing BizTalk environments and use with any supported BizTalk adapter.
    • NEW:  Windows Support – The standalone Windows version for quick splitting and viewing of files without the need for additional servers or software

Both products support a wide range of transaction sets including:

  • HIPAA Transaction sets version 005010 Errata
    • 270 Transaction Eligibility/Benefit Inquiry
    • 271 Transaction Eligibility or Benefit Information (response to 270)
    • –276 Transaction Claim Status Request
    • 277 Transaction Claim
    • –Status Notification (response to 276)
    • –278 Transaction Referral/Authorization Request, Response to Request for Review
    • 820 Transaction Premium Payment
    • 834 Transaction Benefit Enrollment and Maintenance
    • 835 Transaction Claim Payment/Advice (Electronic Remittance)
    • 837 Transaction Three implementations of this transaction:
    • Institutional
    • Professional
    • Dental
  • NEW: Non – HIPAA Transaction sets version 005010
    • 810 Invoice
    • 832 Price/Sales Catelog
    • 846 Inventory
    • –850 Purchase Order
    • 856 Ship Notice/Manifest

Note: Contact us for 004010 transaction sets support!

Information

We have rolled this product into a simple to install package which can be downloaded from the following page.  A 30 day full functionality trial is included in the download.  If you would like to learn more about the T-Connect EDI File Splitter, or to purchase a license, please contact us.

Saving BizTalk Suspended Messages in Bulk using WMI

$
0
0

BizTalk is great in its ability to store messages within the MessageBox even after processing failure, however its not always so easy to get those messages back out!   I recently had a need to retrieve all messages that were currently suspended due to validation failures while attempting to generate X12 EDI messages using the Microsoft.Practices.ESB.

The solution is to use Windows Management Instrumentation (WMI) which can be used within PowerShell or C# to interface directly with BizTalk and easily perform administrative tasks programmatically.  For this scenario we will use C#.

The first step is to create a new console application and open up Server Explorer.

Next, right click on ‘Management Classes’ and select ‘Add Classes…’

image

Next add MSBTS_HostInstanceSetting, and MSBTS_MessageInstance

image

After the two WMI classes are added, we have to select them within Server Explorer\Servers\Management Classes\ and select ‘Generate Managed Class’ for both HostInstance and MessageInstance

image

This will create both classes within your solution

image

Below is my sample code that will first retrieve all suspended instances filtered on a specific message status.

ROOT.MICROSOFTBIZTALKSERVER.ServiceInstance.ServiceInstanceCollection instanceCollection =
ROOT.MICROSOFTBIZTALKSERVER.ServiceInstance.GetInstances(String.Format(“ServiceStatus=’{0}’”, 4));

The message statuses possible are

  • 1 – Ready to run
  • 2 – Active
  • 4 – Suspended (resumable)
  • 8 – Dehydrated
  • 16 = Zombies (completed with discarded messages)
  • 32 – Suspended (not resumable)
  • 64 – In Breakpoint

Next, we will start to iterate through each suspended instance in the collection

For each host instance, we will then extract and iterate over each instance message

ROOT.MICROSOFTBIZTALKSERVER.MessageInstance.MessageInstanceCollection messageCollection =
ROOT.MICROSOFTBIZTALKSERVER.MessageInstance.GetInstances(
String.Format(“ServiceInstanceID=’{0}’”, instance.InstanceID));

Lastly, we will save each message to the file system.

message.SaveToFile(@”C:\temp\messages”);

Below is the full codebase:


 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ExtractSuspendedMessages

{

classProgram

{

// sample arguments: ExtractSuspendedMessages “C:\temp\suspendedmsessages” false

staticvoid Main(string[] args)

{

if (args.Length != 2)

Console.WriteLine(“Require 2 inputs.”);

else

ExtractAllMessages(args[0], Convert.ToBoolean(args[1]));

}

privatestaticvoid ExtractAllMessages(string folderLoc, bool terminateInstancesAfterSaving = false)

{

System.IO.Directory.CreateDirectory(folderLoc);

// Use integer to filter for specific suspended service statuses

//1 – Ready to run

//2 – Active

//4 – Suspended (resumable)

//8 – Dehydrated

//16 = Zombies (completed with discarded messages)

//32 – Suspended  (not resumable)

//64 – In Breakpoint

ROOT.MICROSOFTBIZTALKSERVER.ServiceInstance.ServiceInstanceCollection instanceCollection =

ROOT.MICROSOFTBIZTALKSERVER.ServiceInstance.GetInstances(String.Format(“ServiceStatus=’{0}’”, 4));

//Loop through each service instance

foreach (ROOT.MICROSOFTBIZTALKSERVER.ServiceInstance instance in instanceCollection)

{

Console.WriteLine(String.Format(“Saving suspended messages for GUID: {0} with error: {1} to folder {2}”,

instance.InstanceID, instance.ErrorDescription, folderLoc));

ROOT.MICROSOFTBIZTALKSERVER.MessageInstance.MessageInstanceCollection messageCollection =

ROOT.MICROSOFTBIZTALKSERVER.MessageInstance.GetInstances(

String.Format(“ServiceInstanceID=’{0}’”, instance.InstanceID));

//Loop through each message

foreach (ROOT.MICROSOFTBIZTALKSERVER.MessageInstance message in messageCollection)

{

Console.WriteLine(String.Format(“Saving Message with ID: {0}”, message.MessageInstanceID));

try

{

message.SaveToFile(folderLoc);

}

catch (Exception) { }

}

if (terminateInstancesAfterSaving)

instance.Terminate();

}

}

}

}


 

Running the console application with input variables “C:\temp\messages” and false

Capture

T-Connect EDI Accelerator and EDI Viewer Updates are Available Now!

$
0
0

This month we are happy to announce new versions of a few of our products adding additional features and capabilities.

accelerator First, we have updated our T-Connect EDI Database to support the full ANSI X12 EDI 837 transaction set.  This includes full support for Institutional, Professional, and Dental transaction sets.  The EDI Database Toolkit is our proprietary set of databases constructed to store and archive EDI messages and is included in our EDI Accelerator package, or can be purchased as a standalone product.

We have a new version of our T-Connect HIPAA EDI Accelerator available.  The EDI Accelerator is our flagship product allowing for rapid deployment of a complete end to end EDI intake and storage solution based on the Microsoft BizTalk Server platform.

viewer

The T-Connect EDI Viewer has been updated with backwards compatibility for the EDI ANSI Version 4 (004010).  The EDI Viewer allows you to build in EDI conversion capabilities into your backoffice system to convert EDI text into a PDF representing any paper form.  You can now choose to convert your EDI 837 Claims into CMS 1450 or 1500 forms!

 

Find out more today contact us at integrations@Tallan.com

Setting Up Automated Azure IaaS VM Shutdown

$
0
0

The Tallan Integration Practice heavily utilizes Azure Infrastructure as a Service (IaaS) virtual machines for quickly setting up isolated environments for prototypes and BizTalk development environments.  However, with so many virtual machines it is often difficult to remember to shut them off when not needed.  With Azure’s Automation features, we can setup a scheduled job to shut down non mission critical VM’s, saving on hosting costs.

This is achieved by using an Azure Automation Runbook, which will execute the powershell script to shutdown a service and VM.

First the script itself:
# Specify Azure Subscription Name
$subName = 'YOUR_SUB_NAME'
$cred = Get-AutomationPSCredential –Name 'NAME_OF_CREDENTIAL'
Add-AzureAccount -Credential $cred

Write-Output "Selecting Subscription"
Select-AzureSubscription -SubscriptionName $subName

Write-Output "Stopping VMs"
# Shutdown VMs
Stop-AzureVM -ServiceName 'SERVICE_NAME' -Name 'VM_NAME' -Force

‘YOUR_SUB_NAME’ is the name of your subscription, SERVICE_NAME should be replaced by the name of the cloud service which hosts the VM, and the VM name is not surprisingly the name of the virtual machine to be shut down.  The last placeholder in the above script is the ‘NAME_OF_CREDENTIAL’ which corresponds to an Azure Automation credential which will be created alongside the creation of the Automation runbook.  Save the powershell script as a text file.

Creation of the Automation and Runbook in the classic Azure Portal is as follows:

Click on New – App Services – Automation – Runbook – Quick Create

1.1

I will specify ‘DemoAccount’ as the name of the automation that i want to create

Next we will select the ‘DemoAccount’ Automation that we have just created

2

We then want to Import the powershell script file that we have created above, I have named it ‘RunbookDemo’

3

This creates a new Runbook and imports the powershell script.

4

We will next have to create the credential to be used within the powershell script.

5.1

I specified a name of ‘DemoCredential’.  This will be the value that should replace ‘NAME_OF_CREDENTIAL’ in the powershell script above.

In the last screen, I have provided the email address and password which I use to login to the Azure Portal, however you can create a unique AD account which has access to the Azure Portal which can be used for automation purposes.

You should now be able to Test the runbook, and finally Publish.  The runbook must be Published before a schedule can be assigned.

6

Now we can create a schedule, which I have created to run daily at 01:00.

7

 

7.1

That’s it! Now the VM should shutdown at 1 AM every day.

Working with Temporary Directories in Dell Boomi AtomSphere

$
0
0

Dell Boomi’s AtomSphere integration platform provides a simple, yet very powerful feature – the ability to utilize temporary, and semi-temporary files system folders.  Coming from a Microsoft BizTalk integration background, the ability to store documents to a temporary directory is a huge advantage over storing into a database such as the BizTalk MessageBox, especially with larger files.  While BizTalk does provide the necessary mechanism to save files to a local folder through the use of the file adapter, Boomi provides an easier way of achieving this.

Boomi’s temporary file capability allows for specifying a folder or file using a relative path prefixed by the string ‘tmp/’ or ‘work/’.  Files saved within the ‘tmp’ directory are meant to be used within the scope of the given process execution.  Files saved to the ‘work’ directory can be used across process executions.  These temp directories can also be used within local Atoms, additionally, the java.io.tmpdir system property is preconfigured to point to the ‘tmp/’ directory.

Using either directory is pretty simple.  I will show a simple process which will save a string ‘test message from kevin’ within the file ‘work/TestKevin/relativeFile.txt’, then read it back out from the text file.

First, we will add a new process, with a branch shape, and a message shape within the first branch.  The message shape will contain ‘test message from kevin’ as the Message.

1

Then we will add a properties shape, specifying the property ‘Disk – File Name’ with a static value of ‘relativeFile.txt’

2

 

3

 

Next, we will create a new Disk Connector pointing to the directory ‘work/TestKevin’

4

We will then specify a new Disk Operation, making sure to select the ‘Create Directory if it Doesn’t Exist?’ checkbox.

5

The inclusion of a Stop shape will end this branch.

6

The second branch will contain a disk connector, reusing the connector created above, and with a new Get operation retrieving any files with any extensions, and deleting files once they are received.

After adding another Stop shape, our process should look like below.

7

We can then run a test through the ‘Test Atom Cloud’

8

The result is all green!  Selecting the first disk shape ‘RelativePathDisk’ within the first branch will show us that a file with the name ‘relativeFile.txt’ was indeed saved to the directory /mnt/Test_Atom_Cloud_Store/…../work/TestKevin

9

Selecting the disk operation in the second branch shows the same file being retrieved and subsequently deleted.

10

We can also see, within the document viewer, the message text received within the disk shape in the second branch as ‘test message from kevin’

11

Relatively simple, yet very powerful.

The Boomi help site provides more information on the use of temp directories within the Boomi Atomsphere:

http://help.boomi.com/atomsphere/GUID-343FE204-D3A8-4AE7-9197-087CFBCF6235.html

Viewing all 37 articles
Browse latest View live