1. A computer implemented method of exchanging data between software applications comprising: publishing a list of one or more data fields used by one or more software applications; mapping the published data fields; flagging mapped data fields by at least one of the one or more software applications; matching flagged data fields with a super-schema to define a sub-schema; and using the sub-schema to validate data files to be exchanged by the one or more software applications.