“I guess we could copy the generic map and rename it or place it in a folder (named based on the partner), but that would result in a different mapping service for each partner with a different requirement. So, if we have 50 partners sending the 850, we could potentially end up with 50 mapping services. Realistically, it would probably be more like 10 mapping services.”
This is exactly the approach I’ve taken most recently. Don’t name maps based on partners. Name them independently. Then use them for 1 or more partners. This keeps the number of maps down but doesn’t get too sophisticated/complex such that you’re scared to touch one for fear of breaking something else.
Within a given map you can provide some flexibility where things are mapped conditionally but you’ll want to keep that to a minimum. Generally speaking, you don’t want a change to a map for a given partner to mess things up for other partners. So when it doubt, clone and modify.
IME, reusing maps is over-emphasized. The payback of reuse generally doesn’t outweigh the maintenance headaches. Where reuse is helpful is in utility services. For example, I have an buildN1 service that builds the N1 and child segments as needed given the inputs. This gets used in multiple maps.
An alternative to your callback/user-exit strategy is to not have just one top-level service, with “overrides” for various parts but instead have multiple top-level maps (one for each major mapping need) that use common helper services. I think this approach may be easier to implement, easier to test and easier to maintain.
Hope this is helpful info.
#webMethods#edi#Integration-Server-and-ESB