BizTalk EDI Leap Year Fix FAQ

Shaheer Abubucker
Senior Escalation Engineer
Microsoft BizTalk Server Team
Created 02/24/2012

(FAQ last updated on 02/29/2012 at 12:22PM Central Time)

Table of Contents

What is the actual issue? 3

Will the issue only happen on February 29, 2012? 3

When did Microsoft first release the fix for this? 3

If the environment is not using EDI, is this fix required? 4

What type of EDI documents does this impact? 4

What error messages can I expect to see if I experience this issue? 4

How can I actually reproduce the issue so I can test if the fix resolved it? 5

What versions of BizTalk are impacted? 6

How do I get my BTS2009 environment ready for Leap Year? 6

How do I get my BTS2006 R2 environment ready for Leap Year? 6

Is BizTalk 2006 R2 without SP1 impacted? 7

Do I need to install CU1 or CU2 before I install CU3? 7

Which packages work for 32 bit vs 64 bit servers? 7

What will happen if I install the Leap Year Fix on top of BTS2006 R2 with no SP1 nor CU3? 7

What will happen if I install the Leap Year Fix on top of BTS2006 R2 with SP1 but no CU3? 8

There have been multiple releases of the BTS2006 R2 Leap Year Fix. Should I be concerned that I installed the wrong one? 8

What if I have a non-English version of BizTalk? 9

Do I need to install any of these updates on my SSO-only machines? 9

How long will these updates take? 9

Can I kick off the installers on all the BizTalk machines in the group at the same time to save time? 10

Where do I get details about how to install SP1 on my BizTalk 2006 R2 machine? 10

Where can I get more information about how to install BizTalk hotfixes, Service Packs, and Cumulative Updates? 10

Is there ANY workaround I can use if I am unable to get the Leap Year Fix installed in time for some reason? 11

What do I do if I did not get the Leap Year Fix installed in time and have already experienced the issue? 11

What is the actual issue?

The problem is that the BizTalk EDI engine does not recognize leap year dates as a valid date datatype value. Due to this, an EDI transaction will fail in BizTalk with an error like the following if any date or datetime value within the EDI document is a leap year date – such as February 29, 2012. Since many EDI transactions contain the transaction date, there is the potential for a very large number of EDI transactions to fail on 2/29/2012. In my own testing, the failure appears to only happen if the contents of the EDI message itself contain a leap year date. Having the leap year date in the ISA or GS headers does not appear to cause the issue.

Error encountered during parsing. The X12 transaction set with id '<n>' contained in functional group with id '<n>', in interchange with id '<n>', with sender id '<sender id> ', receiver id '<receiver id>' is being suspended with following errors:
Error: 1 (Field level error)

SegmentID: DTM
Position in TS: 42
Data Element ID: DTM02
Position in Segment: 2
Data Value: 20120229
8: Invalid Date

To see a full list of expected error messages, see What error messages can I expect to see if I experience this issue?

This issue is addressed by hotfix KB 2435900 (http://support.microsoft.com/kb/2435900).

Will the issue only happen on February 29, 2012?

No. Since the issue is specific to the data within the EDI document, the issue can happen any time it contains the leap year date in the document – even if the transaction takes place on a different date.

Also, February 29, 2012 is just the upcoming leap year date but the same issue would happen if the document contained any future leap year date (my own testing shows the issue does not reproduce for previous leap year dates like 2/29/2008).

When did Microsoft first release the fix for this?

The fix for BTS2009 was publicly released in December 2010 as a part of CU1.

The fix for BTS2006 R2 was publicly released in February 2011 as a standalone-fix on top of CU3.

KB 2435900 shows the last revision on 2/22/2012 because it was updated to specifically mention that the BizTalk 2006 R2 pre-req also included CU3.

If the environment is not using EDI, is this fix required?

No, it is not. This fix only applies to EDI X12 and does not need to be installed unless the environment processes such transactions.

What type of EDI documents does this impact?

Only X12 documents (and HIPAA since it is X12-based). EDIFACT documents are NOT impacted.

What error messages can I expect to see if I experience this issue?

EDI Validation happens in both receive pipelines that use the EDI Disassembler component and send pipelines that use the EDI Assembler component.

In a receive pipeline, you will see errors like the following. The BizTalk Server 2006 error may be more descriptive if already on SP1 – but the BizTalk Server 2006 EDI error will be the same.

Event Type: Error

Event Source: BizTalk Server 2006 EDI

Event ID: 8114

Error encountered during parsing. The X12 transaction set with id '<n>' contained in functional group with id '<n>', in interchange with id <n>', with sender id '<n>', receiver id '<n>' is being suspended with following errors:

Error: 1 (Field level error)
SegmentID: BEG
Position in TS: 2
Data Element ID: BEG05
Position in Segment: 5
Data Value: 20120229
8: Invalid Date

Event Type: Error

Event Source: BizTalk Server 2006

Event ID: 5753

A message received by adapter "ADAPTER" on receive location "<RL>" with URI "<URI>" is suspended.

Error details: 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:

Unknown .

The sequence number of the suspended message is <n>.

In a send pipeline, you will see errors and warnings like the following. The BizTalk Server 2006 error or warning may be more descriptive if already on SP1 – but the BizTalk Server 2006 EDI error will be the same.

Event Type: Error

Event Source: BizTalk Server 2006 EDI

Event ID: 8116

Error: 1 (Field level error)
SegmentID: BEG
Position in TS: 2
Data Element ID: BEG05
Position in Segment: 5
Data Value: 20120229
8: Invalid Date

Event Type: Warning

Event Source: BizTalk Server 2006

Event ID: 5743

The adapter failed to transmit message going to send port "<SP>" with URL "<URL>". It will be retransmitted after the retry interval specified for this Send Port. Details:"Unable to read the stream produced by the pipeline.

Details: Error in serialization ".

Event Type: Error

Event Source: BizTalk Server 2006

Event ID: 5754

A message sent to adapter "<ADAPTER>" on send port "<SP>" with URI "<URI>" is suspended.

Error details: Unable to read the stream produced by the pipeline.

Details: Error in serialization

How can I actually reproduce the issue so I can test if the fix resolved it?

Add the 20120229 date to an EDI document and submit it to the EDI receive pipeline. For example, change your BEG segment to look like this: BEG*00*AB*BEG03**20120229~

Also, Guru’s blog at http://blogs.msdn.com/b/biztalkcrt/archive/2012/02/22/edi-leap-year-hotfix-biztalk-2009-and-biztalk-2006-r2.aspx has the repro steps and necessary files.

Once you install the Leap Year Fix, the issue should no longer reproduce when submitting the same EDI message.

What versions of BizTalk are impacted?

·  BizTalk 2006 R2 and BizTalk 2009 are the ONLY versions that are impacted.

·  BizTalk 2010 will NOT be impacted.

·  BizTalk 2004 and BizTalk 2006 (not R2) used a completely different EDI engine and this fix is not relevant to those versions. We have not seen a leap year issue in those 2 versions.

How do I get my BTS2009 environment ready for Leap Year?

You can install ANY Cumulative Update. This fix was included in CU1 so is also included in CU2, CU3, CU4, CU5, and will be included in subsequent CUs. If you don’t yet have a CU and plan on installing one, we recommend the latest (CU5). Find the link to download CU5 at http://support.microsoft.com/kb/2649852.

If you don’t want to install a CU, you can get the standalone fix from http://support.microsoft.com/kb/2435900. This is ONLY required if you don’t have a CU installed.

How do I get my BTS2006 R2 environment ready for Leap Year?

First, you MUST have SP1 AND CU3 installed on your machine. ONLY then can you install the Leap Year Fix. There are no other supported options.

·  Download 2006 R2 SP1 from http://www.microsoft.com/download/en/details.aspx?id=17886.

·  Download 2006 R2 CU3 from http://support.microsoft.com/kb/2286501. Click View and request hotfix downloads at the top of the page.

·  Download the Leap Year fix from http://support.microsoft.com/kb/2435900. Click View and request hotfix downloads at the top of the page.

Also, the Leap Year fix for 2006 R2 has been added to Microsoft Update but will only be found if you already have SP1 and CU3 installed. It is in the Important Update category (not Critical Update) so the user will need to select it. It will show up as Update for BizTalk Server 2006 R2 (KB2435900).

Is BizTalk 2006 R2 without SP1 impacted?

Yes, you can run into the issue on a machine that does not have SP1. This issue is not a regression in SP1 and has been in BizTalk 2006 R2 prior to SP1. You must have SP1 + CU3 + Leap Year Fix installed to properly handle the leap year date in the message. The original port of this fix to BizTalk 2006 R2 was for a customer that ran into this issue with BizTalk 2006 R2 without SP1 – so you cannot avoid the issue by simply not installing SP1.

Do I need to install CU1 or CU2 before I install CU3?

No. CUs are cumulative so CU3 includes CU2 which includes CU1 – so you just need to install the latest CU. This is the case for all versions of BTS that have CUs. If you are installing a CU, install the latest. In the case of BTS2009, you should install CU5.

Which packages work for 32 bit vs 64 bit servers?

·  For 2006 R2 SP1, the same package works on 32 bit and 64 bit servers.

·  For 2006 R2 CU3, make sure to download the x86 package for 32 bit servers and x64 for 64 bit servers.

·  For the Leap Year fix, the same package works on 32 bit and 64 bit servers.

·  For 2009 CU5, the same package works on 32 bit and 64 bit servers. Some of the older 2009 CUs have separate x86 and x64 packages.

What will happen if I install the Leap Year Fix on top of BTS2006 R2 with no SP1 nor CU3?

The latest release of the Leap Year fix won’t even let you do this but a previous release did not have all the prereq checks built-in. If you do this, you will get the following errors when a message goes through the EDI Disassembler:

Error 5719:

There was a failure executing the receive pipeline: "<Pipeline Using EDI Disassembler>" Source: "Unknown " Receive Port: "<Receive Port Name>" URI: "<URI>" Reason: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

Error 5753:

A message received by adapter "<Adapter>" on receive location "<Receive Location Name>" with URI "<URI>" is suspended.

Error details: There was a failure executing the receive pipeline: "<Pipeline Using EDI Disassembler>" Source: "Unknown ""<Receive Port Name>" URI: "<URI>" Reason: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

To fix this, you will need to uninstall the Leap Year fix, install SP1, install CU3, and then re-download the latest Leap Year fix package and install it.

What will happen if I install the Leap Year Fix on top of BTS2006 R2 with SP1 but no CU3?

We don’t know. The Leap Year Fix was built and tested on top of 2006 R2 + SP1 + CU3. It was never designed to run without CU3 and has many dependencies that expect the CU3 build of various binaries be available. Due to this, Microsoft has never run it without CU3 and we have not yet received any customer reports telling us what happens if this is done. To be in a supported state, you need to uninstall the Leap Year fix, install SP1, install CU3, and then re-download the latest Leap Year fix package and install it. If you decide to run the Leap Year Fix without CU3, you will have to rely on your own testing and understand that Microsoft does not support this.

There have been multiple releases of the BTS2006 R2 Leap Year Fix. Should I be concerned that I installed the wrong one?

The only difference between the various releases is the pre-req checking logic. As long as you installed the fix on top of BTS2006 R2 + SP1 + CU3, you’re fine. There is no need to take any action. You will only need to take action if you don’t have the correct pre-reqs installed – see previous two questions.

Also, at one point there was a package that had faulty pre-req checking logic in it and resulted in the following error even if SP1 + CU3 were already installed:

The patch 861c5534-6cfa-4dcf-ba70-cbf01129b646 in the package Microsoft BizTalk Server 2006 R2 Hotfix [See KB article 2435900 for detail] cannot be applied. The minimum installed version of Microsoft BizTalk Server 2006 must be 3.6.2222.12. The installed version on this computer is 3.6.1404.0.