6

I had an issue with a pipeline step "Resolve Target Item".

Env-nt:

  • Sitecore.NET 9.0.1 (rev. 171219)

  • Data Exchange Framework 2.0.1

Installed packages:

  • Data Exchange Framework SDK 2.0.1

  • Sitecore Provider for Data Exchange Framework 2.0.1(to store items in Sitecore)

My goal is to read list of entities from web service and create/update items in Sitecore. In the documentation we had following info:

If a matching item is found, that item is set as the target object in the pipeline context. This means that during the mapping process, this is the object that values will be written to. If no matching item is found, a new item is created. The new item is set as the target object in the pipeline context.

However, in my solution new items created(I have duplicated items if I run the batch several times), but not updated. It seems that it can't understand which value to use as a unique one (just a clue). I verified the solution several times, but still can't find the root cause.

3 screenshots for the corresponding Sitecore item are added below.

enter image description here enter image description here enter image description here

Update:

Value Accessor: enter image description here

Target folder(with duplicated items): enter image description here

Thank you in advance for any suggestion/idea.

  • Can you share the value accessor set you created to map to a Sitecore item? – Gatogordo May 14 '18 at 8:44
  • DEF will do an index query to match the value in the "Identifier Value Accessor" (as value accessor set) onto the field defined in the "matching field value accessor" (as value accessor set) - that's why we would need that info as well.. or you should check if that matches. – Gatogordo May 14 '18 at 8:52
  • 1
    If all DEF config seems ok, check your search logs after a run and see what queries were done to identify.. verify those on your index.. – Gatogordo May 14 '18 at 8:53
  • Ho, sorry for being silent. Actually, I don't have "value accessor set" at all. I am using mapping via code. sitecore.stackexchange.com/questions/11623/… Will check the search log anyway, thanks. – Max May 15 '18 at 15:37
  • Couldn't find anything usefull in the search log. I tried to search inside of this file by target template name - nothing similar. Looked through the config files(screencast.com/t/jNXRlXHDfL) - nothing related to indexes. – Max May 15 '18 at 16:01
4
+50

Sitecore DEF will use index queries to identify the existing items. If you get duplicates and your DEF configuration seems ok, you can run process and check your search logs. Those should list the queries that are performed for identification.

If you test those queries against your index (by default the sitecore_master_index and I don't know of any setting to change that) you will probably not find any items (although you should if they exist in the master database).

So, in that case: you need to find out why those items are not in your master index.

Based on the feedback in the comments, we can indeed conclude that a change to the default settings for this index in your solution was the root cause.

To be honest, I try to avoid making changes to the master index, just for cases like this. I'd rather create a custom index if I need something changed...

ps: if you have ideas to make Sitecore better (and I think the idea of making this index setting configurable might be a good idea), make sure to let them know through support or the uservoice.

  • 1
    Yes, we decided to inherit InProcItemModelRepository, override GetSearchIndexNameForDatabase method(point to a custom index) and use a new class to patch config file Sitecore.DataExchange.Local.config. – Max May 21 '18 at 18:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.