We had a similar situation (on version 6.10). How we got around it is to have the barcode do the majority of the work. We use a 2D barcode, and applied as much information as we could in that matrix. The import configuration runs and splits when it sees a barcode. The information in the barcode is deposited into 1 index field in a string like- INV|XXX|4567|ABC. We then have a parsing program running that transfers the values of the barcode to their appropriate index fields, which kicks off the associated workflows.
While our parsing program is custom, I did hear that it was functionality provided with 7. If you're on 7- I'll be curious to see what you can find.