Skip to content


U of M on Non-Inventory Items — GP Invoice to CRM Invoice

Joseph Markovich asked 7 years ago
I have a map that runs to push invoices from GP 2010 to CRM 2011 every night.  Have figured out how to get the non-inventory items to show in the write-in product field, but these error out with this message: “You cannot set both ‘uomid’ and ‘productdescription’ for the same record.”
How can I get the non-inventory items to sync correctly and have it ignore the U of M mapping?
Patrick Roth Staff answered 7 years ago
I don’t see that this is going to be possible.
The error you see is coming from CRM, not SC directly.
If we look on the web, there are a few hits on this error.
This one below has specific error messages and see this one as 0x80043afa.
this forum post also references it and essentially says the same thing – CRM won’t let you do that.
Sergey answered 5 years ago
The topic is quite old, but I have the exactly same problem with pulling GP invoices to CRM now. In one invoice I have rows with existing products and write-in products as well.
Right now I ended up with two separate maps for invoices. First map is for existing products and the second one is for write-in products. Both maps should be run, one by one, for all invoices. Quite cumbersome solution, with lots of drawbacks.
Is that possible at all, to have mapped lookup for UoM existing product and no lookup at all for write-in product in the same map?
Sergey replied 5 years ago

Answering my own question: it’s possible to run second map as a ‘Run map’ task, using parent map data. So technically there will be two maps but only one of them needs to be scheduled. It also makes sense to run ‘lock pricing’ and ‘Set state of invoice’ actions as a separate maps in tasks after main invoice map, after uploading invoice header and details.

Patrick Roth Staff replied 5 years ago

you just have to mark the checkbox for “use data from parent map”

Sergey replied 5 years ago

Hi Patrick!

Thank you for the reply. I did mark this checkbox of course. I also discovered that it passes all data from parent map at ‘Document Tasks’ steps.

The workable approach for invoices would be as follows:
Map #1: Parent map uses GP data, uploads invoice header and invoice details for existing products with UoM.
Map #2: Child map uses parent data, uploads invoice details for write-in products without UoM, locks pricing and sets the state for invoice.

First I tried to run child map at Document Tasks steps but figured out soon that the parent data being passed on this step is actually all data from the source, instead of the document-related part of data. So the child map being called at ‘Document succeeds’ event runs actually over all invoices and locks even those of them that weren’t uploaded with existing products yet.
So from this perspective there is no difference between ‘Document Tasks’ and ‘Map Post Tasks’ at all.
In the end I called Map #2 twice at ‘Map Post Tasks’: at ‘if fails’ and at ‘if succeeds’ event as well.

It worked for me this time, but I’d like to ask if this approach can be changed in the SC releases? It seems logical to pass at ‘Document Tasks’ steps only that part of parent data that relates to this specific document, i.e. make ‘Document tasks’ context-sensitive.


If you would like to submit an answer or comment, please sign in to the eOne portal.