Noticed that the use of the canonical was not mentioned in either answer. Yes, you should create some reusability to the code, but you can also simplify your processes by pooling commonalities and seperating out non-conforming elements. For example:
-Receive customer documents in seperate packages.
-Map the data to a canonical, or superset of data.
-Be sure to include a customer ID number to note the document source
-Be sure to include a set of undefined fields (name/value pairs, etc.)
-Once you have the canonical, you can perform the standard business rules across all customers
-Using the customer ID, you can customize specific customer business rules
-Get stored XML/map file for each customer (stored in the customer package)
-Use name/value pairs to extract customer specific values (logic in the customer package)
-Output is the master data set that can be sent to back end system.
Upgrading customer packages requires just migrating those packages. The core functionality remains in tact, and essentially unchanged.
Hope that gives some guidance…
#webMethods-General#webMethods#Integration-Server-and-ESB