Eric Patrick
Eric Patrick

Reputation: 2247

qbo3 Batch Import ignores some rows in my spreadsheet

Using the qbo3 Batch Import, I am uploading a spreadsheet containing my enumerations, along these lines:

ClassName Operation ObjectStatus Object
ObjectStatus Save Option A Resolution
ObjectStatus Save Option B Resolution
ObjectStatus Save Option C Resolution
ObjectStatus Save SubOption 1 Resolution.Option A
ObjectStatus Save SubOption 2 Resolution.Option B

This incorrectly sets the ImportFileQueue.Object column to Resolution (or Resolution.Option A), instead of setting ObjectStatus.Object to Resolution.

Reviewing the Batch Engine documentation, I corrected this issue by changing the Object column as follows:

ClassName Operation ObjectStatus Parameters
ObjectStatus Save Option A Object=Resolution
ObjectStatus Save Option B Object=Resolution
ObjectStatus Save Option C Object=Resolution
ObjectStatus Save SubOption 1 Object=Resolution.Option A
ObjectStatus Save SubOption 2 Object=Resolution.Option A
ObjectStatus Save SubOption 1 Object=Resolution.Option B
ObjectStatus Save SubOption 2 Object=Resolution.Option B

This successfully bound Object to the ObjectStatus table, but for some reason, 2 of my SubOption rows were ignored by the import.

How do I fix this?

Upvotes: 0

Views: 8

Answers (1)

Eric Patrick
Eric Patrick

Reputation: 2247

TLDR; add a column called SetPropertiesLookup with a value of FALSE for every row:

ClassName Operation ObjectStatus Parameters SetPropertiesLookup
ObjectStatus Save Option A Object=Resolution False
ObjectStatus Save Option B Object=Resolution False
ObjectStatus Save Option C Object=Resolution False
ObjectStatus Save SubOption 1 Object=Resolution.Option A False
ObjectStatus Save SubOption 2 Object=Resolution.Option A False
ObjectStatus Save SubOption 1 Object=Resolution.Option B False
ObjectStatus Save SubOption 2 Object=Resolution.Option B False

This behavior is an artifact of ImportFileQueue's build-in deduping logic: users frequently attempt to upload spreadsheets with duplicate rows, which can in turn cause invocation of unwanted API calls to third party systems or other such problems.

Uniqueness is determined by a combination of:

  • ClassName
  • Operation
  • ParameterXml: an XML representation of all other columns

Since Parameters is a known column, but is not considered part of the unique signature, ImportFileQueue considers SubOption 1 and SubOption 2 to be duplicates.

Adding the SetPropertiesLookup causes ImportFileQueue to ignore the deduplication checks.

Upvotes: 0

Related Questions