Repository navigation
Replies: 1 comment
|
Disclosure first: I build Perfuse, an open-source engine that imports Mirth channels, so verifying "behaves the same" is something we've had to make concrete. This is the practice we settled on. Most of it applies whichever engine you move to. 1. Side by side, then cut over one channel at a time. First an offline pass: export a few thousand inbound/outbound pairs per channel from the old engine's message store and replay the inbound messages through the new engine. After that, run the new engine in shadow on live traffic, receiving everything and delivering nowhere, for a period that includes a weekend and a month end. Those are when the odd message types and batch jobs turn up. Cut over one channel, keep the old one ready, and only then move the next. 2. What to compare. Compare the encoded outbound message byte for byte, paired by MSH-10 (pairing in order breaks the first time either engine drops or retries one). Then split the result into four counts instead of one pass rate:
Group the "differs" findings by field path, and for each one note whether it's systematic (the same old→new value pair every time, e.g. 3. What message comparison does not cover. Write these down per channel, because none of them shows up in an output diff:
4. Time. In our experience the shadow period dominates, because it's calendar time (a month end), not effort. The offline pairs pass takes days per busy channel, mostly spent deciding about the systematic findings. 5. What slips through. Exact counts in the verdict matter: "49,993 of 50,000" makes people look at the seven, while "over 99%" doesn't. I don't have a first-hand Mirth production incident to share, so I'll leave that question to people who have one. For what it's worth, the things our own comparisons kept catching were value mappings (codes vs. display text), empty vs. absent fields, and messages one side refused to parse at all. Perfuse's version of steps 1 and 2 is |
Uh oh!
There was an error while loading. Please reload this page.
I'm spending a few weeks researching how teams actually verify HL7 v2 interface migrations - Mirth Connect 4.5.2 to OIE (and to BridgeLink or the commercial 4.7) - and I'd rather ask people who have done it than guess from release notes.
The question is narrow: after you move channels to the new engine, how do you convince yourself (and whoever signs off) that they behave the same?
Specifically, I'd love to hear:
Why I'm asking: "the channel imported fine" and "the channel behaves the same" are different claims, and between Rhino/E4X details, code template libraries and connector-level differences there seem to be plenty of places for the second one to quietly fail. I can't find a shared practice for demonstrating it, which either means everyone has their own, or that it mostly isn't done.
I'm not selling anything and I'm not looking for work. If there's interest I'll post a summary back into this thread once I've collected the answers here and from a handful of conversations elsewhere.
All reactions