{"id":20730,"date":"2022-11-29T20:20:00","date_gmt":"2022-11-29T19:20:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=20730"},"modified":"2022-11-29T17:26:28","modified_gmt":"2022-11-29T16:26:28","slug":"documentum-how-to-easily-remove-duplicated-xplore-queue-items","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/","title":{"rendered":"Documentum &#8211; How to easily remove duplicated xPlore queue items"},"content":{"rendered":"\n<p>Documentum is usually working pretty well with xPlore when it&#8217;s about managing its queue on well configured environments and\/or with &#8220;simple&#8221; repositories. Basically, as long as you do not only have very big\/complex documents (e.g.: 500Mb excel files with hundreds of thousands of rows) or a lot of customizations that aren&#8217;t very optimized or intensive components like a full Life Sciences Suite stack, then xPlore should be able to do its work without much trouble. However, it might still happen that some activities like data fixes (adding\/updating metadata on your documents) or migration of documents (and therefore running the ApplyD2Config on them) would generate millions of <em>dm_save <\/em>and therefore the same number of items being added into the <em>dmi_queue_item <\/em>table for the indexing.<\/p>\n\n\n\n<p>It&#8217;s not something that will happen every day for sure, but I&#8217;m working on such things a few times a year. When this kind of activity is happening, there will usually be several <em>dm_save <\/em>for the same object and therefore it means duplicate <em>item_id <\/em>inside the <em>dmi_queue_item <\/em>table. If it&#8217;s just a few thousand documents, it should be fine because the xPlore will quickly process them anyway. But what if there are 5 million items to be processed and out of these, there are only 500k unique items (meaning an average of 10 duplicates for each row)? In such cases, letting xPlore process its queue will be quite inefficient and it will probably take several hours, if not days, for the queue to be emptied.<\/p>\n\n\n\n<p>That&#8217;s where the queue cleanup is needed. There are, from my point of view, two main solutions:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Extracting all distinct <em>item_id <\/em>(either through SQL or DQL\/API), then removing all <em>item_id <\/em>(again, either through SQL or DQL\/API) and finally resubmitting only the unique items for indexing (either through the <em>dmi_queue_item<\/em> or the IndexAgent refeed tasks)<\/li>\n\n\n\n<li>Removing only duplicate items and keeping the oldest (alternatively newest) <em>item_id<\/em><\/li>\n<\/ol>\n\n\n\n<p>Of course, it&#8217;s also possible to just unregister the events before the activity so that the <em>dmi_queue_item <\/em>table won&#8217;t be flooded, but that&#8217;s not fun, right? When I&#8217;m included once the activity is already completed and I need to do the cleanup, then I will usually apply the first solution above (using SQL commands) if there are 5\/10 million or more of duplicates to remove, because it will be much faster to delete these through the DB. Same thing if these items aren&#8217;t very important and they can be processed in the background through the IndexAgent refeed tasks (the <em>dmi_queue_item <\/em>takes precedence over refeed tasks). However, in this blog, I will talk about the second option, which I usually apply in all other cases.<\/p>\n\n\n\n<p>The second solution could also be done via SQL, but I tend to use DQL\/API there, because there isn&#8217;t too much to do, so it&#8217;s usually fine. In addition to that, I also tend to parallelize the execution on several Content Servers (or several DQL\/API sessions on the same CS). The first thing to do is to temporarily stop the IndexAgent through its UI so that it&#8217;s not running during the export. Then, as mentioned, we would need to extract the list of <em>item_id <\/em>with their associated <em>r_object_id <\/em>from the <em>dmi_queue_item <\/em>table, so that we can have all rows present at that point in time:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n&#x5B;dmadmin@cs-0 ~]$ mkdir tmp\n&#x5B;dmadmin@cs-0 ~]$ cd tmp\/\n&#x5B;dmadmin@cs-0 tmp]$\n&#x5B;dmadmin@cs-0 tmp]$ ## Extract items from the dmi_queue_item table\n&#x5B;dmadmin@cs-0 tmp]$ iapi $REPO_NAME -Udmadmin -Pxxx &lt;&lt; EOC &gt; object_list.txt\n?,c,select r_object_id, item_id from dmi_queue_item where name=&#039;dm_fulltext_index_user&#039; and delete_flag=0 order by date_sent asc;\nEOC\n&#x5B;dmadmin@cs-0 tmp]$\n<\/pre><\/div>\n\n\n<p>This iapi command will take a few seconds to be executed, depending on how much rows are present. In this case, I used the &#8216;<em>dm_fulltext_index_user<\/em>&#8216; name, meaning that I want to do that for the first IndexAgent of this repository (if there is HA, there might be another user like &#8216;<em>dm_fulltext_index_user_02<\/em>&#8216;). I don&#8217;t usually put a filter on the <em>task_state<\/em>, because even if the status is warning or failed or acquired, I want to retrieve all <em>item_id<\/em>, as long as it hasn&#8217;t been completely processed yet (<em>delete_flag<\/em>=0) and remove all the duplicates. In addition to that, I order by <em>date_sent <\/em>in ascending order, meaning that oldest entries will be present at the top of the file. Once the export has been done, the IndexAgent can be restarted through its UI, in normal mode, so that it will resume the processing of the queue. It&#8217;s not mandatory to do it at this point in time, but it won&#8217;t bring an issue, so you will still gain some time in the processing of the queue if you start it rather sooner than later. The next step is to clean up the file to remove the headers\/footers coming from the iapi execution and generating some lists:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n&#x5B;dmadmin@cs-0 tmp]$ ## Backup the original file\n&#x5B;dmadmin@cs-0 tmp]$ cp object_list.txt object_list.txt.orig\n&#x5B;dmadmin@cs-0 tmp]$\n&#x5B;dmadmin@cs-0 tmp]$ ## Remove all lines not starting by &quot;1b&quot;, i.e.: everything except the lines with &quot;r_object_id  item_id&quot;\n&#x5B;dmadmin@cs-0 tmp]$ sed -i &#039;\/^1b\/!d&#039; object_list.txt\n&#x5B;dmadmin@cs-0 tmp]$\n&#x5B;dmadmin@cs-0 tmp]$ ## Generate sorted and unique lists\n&#x5B;dmadmin@cs-0 tmp]$ sort -k2 object_list.txt &gt; object_list.txt.sorted\n&#x5B;dmadmin@cs-0 tmp]$ sort -k2 -u object_list.txt &gt; object_list.txt.unique\n&#x5B;dmadmin@cs-0 tmp]$\n&#x5B;dmadmin@cs-0 tmp]$ wc -l *\n  3118245 object_list.txt\n  3118264 object_list.txt.orig\n  3118245 object_list.txt.sorted\n   280124 object_list.txt.unique\n  9634878 total\n&#x5B;dmadmin@cs-0 tmp]$\n<\/pre><\/div>\n\n\n<p>With the sort commands above, we first generated a &#8220;sorted&#8221; list of the <em>item_id <\/em>(based on the second column). This list won&#8217;t be used by the steps below, but it&#8217;s more there if you want to check things later. Remember that oldest rows were at the top, and therefore with the sorted file (sorted on <em>item_id <\/em>ascending), you can find the <em>r_object_id <\/em>of all other rows that are duplicates of these and it will also be ordered by <em>date_sent <\/em>within the same <em>item_id<\/em>. The second sort command is used to generate the list of &#8220;unique&#8221; <em>item_id<\/em>, the ones that will be kept, and since we based it on the same source file, it means that ONLY the oldest <em>item_id <\/em>will show up on this file BUT it will also be sorted by <em>item_id <\/em>ascending, obviously. Same as the other one, this list won&#8217;t be used because the sort on the <em>item_id <\/em>instead of the <em>date_sent <\/em>means that it would be less optimized for the later processing (the removal). I still like to keep it around, just in case I need it for something later.<\/p>\n\n\n\n<p>Now that we have a good base and all the needed details for further investigations later (if something goes wrong), it&#8217;s time to really start with generating the lists of items that we will keep and remove:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n&#x5B;dmadmin@cs-0 tmp]$ ## Generate list by keeping only the 1st occurrence seen of the 2nd column\n&#x5B;dmadmin@cs-0 tmp]$ awk &#039;!seen&#x5B;$2]++&#039; object_list.txt &gt; object_list.txt.tokeep\n&#x5B;dmadmin@cs-0 tmp]$\n&#x5B;dmadmin@cs-0 tmp]$ ## Generate list by keeping all except the 1st occurrence seen of the 2nd column\n&#x5B;dmadmin@cs-0 tmp]$ awk &#039;seen&#x5B;$2]++&#039; object_list.txt &gt; object_list.txt.toremove\n&#x5B;dmadmin@cs-0 tmp]$\n<\/pre><\/div>\n\n\n<p>The first awk command will generate a list very similar to the &#8220;object_list.txt.unique&#8221; one, except that it&#8217;s not sorted by <em>item_id <\/em>but it&#8217;s still sorted by <em>date_sent <\/em>ascending, same as the initial source file. As mentioned, this is because it will be better from my point of view, to work on items based on their <em>date_sent<\/em>. The second awk command will generate a list with exactly the opposite of the first one. Therefore, the first list contains all rows (<em>r_object_id<\/em>) that will be kept inside the <em>dmi_queue_item <\/em>table while the second one contains all rows (<em>r_object_id<\/em>) that will be removed.<\/p>\n\n\n\n<p>From this point on, I will usually reverse the content of the list to remove so that the newest items appear at the top and not at the bottom. This is so that we can safely start by removing newest rows (at the time of the export!) from the <em>dmi_queue_item <\/em>while the IndexAgent is still processing the oldest ones (if you indeed restarted it in normal mode earlier). If there are 5 million of rows to remove, depending on how many parallel threads you will start (see later in this blog), then it might take 1\/2\/4 hours of processing, so during that time, the IndexAgent might process a sizeable amount of items. Since the IndexAgent process items based on <em>date_sent <\/em>ascending, I think it makes sense to remove items based on <em>date_sent <\/em>descending. Please remember that this list was extracted when the IndexAgent wasn&#8217;t running, so items submitted after that won&#8217;t be touched at all, otherwise there could be issues with a wrong version of a document being indexed. Once the list of items to be removed has been reversed, we can generate an API script to process them:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n&#x5B;dmadmin@cs-0 tmp]$ ## Reverse the items to remove\n&#x5B;dmadmin@cs-0 tmp]$ tac object_list.txt.toremove &gt; object_list.txt.toremove.rev\n&#x5B;dmadmin@cs-0 tmp]$\n&#x5B;dmadmin@cs-0 tmp]$ ## Generate the API script\n&#x5B;dmadmin@cs-0 tmp]$ sed -e &quot;s,&#x5B;&#x5B;:space:]]\\+.*,&#039;;,&quot; -e &quot;s\/^\/?,c,delete dmi_queue_item objects where r_object_id=&#039;\/&quot; object_list.txt.toremove.rev &gt; object_list.api\n&#x5B;dmadmin@cs-0 tmp]$\n&#x5B;dmadmin@cs-0 tmp]$ wc -l *\n  2838121 object_list.api\n  3118245 object_list.txt\n  3118264 object_list.txt.orig\n  3118245 object_list.txt.sorted\n   280124 object_list.txt.tokeep\n  2838121 object_list.txt.toremove\n  2838121 object_list.txt.toremove.rev\n   280124 object_list.txt.unique\n 18429365 total\n&#x5B;dmadmin@cs-0 tmp]$\n<\/pre><\/div>\n\n\n<p>From this point on, we can now execute the API script as is, but if you followed the blog, there might be millions of rows to be deleted and therefore, millions of API commands in this script\u2026 Therefore, I usually split the API script into smaller batches of ~50k items:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n&#x5B;dmadmin@cs-0 tmp]$ ## Split the big API script into batches of 50k\n&#x5B;dmadmin@cs-0 tmp]$ split -l 50000 object_list.api object_list.api_p\n&#x5B;dmadmin@cs-0 tmp]$\n&#x5B;dmadmin@cs-0 tmp]$ ls -l object_list.api_p*\n-rw-r----- 1 dmadmin dmadmin 3600000 Nov 26 12:44 object_list.api_paa\n-rw-r----- 1 dmadmin dmadmin 3600000 Nov 26 12:44 object_list.api_pab\n-rw-r----- 1 dmadmin dmadmin 3600000 Nov 26 12:44 object_list.api_pac\n...\n-rw-r----- 1 dmadmin dmadmin 3600000 Nov 26 12:44 object_list.api_pcc\n-rw-r----- 1 dmadmin dmadmin 3600000 Nov 26 12:44 object_list.api_pcd\n-rw-r----- 1 dmadmin dmadmin 1428984 Nov 26 12:44 object_list.api_pce\n&#x5B;dmadmin@cs-0 tmp]$\n<\/pre><\/div>\n\n\n<p>Once done, from different shell sessions, it&#8217;s possible to start the below command X times and it will make sure that all the batches are processed only once:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; title: ; notranslate\" title=\"\">\n&#x5B;dmadmin@cs-0 tmp]$ ## Session 1\n&#x5B;dmadmin@cs-0 tmp]$ for file in `ls object_list.api_p*`; do\n  if &#x5B;&#x5B; ! -f log.${file} ]]; then\n    echo &quot;  -- ${file}&quot;\n    iapi $REPO_NAME -Udmadmin -Pxxx -r${file} &gt; log.${file}\n  fi\ndone\n  -- object_list.api_paa\n  -- object_list.api_pac\n  ...\n  -- object_list.api_pcc\n  -- object_list.api_pce\n&#x5B;dmadmin@cs-0 tmp]$\n####\n####\n&#x5B;dmadmin@cs-0 tmp]$ ## Session 2\n&#x5B;dmadmin@cs-0 tmp]$ for file in `ls object_list.api_p*`; do\n  if &#x5B;&#x5B; ! -f log.${file} ]]; then\n    echo &quot;  -- ${file}&quot;\n    iapi $REPO_NAME -Udmadmin -Pxxx -r${file} &gt; log.${file}\n  fi\ndone\n  -- object_list.api_pab\n  -- object_list.api_pad\n  ...\n  -- object_list.api_pcb\n  -- object_list.api_pcd\n&#x5B;dmadmin@cs-0 tmp]$\n<\/pre><\/div>\n\n\n<p>As you can see above, this command will loop through all the batches and for each, if there is already a log file present, it will skip it and check the next one. Otherwise, it will execute the iapi command needed to process the batch, creating the log file needed at the same time so that the batch is executed only once. Therefore, it is possible to parallelize the execution on several shell\/CS. Let it run for some time and afterwards, the <em>dmi_queue_item <\/em>table would be cleaned, without any duplicated items.<\/p>\n\n\n\n<p><strong>Note 1: <\/strong>Because the extract didn&#8217;t care about warning\/failed, once the cleanup is done, you will need to resubmit the warning\/failed items (if any), so that you are certain that these items cannot be indexed. Alternatively, you can filter the warning\/failed items during the extract, so that the IndexAgent will try again to process them (if they are duplicate of these warning\/failed items in the awaiting\/acquired queues.<br><strong>Note 2:<\/strong> If, after some time, you want to also remove the unique items (because it&#8217;s processing too slowly or because there are too much or because more important documents are coming soon), you can remove the items &#8220;tokeep&#8221; in the exact same way\u2026 Also, to generate an &#8220;ids.txt&#8221; file that the IndexAgent will be able to ingest (put the file here: &#8220;<em>$IA_HOME\/deployments\/IndexAgent.war\/WEB-INF\/classes\/ids.txt<\/em>&#8220;), you can use something like: &#8216;<em>sed -e &#8220;s,[0-9a-f]*[[:space:]]+,,&#8221; object_list.txt.tokeep &gt; ids.txt<\/em>&#8216;. This command will only keep the 2nd column (<em>item_id <\/em>column).<br><strong>Note 3:<\/strong> It is obviously possible to compress a lot the steps so that a single command would do everything, but for clarity in the blog, I separated all the steps.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Documentum is usually working pretty well with xPlore when it&#8217;s about managing its queue on well configured environments and\/or with &#8220;simple&#8221; repositories. Basically, as long as you do not only have very big\/complex documents (e.g.: 500Mb excel files with hundreds of thousands of rows) or a lot of customizations that aren&#8217;t very optimized or intensive [&hellip;]<\/p>\n","protected":false},"author":20,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[197,525],"tags":[2609,311,2197,2766,2767,474],"type_dbi":[],"class_list":["post-20730","post","type-post","status-publish","format-standard","hentry","category-application-integration-middleware","category-enterprise-content-management","tag-documentum-2","tag-duplicate","tag-indexagent","tag-indexing","tag-item_id","tag-xplore"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Documentum - How to easily remove duplicated xPlore queue items - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Documentum - How to easily remove duplicated xPlore queue items\" \/>\n<meta property=\"og:description\" content=\"Documentum is usually working pretty well with xPlore when it&#8217;s about managing its queue on well configured environments and\/or with &#8220;simple&#8221; repositories. Basically, as long as you do not only have very big\/complex documents (e.g.: 500Mb excel files with hundreds of thousands of rows) or a lot of customizations that aren&#8217;t very optimized or intensive [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-29T19:20:00+00:00\" \/>\n<meta name=\"author\" content=\"Morgan Patou\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MorganPatou\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Morgan Patou\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\\\/\"},\"author\":{\"name\":\"Morgan Patou\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"headline\":\"Documentum &#8211; How to easily remove duplicated xPlore queue items\",\"datePublished\":\"2022-11-29T19:20:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\\\/\"},\"wordCount\":1730,\"commentCount\":0,\"keywords\":[\"Documentum\",\"duplicate\",\"IndexAgent\",\"indexing\",\"item_id\",\"xPlore\"],\"articleSection\":[\"Application integration &amp; Middleware\",\"Enterprise content management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\\\/\",\"name\":\"Documentum - How to easily remove duplicated xPlore queue items - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2022-11-29T19:20:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentum &#8211; How to easily remove duplicated xPlore queue items\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/c4d05b25843a9bc2ab20415dae6bd2d8\",\"name\":\"Morgan Patou\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g\",\"caption\":\"Morgan Patou\"},\"description\":\"Morgan Patou has over 12 years of experience in Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\\\/Banking, and the Pharmaceutical industry.\",\"sameAs\":[\"https:\\\/\\\/blog.dbi-services.com\\\/author\\\/morgan-patou\\\/\",\"https:\\\/\\\/x.com\\\/MorganPatou\"],\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/morgan-patou\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Documentum - How to easily remove duplicated xPlore queue items - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/","og_locale":"en_US","og_type":"article","og_title":"Documentum - How to easily remove duplicated xPlore queue items","og_description":"Documentum is usually working pretty well with xPlore when it&#8217;s about managing its queue on well configured environments and\/or with &#8220;simple&#8221; repositories. Basically, as long as you do not only have very big\/complex documents (e.g.: 500Mb excel files with hundreds of thousands of rows) or a lot of customizations that aren&#8217;t very optimized or intensive [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/","og_site_name":"dbi Blog","article_published_time":"2022-11-29T19:20:00+00:00","author":"Morgan Patou","twitter_card":"summary_large_image","twitter_creator":"@MorganPatou","twitter_misc":{"Written by":"Morgan Patou","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/"},"author":{"name":"Morgan Patou","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"headline":"Documentum &#8211; How to easily remove duplicated xPlore queue items","datePublished":"2022-11-29T19:20:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/"},"wordCount":1730,"commentCount":0,"keywords":["Documentum","duplicate","IndexAgent","indexing","item_id","xPlore"],"articleSection":["Application integration &amp; Middleware","Enterprise content management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/","url":"https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/","name":"Documentum - How to easily remove duplicated xPlore queue items - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2022-11-29T19:20:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/documentum-how-to-easily-remove-duplicated-xplore-queue-items\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Documentum &#8211; How to easily remove duplicated xPlore queue items"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/c4d05b25843a9bc2ab20415dae6bd2d8","name":"Morgan Patou","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5d7f5bec8b597db68a09107a6f5309e3870d6296ef94fb10ead4b09454ca67e5?s=96&d=mm&r=g","caption":"Morgan Patou"},"description":"Morgan Patou has over 12 years of experience in Enterprise Content Management (ECM) systems, with a strong focus in recent years on platforms such as Alfresco, Documentum, and M-Files. He specializes in the architecture, setup, customization, and maintenance of ECM infrastructures in complex &amp; critical environments. Morgan is well-versed in both engineering and operations aspects, including high availability design, system integration, and lifecycle management. He also has a solid foundation in open-source and proprietary technologies - ranging from Apache, OpenLDAP or Kerberos to enterprise-grade systems like WebLogic. Morgan Patou holds an Engineering Degree in Computer Science from ENSISA (\u00c9cole Nationale Sup\u00e9rieure d'Ing\u00e9nieurs Sud Alsace) in Mulhouse, France. He is Alfresco Content Services Certified Administrator (ACSCA), Alfresco Content Services Certified Engineer (ACSCE) as well as OpenText Documentum Certified Administrator. His industry experience spans the Public Sector, IT Services, Financial Services\/Banking, and the Pharmaceutical industry.","sameAs":["https:\/\/blog.dbi-services.com\/author\/morgan-patou\/","https:\/\/x.com\/MorganPatou"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/morgan-patou\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/20730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/20"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=20730"}],"version-history":[{"count":4,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/20730\/revisions"}],"predecessor-version":[{"id":20734,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/20730\/revisions\/20734"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=20730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=20730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=20730"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=20730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}