Here is a high level outline of the project: - We frequently need to convert data from a new incoming system to our in house system (sort of a basic ETL process) - We would prefer to do this dynamically, allowing an analyst to use a GUI to map source fields to target fields and define basic transformations - The basic flow will be as follows: 1. Client provides flat files with source data 2. Program dumps these flat files into a SQL Server database (no transformations) 3. User maps data and defines transformations in a web-based GUI 4. GUI calls web services that perform the transformations and generate new files in the target system format My responsibility will mainly be the services mentioned in step #4. My question is: does anyone have any suggestions on best practices for designing an application like this? My initial thought was to to have the services accept objects that represent a business object (say an Account), and all the fields and mapping/transformation info for those fields. Really rough example: //BusinessObject --> Field //Example: Account { fields:[ { targetFields: ["NUMBER"], sourceFields: ["AccountNum"], transformations: [ { type:"trimspaces", expression:"" }, { type: "format", expression: "%03d" } ] }, { targetFields: ["NAME"] //etc... } ] } In this example, a target field belonging to the Account object called "NUMBER" would be populated with the source field "AccountNum" with two transformations applied (trim spaces and pad with 3 leading zeros). The user would have a finite number of transformation options to choose from, so this would make back end coding a little easier. Does this approach make sense at all for the API side? Or am I totally off with this? Any suggestions would be appreciated!