<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archives des Enterprise content management - dbi Blog</title>
	<atom:link href="https://www.dbi-services.com/blog/category/enterprise-content-management/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbi-services.com/blog/category/enterprise-content-management/</link>
	<description></description>
	<lastBuildDate>Tue, 12 May 2026 09:30:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/05/cropped-favicon_512x512px-min-32x32.png</url>
	<title>Archives des Enterprise content management - dbi Blog</title>
	<link>https://www.dbi-services.com/blog/category/enterprise-content-management/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Stop measuring ECM success like this</title>
		<link>https://www.dbi-services.com/blog/stop-measuring-ecm-success-like-this/</link>
					<comments>https://www.dbi-services.com/blog/stop-measuring-ecm-success-like-this/#respond</comments>
		
		<dc:creator><![CDATA[Guillaume Meunier]]></dc:creator>
		<pubDate>Wed, 13 May 2026 08:15:00 +0000</pubDate>
				<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[digitalization]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[M-Files]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44372</guid>

					<description><![CDATA[<p>As I&#8217;ve mentioned in some of my previous blog posts, ECM projects don&#8217;t fail because of the chosen technology. Most products can meet the necessary requirements. The choice of a solution is driven more by other aspects, such as the effort required for deployment and maintenance, the end-user interface, and the integration capabilities. As I [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/stop-measuring-ecm-success-like-this/">Stop measuring ECM success like this</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>As I&#8217;ve mentioned in some of my previous blog posts, ECM projects don&#8217;t fail because of the chosen technology. Most products can meet the necessary requirements. The choice of a solution is driven more by other aspects, such as the effort required for deployment and maintenance, the end-user interface, and the integration capabilities.</p>



<p>As I wrote earlier, an ECM implementation is different from other IT projects. It&#8217;s a living system!</p>



<p>For years, organizations have relied on the same familiar KPIs to measure success:</p>



<p>&#8220;We migrated one million documents.&#8221;</p>



<p>&#8220;Two hundred users successfully completed the training.&#8221;</p>



<p>And yet, users still can&#8217;t find what they need. Decisions are still slow to be made. Content is still seen as a burden rather than an asset.</p>


<div class="wp-block-image">
<figure class="aligncenter size-medium"><img fetchpriority="high" decoding="async" width="300" height="300" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/stop-sign-300x300.png" alt="stop measuring ECM success this way" class="wp-image-44390" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/stop-sign-300x300.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/stop-sign-150x150.png 150w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/stop-sign-768x768.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/stop-sign.png 796w" sizes="(max-width: 300px) 100vw, 300px" /></figure>
</div>


<p>It&#8217;s time to stop measuring ECM success this way.</p>



<h2 class="wp-block-heading" id="h-the-problem-with-traditional-kpis">The problem with traditional KPIs</h2>



<h3 class="wp-block-heading" id="h-number-of-documents-migrated">Number of documents migrated</h3>



<p>Migrating documents is a technical milestone, not a business outcome.<br>A repository full of poorly classified, duplicated, or outdated documents is not a success; it&#8217;s digital clutter on a large scale. Migration only answers the question, &#8220;Did we move data?&#8221; It completely ignores whether people can actually use it.</p>



<p>Even worse, focusing on volume often encourages lift-and-shift strategies that preserve old folder structures and bad habits, the very things that ECM is designed to address.</p>



<h3 class="wp-block-heading" id="h-number-of-trained-users">Number of trained users</h3>



<p>Although training metrics can be reassuring, they measure exposure, not adoption.<br>Completing a training session does not necessarily mean that:</p>



<ul class="wp-block-list">
<li>Users have changed how they work.</li>



<li>They trust the system.</li>



<li>They stopped saving content locally or emailing attachments.</li>
</ul>



<p>In many ECM projects, users are technically &#8220;trained&#8221; yet still bypass the system because it slows them down instead of helping them.</p>



<h3 class="wp-block-heading" id="h-why-these-metrics-miss-the-point">Why these metrics miss the point?</h3>



<p>ECM isn&#8217;t just about storing documents. It&#8217;s about enabling better, faster, and safer work.</p>



<p>If your KPIs don&#8217;t reflect this, you may declare success while the business quietly disagrees.</p>



<p>So, what should we measure instead?</p>



<h2 class="wp-block-heading" id="h-measures-that-matter">Measures that matter</h2>



<h3 class="wp-block-heading" id="h-time-to-find-ttf">Time-To-Find (TTF)</h3>



<p>This is one of the most honest and revealing ECM KPIs.</p>



<p>In organizations that rely on folders:</p>



<ul class="wp-block-list">
<li>Users browse</li>



<li>guess locations</li>



<li>Open the wrong versions</li>



<li>Ask colleagues, &#8220;Where is the latest file?&#8221;</li>
</ul>



<p>With a metadata-driven ECM like <a href="https://www.m-files.com/" target="_blank" rel="noreferrer noopener">M-Files</a>, content is found by what it is, not where it’s stored.<br></p>



<p>Measuring Time to Find:</p>



<ul class="wp-block-list">
<li>Before ECM</li>



<li>After going live</li>



<li>And again after optimization.</li>
</ul>



<p>This gives you a direct line from ECM value to daily productivity.<br>If users can’t find content faster, the ECM isn&#8217;t working, regardless of how many documents were migrated.</p>



<h3 class="wp-block-heading" id="h-decision-speed">Decision speed</h3>



<p>This KPI is even more powerful and strategic.</p>



<p>Decision speed is affected by:</p>



<ul class="wp-block-list">
<li>Content availability</li>



<li>Version accuracy</li>



<li>Context (related documents, metadata, and workflow state)</li>



<li>Trust in information completeness</li>
</ul>



<p>M Files accelerates decision-making by:</p>



<ul class="wp-block-list">
<li>Ensuring users always see the latest version</li>



<li>Automatically surfacing related content</li>



<li>Embedding documents directly into business processes</li>



<li>Applying governance without slowing people down</li>
</ul>



<p>When ECM is implemented effectively, decision cycles shorten. Approvals happen faster, issues are resolved sooner, and risks are identified earlier.<br>That’s real business impact.</p>



<h2 class="wp-block-heading" id="h-why-m-files-changes-the-kpi-conversation">Why M‑Files changes the KPI conversation</h2>



<p>Traditional ECM systems force users to adapt to them. M-Files, however, adapts to the business.</p>



<p>M-Files is:</p>



<ul class="wp-block-list">
<li>Metadata-driven</li>



<li>Process aware</li>



<li>Contextual</li>



<li>Automation ready</li>
</ul>



<p>It enables KPIs centered around work outcomes, not IT activities.</p>



<p>Instead of asking:</p>



<p>“How much content did we store?”</p>



<p>You can ask:</p>



<ul class="wp-block-list">
<li>“How quickly do our teams find information?”</li>



<li>“Where are decisions still slow, and why?”</li>



<li>“Which processes would improve most with better information?”</li>
</ul>



<h2 class="wp-block-heading" id="h-a-more-effective-approach-to-ecm-success">A more effective approach to ECM success</h2>



<p>Thinking differently isn&#8217;t that hard, and yet it makes a huge difference. You just need the courage to take a step back.</p>



<p>Instead of thinking about &#8220;How your documents are stored?&#8221;, ask yourself: <strong>&#8220;What information is available?&#8221;</strong></p>



<p>&#8220;Are my users trained?&#8221; Or rather, <strong>&#8220;Do my users have the tools they need to take action?&#8221;</strong></p>



<p><strong>&#8220;Is the metadata understood?&#8221;</strong>, is more important than &#8220;How my folder structure is organized?&#8221;</p>



<p>The question isn&#8217;t whether I completed the migration, but whether <strong>it sped up the decision-making process.</strong></p>



<h2 class="wp-block-heading" id="h-to-sum-things-up">To sum things up</h2>



<p>If your ECM success story starts and ends with numbers like documents migrated or users trained, then you’re focusing on the effort rather than the actual impact. That’s a real shame because you’re missing the point of such a project.</p>



<p>Modern ECM success is about:</p>



<ul class="wp-block-list">
<li>Time saved</li>



<li>Decisions accelerated</li>



<li>Risk reduced</li>



<li>Work simplified</li>
</ul>



<p>With M Files, these outcomes are not side effects but they are the goal.</p>



<p>Stop measuring ECM success like an IT project. Instead start measuring it like a business advantage!</p>



<p>We&#8217;re <a href="https://www.dbi-services.com/technologies/m-files-document-management-solutions/" target="_blank" rel="noreferrer noopener">here </a>to help you with that transition.</p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/stop-measuring-ecm-success-like-this/">Stop measuring ECM success like this</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/stop-measuring-ecm-success-like-this/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The metadata trap</title>
		<link>https://www.dbi-services.com/blog/the-metadata-trap/</link>
					<comments>https://www.dbi-services.com/blog/the-metadata-trap/#respond</comments>
		
		<dc:creator><![CDATA[Guillaume Meunier]]></dc:creator>
		<pubDate>Thu, 07 May 2026 07:30:24 +0000</pubDate>
				<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[digitalization]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[M-Files]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44229</guid>

					<description><![CDATA[<p>You know, metadata is the key of a nice Enterprise Content Management system. It is supposed to make work easier, promising order instead of chaos, findability instead of frustration, control instead of clutter. In the world of document management, metadata is often treated as the solution, the moment where unstructured content becomes manageable. In reality, [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/the-metadata-trap/">The metadata trap</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>You know, metadata is the key of a nice Enterprise Content Management system.</p>



<p>It is supposed to make work easier, promising order instead of chaos, findability instead of frustration, control instead of clutter. In the world of document management, metadata is often treated as the solution, the moment where unstructured content becomes manageable.</p>



<p>In reality, in many organizations, metadata quietly becomes the problem.</p>



<p>Not because metadata is bad. But because too much structure, designed in the wrong way, can actively destroy productivity.</p>



<p>This is the metadata trap: when structure stops serving work and starts working against it.</p>


<div class="wp-block-image">
<figure class="aligncenter size-medium"><img decoding="async" width="300" height="300" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/anvil-on-head-300x300.png" alt="The metadata trap" class="wp-image-44249" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/anvil-on-head-300x300.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/anvil-on-head-150x150.png 150w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/anvil-on-head-768x768.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/05/anvil-on-head.png 796w" sizes="(max-width: 300px) 100vw, 300px" /></figure>
</div>


<h2 class="wp-block-heading" id="h-the-promise-of-perfect-structure">The promise of perfect structure</h2>



<p>Every ECM project starts the same way. A workshop room with a whiteboard. Some PowerPoint slides with boxes and arrows. Someone asks:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>What metadata do we need?</p>
</blockquote>



<p>At first, the answers are sensible:</p>



<ul class="wp-block-list">
<li>Document type</li>



<li>Customer</li>



<li>Project</li>



<li>Status</li>
</ul>



<p>Then the room warms up. Legal wants contract subtype. Finance wants cost center. Compliance wants retention category. Sales wants region, industry, deal size. IT suggests future-proofing &#8220;while we’re at it.&#8221;</p>



<p>Before long, a simple document requires:</p>



<ul class="wp-block-list">
<li>10/15 mandatory fields</li>



<li>Complex naming conventions</li>



<li>Conditional rules and dependencies</li>
</ul>



<p>On paper, it’s beautiful.</p>



<p>In practice, it’s an additional charge on every single user, every single day.</p>



<h2 class="wp-block-heading" id="h-the-user-fees-nobody-calculates">The user &#8220;fees&#8221; nobody calculates</h2>



<p>Although metadata only amounts to a few bytes and is therefore seemingly insignificant in the context of a global ECM project, it isn&#8217;t free.</p>



<p>Each required field adds:</p>



<ul class="wp-block-list">
<li>A decision the user must make</li>



<li>Context they must understand</li>



<li>Time they must spend</li>
</ul>



<p>Individually, that cost seems trivial. Five extra seconds here. Ten seconds there, but multiply that by:</p>



<ul class="wp-block-list">
<li>Hundreds of users</li>



<li>Thousands of documents</li>



<li>Years of daily work</li>
</ul>



<p>What looked like “good governance” becomes a significant productivity drain.</p>



<p>Worse, the people who pay this tax are rarely the people who designed the metadata model, that&#8217;s why it is crucial to involves the right people at the really beginning of the project.</p>



<h2 class="wp-block-heading" id="h-what-really-happens-in-the-real-world">What really happens in the real world</h2>



<p>When metadata becomes too heavy, users don’t become more disciplined.</p>



<p>They become creative.</p>



<p>They:</p>



<ul class="wp-block-list">
<li>Select the first value in the list just to proceed</li>



<li>Copy metadata from an old document whether it fits or not</li>



<li>Create “Miscellaneous” documents whenever possible</li>



<li>Store drafts locally and upload them later (maybe)</li>



<li>Avoid the system unless absolutely forced</li>
</ul>



<p>Although the metadata appears to be complete at this stage, it is far from relevant. The result is a highly detailed structure that lacks substance.</p>



<h2 class="wp-block-heading" id="h-the-illusion-of-control">The illusion of control</h2>



<p>One of the most dangerous assumptions in ECM projects is this:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>If we enforce the metadata, people will use it correctly.</p>
</blockquote>



<p>They won’t.</p>



<p>Not because they’re lazy.<br>Because their primary job is not data quality.</p>



<p>A project manager wants to move a project forward.<br>A lawyer wants to close a contract.<br>An engineer wants to solve a problem.</p>



<p>Metadata is secondary. If it becomes an obstacle, it will be bypassed consciously or subconsciously.</p>



<p>Heavy structure creates the illusion of control while eroding actual adoption.</p>



<h2 class="wp-block-heading" id="h-metadata-designed-for-reporting-vs-for-work">Metadata designed for reporting vs. for work</h2>



<p>Here’s a useful distinction:</p>



<ul class="wp-block-list">
<li><strong>Reporting metadata</strong> serves management, analytics, and compliance.</li>



<li><strong>Operational metadata</strong> serves daily work.</li>
</ul>



<p>The trap appears when reporting needs dominate design decisions.</p>



<p>Fields are added because:</p>



<ul class="wp-block-list">
<li>&#8220;We might need this later&#8221;</li>



<li>&#8220;It could be useful for dashboards&#8221;</li>



<li>&#8220;Compliance asked for it&#8221;</li>



<li>&#8220;Another department uses it&#8221;</li>
</ul>



<p>Very few fields are added because:</p>



<p>&#8220;This helps users get their work done faster&#8221;</p>



<p>This imbalance is deadly.</p>



<p>If metadata does not help users perform actions such as finding, reusing, automating or making decisions, it will eventually become redundant.</p>



<h2 class="wp-block-heading" id="h-metadata-isn-t-a-magic-bullet">Metadata isn&#8217;t a magic bullet.</h2>



<p>This may sound heretical in ECM circles, but it’s true.</p>



<p>Metadata itself has no value.<br>Metadata only becomes valuable when…</p>



<ul class="wp-block-list">
<li>It is used later.</li>



<li>by a real process.</li>



<li>with a clear outcome.</li>
</ul>



<p>Unused metadata is just overhead.</p>



<p>A useful question to ask about every field is:</p>



<p>&#8220;What breaks if this metadata is missing or incorrect?&#8221;</p>



<p>If the honest answer is &#8220;nothing important&#8221;, then the field may not be necessary.</p>



<h2 class="wp-block-heading" id="h-the-cognitive-load-problem">The cognitive load problem</h2>



<p>There’s also a human factor we often ignore: <strong>cognitive load</strong>.</p>



<p>Every metadata field requires the user to:</p>



<ul class="wp-block-list">
<li>Understand the difference between similar options</li>



<li>Interpret abstract definitions</li>



<li>Predict future use cases</li>
</ul>



<p>This is exhausting, especially under time pressure.</p>



<p>When systems demand constant classification, users feel policed rather than supported.</p>



<p>The result?</p>



<ul class="wp-block-list">
<li>Reduced satisfaction</li>



<li>Lower trust in the system</li>



<li>Gradual disengagement</li>
</ul>



<p>And no training program can fix that.</p>



<h2 class="wp-block-heading" id="h-simpler-structure-better-outcomes">Simpler structure, better outcomes</h2>



<p>The most successful systems tend to share a few traits:</p>



<ul class="wp-block-list">
<li>Minimal mandatory metadata</li>



<li>Strong defaults and automation</li>



<li>Metadata inferred from context whenever possible</li>



<li>Progressive disclosure (advanced fields only when needed)</li>
</ul>



<p>They accept a hard truth:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Incomplete but accurate metadata is better than complete but meaningless metadata.</p>
</blockquote>



<p>The goal isn’t perfection. The goal is <strong>usefulness at scale</strong>.</p>



<h2 class="wp-block-heading" id="h-a-practical-rule-of-thumb">A practical rule of thumb</h2>



<p>Here’s a very simple rule that works shockingly well:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>If a user cannot explain why a metadata field is important for their work in a single sentence, then that field is hindering efficiency.</p>
</blockquote>



<p>This doesn’t mean removing governance. It means aligning structure with reality.</p>



<p>Metadata should:</p>



<ul class="wp-block-list">
<li>Reduce friction, not add it</li>



<li>Follow work, not dictate it</li>



<li>Evolve over time, not fossilize</li>
</ul>



<h2 class="wp-block-heading" id="h-escaping-the-metadata-trap">Escaping the Metadata Trap</h2>



<p>Avoiding the metadata trap doesn’t require radical change, but just discipline.</p>



<ul class="wp-block-list">
<li>Start with the minimum viable structure</li>



<li>Observe real usage, not design intent</li>



<li>Remove fields that don’t pull their weight</li>



<li>Treat metadata models as living systems</li>
</ul>



<p>Most importantly, listen to users. Not in requirements workshops, but in their daily behavior.</p>



<p>They will always tell you when structure has crossed the line.</p>



<p>Life is full of compromises, and so is the life of an ECM too! Structure is powerful. Metadata is necessary. Governance matters. But when structure becomes heavier than the work it supports, productivity collapses quietly and steadily.</p>



<p data-wp-context---core-fit-text="core/fit-text::{&quot;fontSize&quot;:&quot;&quot;}" data-wp-init---core-fit-text="core/fit-text::callbacks.init" data-wp-interactive data-wp-style--font-size="core/fit-text::context.fontSize" class="has-fit-text"><strong>The structure should serve the work, not the other way around.</strong></p>



<p>That’s the difference between a system people tolerate and a system they actually use.</p>



<p>Modern ECM systems, such as <a href="https://www.m-files.com/m-files-platform/capabilities/document-management/" target="_blank" rel="noreferrer noopener">M-Files</a>, can greatly improve the user experience. There are various mechanisms for doing so:</p>



<ul class="wp-block-list">
<li>Metadata discovery suggests values for you</li>



<li>Automatic value applies basic rules (concatenation, automatic numbering,&#8230;)</li>



<li>Background calculations perform more complex actions </li>



<li>A dynamic user interface that displays or hides properties depending on the lifecycle state and or the user profile</li>
</ul>



<p>These capabilities enable users to work efficiently without wasting time filling out endless forms. Meanwhile, governance keeps everything under control, and management continues to receive relevant analytics data.</p>



<p>As always, <a href="https://www.dbi-services.com/expertises/digitalization-with-ecm/" target="_blank" rel="noreferrer noopener">dbi services (and I)</a> are here to guide you through this complex yet essential process.</p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/the-metadata-trap/">The metadata trap</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/the-metadata-trap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The hidden cost of “Quick Wins” in ECM projects</title>
		<link>https://www.dbi-services.com/blog/the-hidden-cost-of-quick-wins-in-ecm-projects/</link>
					<comments>https://www.dbi-services.com/blog/the-hidden-cost-of-quick-wins-in-ecm-projects/#respond</comments>
		
		<dc:creator><![CDATA[Guillaume Meunier]]></dc:creator>
		<pubDate>Wed, 29 Apr 2026 07:34:27 +0000</pubDate>
				<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[digitalization]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[M-Files]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44086</guid>

					<description><![CDATA[<p>This is the fourth and final blog post in the series, that highlights the drawbacks of poor ECM implementation. In almost every enterprise content management (ECM) initiative, the phrase &#8220;Let&#8217;s get some quick wins&#8221; appears early, often with good intentions. Quick wins promise momentum. They reassure sponsors. They demonstrate value quickly.This is an important phase, [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/the-hidden-cost-of-quick-wins-in-ecm-projects/">The hidden cost of “Quick Wins” in ECM projects</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>This is the fourth and final blog post in the series, that highlights the drawbacks of poor ECM implementation.</p>



<p>In almost every enterprise content management (ECM) initiative, the phrase &#8220;Let&#8217;s get some quick wins&#8221; appears early, often with good intentions.</p>


<div class="wp-block-image">
<figure class="aligncenter size-medium"><img decoding="async" width="300" height="300" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/fingers-crossed-300x300.png" alt="Good intentions alone aren't enough for a successful ECM project." class="wp-image-44137" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/fingers-crossed-300x300.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/fingers-crossed-150x150.png 150w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/fingers-crossed-768x768.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/fingers-crossed.png 796w" sizes="(max-width: 300px) 100vw, 300px" /></figure>
</div>


<p><br>Quick wins promise momentum. They reassure sponsors. They demonstrate value quickly.<br>This is an important phase, especially in complex ECM programs. Initial success sends the right signal.<br>However, there’s a hidden risk that few teams discuss: when quick wins influence design decisions, the future of the platform is often jeopardized.<br>After years of working on digitization projects at different stages of maturity, I’ve seen how short-term victories can quietly create long-term problems.<br>Let&#8217;s explore why.</p>



<h2 class="wp-block-heading" id="h-why-quick-wins">Why “Quick Wins”</h2>



<p>ECM projects have a reputation problem.</p>



<p>They’re perceived as lengthy, organizationally disruptive, and unable to deliver visible value on day one.</p>



<p>Pressure builds from every direction:</p>



<p>Executives want proof of ROI, business users want immediate relief, and IT wants to reduce risk.</p>



<p>Quick wins seem like the perfect solution:</p>



<p>A fast workflow, a simple metadata model, a department-specific solution, and minimal integration &#8220;for now.&#8221;</p>



<p>In isolation, these choices often work.<br>The issue isn’t the quick wins themselves, but when they become the strategy.</p>



<h2 class="wp-block-heading" id="h-the-illusion-of-success">The illusion of success</h2>



<p>A quick win often looks like this:</p>



<p>Users quickly adopt the solution.<br>A process is automated in weeks.<br>KPIs show immediate improvement.<br>The project is labeled a “success.”</p>



<p>What’s rarely measured are the following:</p>



<ul class="wp-block-list">
<li>Architectural compromises</li>



<li>Governance shortcuts</li>



<li>Data model rigidity</li>



<li>Future integration costs</li>
</ul>



<p>The ECM system works, but only for the narrow scope for which it was built.<br>This creates the illusion of success, making it extremely difficult to later argue for redesign, refactoring, or rethinking foundational choices.</p>



<h2 class="wp-block-heading" id="h-where-the-long-term-damage-begins">Where the long-term damage begins</h2>



<h3 class="wp-block-heading" id="h-hard-coded-business-logic">Hard-Coded Business Logic</h3>



<p>Quick wins often embed business rules directly into:</p>



<ol class="wp-block-list">
<li></li>
</ol>



<ul class="wp-block-list">
<li>Workflows</li>



<li>Scripts</li>



<li>Folder structures</li>



<li>Naming conventions</li>
</ul>



<p>While this accelerates delivery, it also freezes flexibility.<br>When regulations change, processes evolve, or new departments are brought on board, the system resists change.<br>What should be a configuration becomes redevelopment.</p>



<h3 class="wp-block-heading" id="h-fragmented-information-architecture">Fragmented Information Architecture</h3>



<p id="h-fragmented-information-architecture-delivering-fast-frequently-means">Delivering fast often means:</p>



<ul class="wp-block-list">
<li>Department-specific metadata</li>



<li>Unique taxonomies</li>



<li>Custom object types without alignment</li>
</ul>



<p>Individually rational, collectively disastrous.<br>Over time, the ECM becomes:</p>



<ul class="wp-block-list">
<li>Hard to search across</li>



<li>Impossible to standardize</li>



<li>Expensive to clean up</li>



<li>Politically sensitive to redesign</li>
</ul>



<p>The organization ends up managing multiple ECMs on one platform, which slows down operations and reduces efficiency.</p>



<h3 class="wp-block-heading" id="h-governance-deferred">Governance deferred</h3>



<p>I&#8217;ve already written about governance in previous posts (<a href="https://www.dbi-services.com/blog/the-day-your-ecm-system-became-unusable/" target="_blank" rel="noreferrer noopener">here</a> or <a href="https://www.dbi-services.com/blog/m-files-didnt-fix-your-problem-your-organization-did/" target="_blank" rel="noreferrer noopener">here</a>), This is rarely part of a quick win.<br>So it’s postponed:</p>



<ol start="3" class="wp-block-list">
<li></li>
</ol>



<p>“We’ll define ownership later”<br>“Retention can come in phase two”<br>“Permissions can be cleaned up once adoption grows”</p>



<p>Except “later” never arrives.<br>By the time governance becomes urgent:</p>



<p>Nowadays, content is no longer limited to simple documents, so volumes quickly become huge. This makes it difficult to manage corrective actions.<br>Bad habits have taken root.<br>Addressing access or retention issues becomes risky when the original needs and constraints are no longer clear.</p>



<p>The cost of governance grows exponentially with time.</p>



<h3 class="wp-block-heading" id="h-technical-debt-that-looks-like-business-value">Technical debt that looks like business value</h3>



<p id="h-technical-debt-that-looks-like-business-value-perhaps-the-most-dangerous-effect-early-success-hides-technical-debt-behind-business-praise-the-system-delivers-value-today-so-questioning-its-design-feels-unnecessary-even-disruptive-until">Perhaps the most dangerous effect:<br>Early success hides technical debt behind business praise.<br>The system delivers value today, so questioning its design feels unnecessary, even disruptive.<br>Until:</p>



<ol start="4" class="wp-block-list">
<li></li>
</ol>



<ul class="wp-block-list">
<li>Performance degrades</li>



<li>Reporting becomes unreliable</li>



<li>Integrations become costly</li>



<li>Upgrades feel dangerous</li>
</ul>



<p>By that point, the platform has become business-critical and fragile. Often, at this time, the customer is considering a new ECM migration, not because the initial solution is inadequate, but because of poor implementation: a bad data model and a lot of custom development, which makes the solution slow and impossible to upgrade without starting from scratch.</p>



<p>Sometimes, migration project is switching from one ECM system to the same, but three or four major versions later. Ideally, a good solution would follow the product lifecycle with maintenance tasks varying in complexity depending on the version updates. However, this is just part of how IT works. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h2 class="wp-block-heading" id="h-the-false-choice-speed-vs-sustainability">The false choice: Speed vs. Sustainability</h2>



<p>Most ECM teams believe they face a trade-off:</p>



<p>“We can deliver fast, or we can design it right.”</p>



<p>That’s a false dichotomy.<br>The real issue is intentionality.<br>You can provide early value without sacrificing the future if you treat quick wins as such.</p>



<ul class="wp-block-list">
<li>Controlled experiments</li>



<li>Learning tools</li>



<li>Stepping stones, not endpoints</li>
</ul>



<p>How to Reframe “Quick Wins” Safely<br>Here’s what sustainable ECM teams do differently:</p>



<h3 class="wp-block-heading" id="h-design-the-core-before-the-win">Design the core before the win</h3>



<p>Even if the first delivery is small, the foundations aren’t:</p>



<ul class="wp-block-list">
<li>Information model</li>



<li>Governance principles</li>



<li>Extension strategy</li>



<li>Integration approach</li>
</ul>



<p>You don&#8217;t need to build everything right now, but you must decide on all aspects from the beginning.</p>



<h3 class="wp-block-heading" id="h-keep-quick-wins-reversible">Keep &#8220;Quick Wins&#8221; reversible</h3>



<p>Before approving a shortcut, ask one question:</p>



<p>&#8220;How difficult would it be to undo?&#8221;</p>



<p>If the answer is &#8220;painful&#8221; or &#8220;political,&#8221; then it&#8217;s a liability, not a win.</p>



<h3 class="wp-block-heading" id="h-separate-demonstration-from-architecture">Separate demonstration from architecture</h3>



<p>Sometimes, a quick win is just for proof of concept. That&#8217;s fine.<br>But:</p>



<p>Don&#8217;t let demo logic become production architecture.<br>Don&#8217;t optimize a prototype as if it will live forever.</p>



<p>Be explicit about what is temporary.</p>



<h3 class="wp-block-heading" id="h-measure-long-term-risk-alongside-short-term-value">Measure long-term risk alongside short-term value</h3>



<p>Add one metric to your success criteria: Future adaptability.</p>



<p>If achieving a quick win makes the platform harder to evolve, the cost of doing so must be apparent from the beginning, not discovered years later.</p>



<h2 class="wp-block-heading" id="h-ecm-remembers-every-shortcut">ECM remembers every shortcut</h2>



<p>ECM systems are unlike many other platforms.<br>They:</p>



<ul class="wp-block-list">
<li>Accumulate content</li>



<li>Preserve decisions</li>



<li>Amplify early design choices over time</li>
</ul>



<p>Every shortcut becomes part of the organizational memory.<br>Of course, quick wins aren’t bad, they are even necessary for user adoption. However, if left unchecked, quick wins can silently compound.<br>True success of an ECM project isn’t how fast it delivers value in the first month.<br>Rather, it&#8217;s how well it continues to serve the organization in year five.</p>



<p>If you are looking for advice about your ECM strategy, please ask <a href="https://www.dbi-services.com/expertises/digitalization-with-ecm/" target="_blank" rel="noreferrer noopener">us</a>!</p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/the-hidden-cost-of-quick-wins-in-ecm-projects/">The hidden cost of “Quick Wins” in ECM projects</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/the-hidden-cost-of-quick-wins-in-ecm-projects/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The day your ECM System became unusable</title>
		<link>https://www.dbi-services.com/blog/the-day-your-ecm-system-became-unusable/</link>
					<comments>https://www.dbi-services.com/blog/the-day-your-ecm-system-became-unusable/#respond</comments>
		
		<dc:creator><![CDATA[Guillaume Meunier]]></dc:creator>
		<pubDate>Tue, 21 Apr 2026 09:00:00 +0000</pubDate>
				<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[digitalization]]></category>
		<category><![CDATA[ECM]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[M-Files]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=44003</guid>

					<description><![CDATA[<p>It started like any normal Tuesday.No alarms. No warning signs. No urgent emails flooding inboxes before 8 AM.Just a regular working day, until people tried to open documents.At first, it was a single complaint.“Hey, I can’t access the invoice archive.”Then another.“The HR files are taking forever to load.”Then ten more.“Nothing is opening.”And within an hour, [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/the-day-your-ecm-system-became-unusable/">The day your ECM System became unusable</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>It started like any normal Tuesday.<br>No alarms. No warning signs. No urgent emails flooding inboxes before 8 AM.<br>Just a regular working day, until people tried to open documents.<br>At first, it was a single complaint.<br>“Hey, I can’t access the invoice archive.”<br>Then another.<br>“The HR files are taking forever to load.”<br>Then ten more.<br>“Nothing is opening.”<br>And within an hour, the entire ECM system, the one everyone depended on every single day, had become nearly unusable.</p>


<div class="wp-block-image">
<figure class="aligncenter size-medium"><img loading="lazy" decoding="async" width="300" height="300" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/dont-panic-300x300.png" alt="the entire ECM system had become nearly unusable." class="wp-image-44019" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/dont-panic-300x300.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/dont-panic-150x150.png 150w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/dont-panic-768x768.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/dont-panic.png 796w" sizes="auto, (max-width: 300px) 100vw, 300px" /></figure>
</div>


<h2 class="wp-block-heading" id="h-the-situation">The situation</h2>



<p>This wasn’t just a storage platform.<br>It was the operational backbone of the company.<br>Contracts, invoices, compliance records, procedures, employee files, approval workflows, audit trails, everything lived there.<br>Teams across finance, HR, legal, procurement, and operations relied on it constantly.<br>If the ECM system slowed down, business slowed down.<br>If it stopped… business stopped.<br>And that morning, it stopped.</p>



<h2 class="wp-block-heading" id="h-what-went-wrong">What went wrong?</h2>



<p>The issue had been building quietly for months.<br>Nobody noticed because the pain came slowly.<br>A few extra seconds to retrieve a file, a delayed workflow here, a failed search there.<br>People adapted. They worked around it.<br>IT assumed it was “normal system aging.”<br>But underneath, the real problem was growing:</p>



<ul class="wp-block-list">
<li>No proper retention policy.</li>



<li>No archive strategy.</li>



<li>No performance monitoring.</li>



<li>No governance around content growth.</li>
</ul>



<p>Years of duplicate files as well as outdated versions of documents no one needed.<br>Massive email attachments stored for nothing or expired records that should have been deleted years ago.<br>With all those things, the repository had become digital landfill.<br>As a result, storage became bloated, indexes became overloaded, and search performance collapsed. Backups also took a dangerous amount of time.<br>Finally, one morning, the system simply couldn’t keep up anymore.<br>Not because of one dramatic failure, but rather hundreds of small, ignored ones.</p>



<h2 class="wp-block-heading" id="h-the-impact">The impact</h2>



<p>The finance department could not process payments, the HR department could not retrieve employee documentation, and the legal department could not access signed contracts.<br>In practical terms, stalled approvals delayed, customer responses and froze audit preparation.<br>Executives wanted answers, users wanted miracles, and IT needed time.<br>No one had enough of it.<br>Emergency meetings replaced actual work.<br>Consultants were called in.<br>Recovery plans were hastily put together.<br>Suddenly, budgets appeared for problems that had been ignored for years.<br>But the real cost wasn’t just technical; it was a loss of trust.<br>People stopped trusting the system.<br>Once users lose confidence in your ECM platform, rebuilding that trust is far more difficult than resolving storage issues.</p>



<h2 class="wp-block-heading" id="h-the-lesson">The lesson</h2>



<p>Most ECM failures don&#8217;t happen overnight.<br>They happen silently, slowly, and politely.<br>Then, one day, they become impossible to ignore.<br>Governance may feel boring until disaster makes it urgent.<br>Retention policies feel optional until storage becomes a crisis.<br>Performance reviews feel like &#8220;later&#8221; work until later arrives.</p>



<p>An ECM system doesn&#8217;t fail because it stores too much.<br>The system fails because no one decides what shouldn’t be stored</p>



<p>The lesson was painful.<br>You don&#8217;t manage an ECM system when it breaks.<br>You manage it so it never gets there.<br>By the time everyone notices, it&#8217;s already too late.</p>



<p>Unfortunately, this scenario isn’t rare. As consultants at <a href="https://www.dbi-services.com/expertises/digitalization-with-ecm/" target="_blank" rel="noreferrer noopener">dbi services</a>, we’re often called in after the damage has been done. Of course, our job is to find solutions, it’s still better to act before a crisis hits. That way, we have time to implement strategies without rushing.</p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/the-day-your-ecm-system-became-unusable/">The day your ECM System became unusable</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/the-day-your-ecm-system-became-unusable/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>M-Files didn&#8217;t fix your problem, your organization did.</title>
		<link>https://www.dbi-services.com/blog/m-files-didnt-fix-your-problem-your-organization-did/</link>
					<comments>https://www.dbi-services.com/blog/m-files-didnt-fix-your-problem-your-organization-did/#respond</comments>
		
		<dc:creator><![CDATA[Guillaume Meunier]]></dc:creator>
		<pubDate>Thu, 16 Apr 2026 08:19:18 +0000</pubDate>
				<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[ECM]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[M-Files]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43936</guid>

					<description><![CDATA[<p>Last week a wrote about the reasons why ECM projects fails. M-Files is a wonderful tool and probably my favorite ECM, but it won&#8217;t solve your problem. Companies that initiate digitalization projects like to convince themselves that investing in an ECM will solve all their problems: no more chaos, data loss, inefficiency, or lack of [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/m-files-didnt-fix-your-problem-your-organization-did/">M-Files didn&#8217;t fix your problem, your organization did.</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Last week a wrote about the reasons why <a href="https://www.dbi-services.com/blog/why-ecm-projects-fail-even-with-good-tools/" target="_blank" rel="noreferrer noopener">ECM projects fails</a>.</p>



<p><a href="https://www.m-files.com/" target="_blank" rel="noreferrer noopener">M-Files</a> is a wonderful tool and probably my favorite ECM, but it won&#8217;t solve your problem.</p>



<p>Companies that initiate digitalization projects like to convince themselves that investing in an ECM will solve all their problems: no more chaos, data loss, inefficiency, or lack of collaboration.</p>


<div class="wp-block-image">
<figure class="aligncenter size-medium"><img loading="lazy" decoding="async" width="300" height="300" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/not-gonna-happen-300x300.png" alt="An ECM won’t fix your problems" class="wp-image-43963" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/not-gonna-happen-300x300.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/not-gonna-happen-150x150.png 150w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/not-gonna-happen-768x768.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/04/not-gonna-happen.png 796w" sizes="auto, (max-width: 300px) 100vw, 300px" /></figure>
</div>


<p>I&#8217;m sorry to break your dreams, but it won&#8217;t!</p>



<h2 class="wp-block-heading" id="h-tools-amplify">Tools Amplify</h2>



<p>Software like M-Files is powerful. No doubt about it.</p>



<p>It structures information, automates workflows, enables collaboration, and improves visibility. However, all of that depends on one thing:</p>



<p><strong>What you put into it.</strong></p>



<p>If your processes are unclear, M-Files will exacerbate the confusion.<br>Likewise, if your governance is weak, M-Files will amplify that weakness.<br>M-Files won&#8217;t magically make your teams start collaborating.<br>Tools don’t create discipline; they expose it, or the lack of it.<br>Think of M-Files less as a solution and more as a multiplier.</p>



<ul class="wp-block-list">
<li>Good processes become great.</li>



<li>Broken processes break faster.</li>
</ul>



<h2 class="wp-block-heading" id="h-why-companies-expect-magic">Why Companies Expect Magic</h2>



<p>So why do organizations keep expecting tools to &#8220;fix everything&#8221;?<br>Because it’s easier.<br>Buying software seems like progress. It&#8217;s tangible, measurable and budgeted. It shows action.<br>On the other hand, fixing an organization requires:</p>



<ul class="wp-block-list">
<li>Alignment between teams</li>



<li>Clear ownership</li>



<li>Hard decisions on processes</li>



<li>Cultural change</li>
</ul>



<p>That’s messy, Political and Slow.<br>Instead, companies subconsciously shift the responsibility.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Once we have the tool, things will improve.</p>
</blockquote>



<p>But what if they don&#8217;t?<br>They blame:</p>



<ul class="wp-block-list">
<li>The tool</li>



<li>The implementation</li>



<li>The users</li>
</ul>



<p>Almost never the organization itself.</p>



<h2 class="wp-block-heading" id="h-the-real-success-factors">The Real Success Factors</h2>



<p>When M-Files works really well, it&#8217;s never just about the tool.<br>It&#8217;s because a few key things were already in place or built alongside it.</p>



<h3 class="wp-block-heading" id="h-clear-processes">Clear Processes</h3>



<p>Before digitizing anything, successful teams answer:</p>



<ul class="wp-block-list">
<li>What actually happens today?</li>



<li>What <em>should</em> happen?</li>



<li>Who is responsible at each step?</li>
</ul>



<p>M-Files then becomes the execution layer, not the definition layer. It is not the job of M-Files to determine what should be done, but rather to ensure that the process is under control and follows organizational rules.</p>



<h3 class="wp-block-heading" id="h-ownership-amp-accountability">Ownership &amp; Accountability</h3>



<p>Every document, workflow, and decision needs an owner.</p>



<p>Without that:</p>



<ul class="wp-block-list">
<li>Workflows are stuck.</li>



<li>Approvals take forever.</li>



<li>Nobody feels responsible.</li>
</ul>



<p>With it:</p>



<ul class="wp-block-list">
<li>M-Files flows naturally.</li>



<li>Decisions are made faster.</li>



<li>Accountability is visible.</li>
</ul>



<h3 class="wp-block-heading" id="h-simplicity-over-perfection">Simplicity Over Perfection</h3>



<p>Over-engineered systems fail.</p>



<p>The best M-Files setups are:</p>



<ul class="wp-block-list">
<li>Simple</li>



<li>Intuitive</li>



<li>Close to how people already work</li>
</ul>



<p>Not “perfect.” Just <strong>usable and adopted</strong>.</p>



<p>Improving a work process is possible at any stage, but simplifying an existing one is challenging.</p>



<h3 class="wp-block-heading" id="h-change-management">Change Management</h3>



<p>The biggest challenge isn’t technical, it’s human.</p>



<p>People need to:</p>



<ul class="wp-block-list">
<li>Understand why things are changing</li>



<li>Trust the system</li>



<li>See personal value</li>
</ul>



<p>Without that, even the best setup gets ignored.</p>



<h3 class="wp-block-heading" id="h-continuous-improvement">Continuous Improvement</h3>



<p>Successful organizations don’t “finish” their M-Files project.</p>



<p>They:</p>



<ul class="wp-block-list">
<li>Iterate</li>



<li>Adjust workflows</li>



<li>Refine metadata</li>



<li>Listen to users</li>
</ul>



<p><strong>The system evolves with the business</strong>, which is the most important aspect, in my opinion, and one that is often overlooked.</p>



<h2 class="wp-block-heading" id="h-thinking-differently">Thinking differently</h2>



<p>The real question is not: &#8220;What can M-Files do for us?&#8221;</p>



<p>Instead think: &#8220;Are we mature enough to successfully implement M-Files?&#8221;</p>



<p>It’s obviously not easy to answer that question, especially when you’re focused on your core business.</p>



<p>And that’s perfectly normal, that’s why we’re here to bridge the gap between software and the realities of business. </p>



<p>We’re not just here to install and configure systems; when we take on a digital transformation project, our primary role is to assess the organization’s readiness from an outside perspective, without passing judgment. Then we identify the necessary steps to reach the target.</p>



<p>To me, the real reward at the end of a project isn’t when the client says, “M-Files works well,” but when they say, “Thanks to M-Files, we’ve improved our collaboration and streamlined our interactions” and that makes a big difference.</p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/m-files-didnt-fix-your-problem-your-organization-did/">M-Files didn&#8217;t fix your problem, your organization did.</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/m-files-didnt-fix-your-problem-your-organization-did/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Why ECM Projects fail (even with good tools)</title>
		<link>https://www.dbi-services.com/blog/why-ecm-projects-fail-even-with-good-tools/</link>
					<comments>https://www.dbi-services.com/blog/why-ecm-projects-fail-even-with-good-tools/#respond</comments>
		
		<dc:creator><![CDATA[Guillaume Meunier]]></dc:creator>
		<pubDate>Thu, 09 Apr 2026 12:20:41 +0000</pubDate>
				<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[digitalization]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43854</guid>

					<description><![CDATA[<p>Today, I would like to take a step back and think about failure, because it&#8217;s part of life and sometimes things don&#8217;t go as planned. Analyzing failures can help to prevent them from happening again. Firstly, in most cases, your ECM project did not fail because of the tool! That&#8217;s the uncomfortable truth It wasn&#8217;t [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/why-ecm-projects-fail-even-with-good-tools/">Why ECM Projects fail (even with good tools)</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Today, I would like to take a step back and think about failure, because it&#8217;s part of life and sometimes things don&#8217;t go as planned. Analyzing failures can help to prevent them from happening again.</p>


<div class="wp-block-image">
<figure class="aligncenter size-medium"><img loading="lazy" decoding="async" width="300" height="300" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/05/game-over-300x300.png" alt="You fail!" class="wp-image-33325" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/05/game-over-300x300.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/05/game-over-1024x1024.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/05/game-over-150x150.png 150w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/05/game-over-768x768.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/05/game-over-1536x1536.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2024/05/game-over.png 1592w" sizes="auto, (max-width: 300px) 100vw, 300px" /></figure>
</div>


<p>Firstly, in most cases, your ECM project did not fail because of the tool! </p>



<p>That&#8217;s the uncomfortable truth </p>



<p>It wasn&#8217;t because the platform was bad.<br>It wasn&#8217;t because the features were missing.<br>It wasn&#8217;t even because users &#8216;resisted change&#8217;.</p>



<p>And yet, the project still underdelivered. Or worse, it quietly failed.</p>



<p>After years of working on ECM implementations, I have seen the same pattern emerge time and time again: Good tools. Smart people. Disappointing results.</p>



<p>So what’s really going wrong?</p>



<h2 class="wp-block-heading" id="h-the-illusion-of-the-right-tool">The illusion of the “Right Tool”</h2>



<p>Let&#8217;s start with the most common misconception:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>If we choose the right ECM solution, everything else will fall into place.</p>
</blockquote>



<p>It won&#8217;t.</p>



<p>Modern ECM platforms are powerful. They can manage documents, automate workflows, enforce governance and integrate with almost anything.</p>



<p>But here’s the reality, A tool can&#8217;t fix a broken organization. It exposes it.</p>



<ul class="wp-block-list">
<li>If your processes are unclear, the system will amplify the confusion.</li>



<li>If ownership is undefined, governance will collapse.</li>



<li>If users don’t see the value, adoption will stall.</li>
</ul>



<p>The tool is not the problem. It&#8217;s a mirror.</p>



<h2 class="wp-block-heading" id="h-business-and-it-are-not-solving-the-same-problem">Business and IT are not solving the same problem</h2>



<p>Most ECM projects start with a misalignment that no one explicitly addresses.</p>



<p>IT is thinking:</p>



<ul class="wp-block-list">
<li>architecture</li>



<li>security</li>



<li>scalability</li>
</ul>



<p>The business is thinking:</p>



<ul class="wp-block-list">
<li>“Where is my document?”</li>



<li>“Why is this so slow?”</li>



<li>“Why do I have to click 12 times?”</li>
</ul>



<p>Both are valid. But they are <strong>not the same problem</strong>.</p>



<p>So what happens?</p>



<p>You get:</p>



<ul class="wp-block-list">
<li>technically solid systems</li>



<li>that don’t solve day-to-day frustrations</li>
</ul>



<p>And users disengage, not because they’re resistant, but because the system doesn’t help them.</p>



<h2 class="wp-block-heading" id="h-over-engineering-everything">Over-engineering everything</h2>



<p>This is an incredibly common issue.</p>



<p>In the name of &#8216;doing things properly&#8217;, projects end up with overly complex metadata models.</p>



<ul class="wp-block-list">
<li>overly complex metadata models</li>



<li>workflows for every edge case</li>



<li>validation rules everywhere.</li>
</ul>



<p>On paper, this looks impressive.</p>



<p>In reality, the system becomes fragile, slow and difficult to use.</p>



<p>Complexity is often mistaken for maturity. In ECM, complexity is usually the fastest way to kill off adoption.</p>



<h2 class="wp-block-heading" id="h-governance-that-exists-only-in-slides">Governance that exists only in slides</h2>



<p>Every project has governance.</p>



<p>Or at least, a document describing it:</p>



<ul class="wp-block-list">
<li>Naming conventions</li>



<li>Validation rules</li>



<li>Lifecycle definitions</li>
</ul>



<p>Everything is defined and then… ignored.</p>



<p>Because:</p>



<ul class="wp-block-list">
<li>no one owns it</li>



<li>no one enforces it</li>



<li>no one adapts it</li>
</ul>



<p>It looks good during the project, but it disappears in real life.</p>



<h2 class="wp-block-heading" id="h-the-quick-win-trap">The “Quick Win” trap</h2>



<p>Quick wins are supposed to build momentum and it&#8217;s true, however they often create long-term problems.</p>



<p>Why? Because they:</p>



<ul class="wp-block-list">
<li>bypass proper design</li>



<li>introduce shortcuts</li>



<li>create inconsistencies</li>
</ul>



<p>And what about those “temporary” solutions? They never get fixed.</p>



<p>Months later, the system becomes:</p>



<ul class="wp-block-list">
<li>inconsistent</li>



<li>hard to maintain</li>



<li>confusing for users</li>
</ul>



<p><strong>You haven&#8217;t gained any speed. You just made things more complicated.</strong></p>



<p>Quick wins are essential for driving user adoption, but this must be taken into account when designing the project as a whole. Consider the pros and cons, but do not compromise on the project&#8217;s overall quality. </p>



<h2 class="wp-block-heading" id="h-no-one-owns-the-system-after-go-live">No one owns the system after Go-live</h2>



<p>This is where many projects quietly fail.</p>



<p>Once the system is live:</p>



<ul class="wp-block-list">
<li>the project team disappears</li>



<li>IT moves to other priorities</li>



<li>the business assumes “it’s done”</li>
</ul>



<p>ECM is not a one-time project. <strong>It’s a living system.</strong></p>



<p>Without ownership:</p>



<ul class="wp-block-list">
<li>governance degrades</li>



<li>usage diverges</li>



<li>value decreases over time</li>
</ul>



<p>And nobody reacts until it&#8217;s too late.</p>



<h2 class="wp-block-heading" id="h-what-actually-works">What actually works</h2>



<p>Having seen what fails, the question becomes:</p>



<p>What makes an ECM project succeed?</p>



<p>Not perfectly. But sustainably.</p>



<p>From my experience, here’s what consistently makes the difference:</p>



<h3 class="wp-block-heading" id="h-start-with-real-user-problems">Start with real user problems</h3>



<p>Not features. Not architecture.</p>



<p>Ask:</p>



<ul class="wp-block-list">
<li>Where do people lose time?</li>



<li>What frustrates them daily?</li>
</ul>



<p>Solve that first.</p>



<h3 class="wp-block-heading" id="h-keep-it-simpler-than-you-think">Keep it simpler than you think</h3>



<ul class="wp-block-list">
<li>Fewer metadata fields</li>



<li>Fewer workflows</li>



<li>Clearer rules</li>
</ul>



<p>You can always add complexity later, but it&#8217;s rare that you can remove it.</p>



<h3 class="wp-block-heading" id="h-make-ownership-explicit">Make ownership explicit</h3>



<p>Someone must:</p>



<ul class="wp-block-list">
<li>own the system</li>



<li>enforce governance</li>



<li>evolve the platform</li>
</ul>



<p>No owner = slow decay</p>



<h3 class="wp-block-heading" id="h-design-for-reality-not-theory">Design for reality, not theory</h3>



<p>People will:</p>



<ul class="wp-block-list">
<li>take shortcuts</li>



<li>ignore rules</li>



<li>prioritize speed</li>
</ul>



<p>During the design phase keep that in mind. </p>



<h3 class="wp-block-heading" id="h-treat-ecm-as-a-product-not-a-project">Treat ECM as a product, not a project</h3>



<p>Projects end, but Products evolve.</p>



<p>To create long-term value, you need:</p>



<ul class="wp-block-list">
<li>continuous improvement</li>



<li>feedback loops</li>



<li>adaptation.</li>
</ul>



<p>When I started working in ECM, data was made up of static documents with few or no relationships between them. Now, we have various types of content, such as pictures and videos, as well as more interaction and workflows. Therefore, what is suitable now might not be in two or three years.</p>



<h2 class="wp-block-heading" id="h-final-thought">Final Thought</h2>



<p>In conclusion, most ECM projects don&#8217;t fail spectacularly. They fail quietly.<br>Users stop using advanced features, workarounds appear and value slowly erodes.</p>



<p>Eventually, people say:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>The system is not that useful.</p>
</blockquote>



<p>Not because the tool was bad. It&#8217;s because the project misunderstood what success actually looks like.</p>



<p>A good ECM system is not necessarily the one with the most or the trendiest features. Rather, it&#8217;s the one that people actually use because it simplifies their work.</p>



<p>As a result, the tool itself is not as important as you might expect. Of course, some are more relevant than others depending on the case. That is why, at <a href="https://www.dbi-services.com/expertises/digitalization-with-ecm/" target="_blank" rel="noreferrer noopener">dbi services</a>, we support several of them. </p>



<p>The real key to the success of an ECM project lies in its management and long-term vision.</p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/why-ecm-projects-fail-even-with-good-tools/">Why ECM Projects fail (even with good tools)</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/why-ecm-projects-fail-even-with-good-tools/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>OTDS &#8211; Installation of Replicas fail if the OT Admin password is too long?</title>
		<link>https://www.dbi-services.com/blog/otds-installation-of-replicas-fail-if-the-ot-admin-password-is-too-long/</link>
					<comments>https://www.dbi-services.com/blog/otds-installation-of-replicas-fail-if-the-ot-admin-password-is-too-long/#respond</comments>
		
		<dc:creator><![CDATA[Morgan Patou]]></dc:creator>
		<pubDate>Mon, 30 Mar 2026 11:36:04 +0000</pubDate>
				<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[Documentum]]></category>
		<category><![CDATA[OTDS]]></category>
		<category><![CDATA[Password]]></category>
		<category><![CDATA[primary]]></category>
		<category><![CDATA[replica]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43629</guid>

					<description><![CDATA[<p>For simplicity, in this blog, I will refer to the first OTDS instance as the &#8220;Primary&#8221; (the synchronization master host, installed with ISREPLICA_TOPOLOGY=0=FALSE) and any additional instances as &#8220;Replicas&#8221; (installed with ISREPLICA_TOPOLOGY=1=TRUE). Over the past few years, I have installed and worked on around 20–30 different OTDS environments, some with a single instance and others [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/otds-installation-of-replicas-fail-if-the-ot-admin-password-is-too-long/">OTDS &#8211; Installation of Replicas fail if the OT Admin password is too long?</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>For simplicity, in this blog, I will refer to the first OTDS instance as the &#8220;<em><strong>Primary</strong></em>&#8221; (the synchronization master host, installed with <em><strong>ISREPLICA_TOPOLOGY=0=FALSE</strong></em>) and any additional instances as &#8220;<em><strong>Replicas</strong></em>&#8221; (installed with <em><strong>ISREPLICA_TOPOLOGY=1=TRUE</strong></em>). Over the past few years, I have installed and worked on around 20–30 different OTDS environments, some with a single instance and others with multiple instances (HA). Overall, it is not a bad piece of software, even though it could use improvements in certain areas (e.g.: c.f. <a href="https://www.dbi-services.com/blog/dctm-mfa-non-mfa-within-otds-based-on-target-applications/" target="_blank" rel="noreferrer noopener">this blog</a>). However, it was only after I started installing a few Replicas on recent OTDS versions (using a database backend instead of OpenDJ) that I encountered a rather unusual issue.</p>



<h2 class="wp-block-heading" id="h-1-otds-replica-installation-failure">1. OTDS Replica installation failure</h2>



<p>Single-instance installations using the silent properties file were always successful, and most multi-instance installations worked as well. However, I encountered a very specific issue twice: the Primary instance would install successfully, but the Replica installation would fail with an error stating &#8220;<em><strong>parameter JDBC_CONNECTION_STRING not defined</strong></em>&#8220;. Since everything runs in automated environments (Kubernetes or Ansible), I knew it was not a human error. When comparing the silent properties files, everything looked correct. The file used on the Primary was exactly the same as the one used on the Replica, except for &#8220;<em><strong>ISREPLICA_TOPOLOGY=0</strong></em>&#8221; and &#8220;<em><strong>ENCRYPTION_KEY=</strong></em>&#8221; on the Primary versus &#8220;<em><strong>ISREPLICA_TOPOLOGY=1</strong></em>&#8221; and &#8220;<em><strong>ENCRYPTION_KEY=XXXXXXX</strong></em>&#8221; on the Replica.</p>



<p>This is the expected configuration. A Replica needs to take the value of &#8220;<em><strong>directory.bootstrap.CryptSecret</strong></em>&#8221; from the &#8220;<em><strong>otds.properties</strong></em>&#8221; file of the Primary and use that value for &#8220;<em><strong>ENCRYPTION_KEY</strong></em>&#8220;. Therefore, when you install the Primary instance, the value remains empty because nothing is installed yet. During the Replica installation, the automation retrieves this value and populates the parameter accordingly. But then why would the Primary installation succeed while the Replica fails when using the exact same silent properties file? Quite strange, right? First of all, I tried running the installer manually (outside of Kubernetes or Ansible) to see whether additional details would appear in the console:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
&#x5B;tomcat@otds-1 workspace_otds]$ /app/scripts/workspace_otds/otds/setup -qbi -rf /app/scripts/workspace_otds/otds/silent.properties

OpenText Directory Services 24.4.0

Error, parameter JDBC_CONNECTION_STRING not defined.
&#x5B;tomcat@otds-1 workspace_otds]$
</pre></div>


<h2 class="wp-block-heading" id="h-2-going-further-into-the-installation-logs">2. Going further into the installation logs</h2>



<p>The generated log file was not really helpful either:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [10,11,12,21,27,28,42,43]; title: ; notranslate">
&#x5B;tomcat@otds-1 workspace_otds]$ cat otds.log
...
2025-08-08  6:38:40 chmod ran successfully on /etc/opentext/unixsetup
2025-08-08  6:38:40 Setting environment variable &quot;ACTION&quot; to &quot;-1&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;UPGRADE&quot; to &quot;0&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;PATCH&quot; to &quot;0&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;INSTALLED&quot; to &quot;0&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;INSTALLEDVERSION&quot; to &quot;0.0.0&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;PRODUCTINSTANCE&quot; to &quot;1&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;PRODUCTVERSION&quot; to &quot;24.4.0.4503&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;PRODUCTNAME&quot; to &quot;OpenText Directory Services&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;PRODUCTID&quot; to &quot;OTDS&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;PATCHVERSION&quot; to &quot;0&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;ROOTUSER&quot; to &quot;0&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;Main_INSTALLED&quot; to &quot;-1&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;INST_GROUP&quot; to &quot;tomcat&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;INST_USER&quot; to &quot;tomcat&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;INSTALL_DIR&quot; to &quot;/app/tomcat/app_data/otds&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;TOMCAT_DIR&quot; to &quot;/app/tomcat&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;PRIMARY_FQDN&quot; to &quot;otds-1.otds.otdsdev.svc.cluster.local&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;ISREPLICA_TOPOLOGY&quot; to &quot;1&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;IMPORT_DATA&quot; to &quot;0&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;OTDS_PASS&quot; to &quot;*****&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;ENCRYPTION_KEY&quot; to &quot;mqLgucZ8UIUnNcLwjwmhNw==&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;MIGRATION_OPENDJ_URL&quot; to &quot;&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;MIGRATION_OPENDJ_PASSWORD&quot; to &quot;*****&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;JDBC_CONNECTION_STRING&quot; to &quot;&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;JDBC_USERNAME&quot; to &quot;&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;JDBC_PASSWORD&quot; to &quot;*****&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;ACTION&quot; to &quot;3&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;Main_ACTION&quot; to &quot;3&quot; : Success
2025-08-08  6:38:40 Adding Pre-req &quot;TOMCAT7_HIGHER&quot;
...
2025-08-08  6:38:40 Action #1 ended: OK
2025-08-08  6:38:40 Setting environment variable &quot;PRIMARY_FQDN&quot; to &quot;otds-1.otds.otdsdev.svc.cluster.local&quot; : Success
2025-08-08  6:38:40 Setting environment variable &quot;ISREPLICA_TOPOLOGY&quot; to &quot;1&quot; : Success
2025-08-08  6:38:40 Skipping IMPORT_DATA parameter (condition is false)
2025-08-08  6:38:40 Skipping OTDS_PASS parameter (condition is false)
2025-08-08  6:38:40 Setting environment variable &quot;ENCRYPTION_KEY&quot; to &quot;mqLgucZ8UIUnNcLwjwmhNw==&quot; : Success
2025-08-08  6:38:40 Skipping MIGRATION_OPENDJ_URL parameter (condition is false)
2025-08-08  6:38:40 Skipping MIGRATION_OPENDJ_PASSWORD parameter (condition is false)
2025-08-08  6:38:40 Error, parameter JDBC_CONNECTION_STRING not defined.
2025-08-08  6:38:40 Setup Ended: 1
2025-08-08  6:38:40 ============= Verbose logging Ended =============
&#x5B;tomcat@otds-1 workspace_otds]$
</pre></div>


<p>For reference, here is the content of the &#8220;silent.properties&#8221; file that this Replica installation uses:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [19,25,26]; title: ; notranslate">
&#x5B;tomcat@otds-1 workspace_otds]$ cat otds/silent.properties
&#x5B;Setup]
Id=OTDS
Version=24.4.0.4503
Patch=0
Basedir=/app/scripts/workspace_otds/otds
Configfile=/app/scripts/workspace_otds/otds/setup.xml
Action=Install
Log=/app/scripts/workspace_otds/otds/otds.log
Instance=1
Feature=All

&#x5B;Property]
INST_GROUP=tomcat
INST_USER=tomcat
INSTALL_DIR=/app/tomcat/app_data/otds
TOMCAT_DIR=/app/tomcat
PRIMARY_FQDN=otds-1.otds.otdsdev.svc.cluster.local
ISREPLICA_TOPOLOGY=1
IMPORT_DATA=0
OTDS_PASS=m1z6GX+HEX81DRpC
ENCRYPTION_KEY=mqLgucZ8UIUnNcLwjwmhNw==
MIGRATION_OPENDJ_URL=
MIGRATION_OPENDJ_PASSWORD=
JDBC_CONNECTION_STRING=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=db_host.domain.com)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=db_svc.domain.com)))
JDBC_USERNAME=OTDS
JDBC_PASSWORD=Shu#Asd#Tgb;6799
&#x5B;tomcat@otds-1 workspace_otds]$
</pre></div>


<p>(These are the real passwords from that environment. I have changed them since then, obviously, but I included them so you can understand the details below. The encryption key is altered, though &#8211; the system originally took the real one from the &#8220;Primary&#8221; instance.)</p>



<h2 class="wp-block-heading" id="h-3-status-of-the-installer-created-managed-files">3. Status of the installer created/managed files</h2>



<p>After the failure, I checked the parameter file that the OTDS installer populates during installation, but it was mostly empty and not yet filled:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [10,16,19,25,31,34]; title: ; notranslate">
&#x5B;tomcat@otds-1 workspace_otds]$ cat /etc/opentext/unixsetup/OTDS_parameters_1.txt

#GROUP name that should be used to change file group ownership (group of USER)
INST_GROUP=tomcat

#USER name that should be used to change file ownership (user running processes)
INST_USER=tomcat

#Specify the installation directory for OpenText Directory Services
INSTALL_DIR=/usr/local/OTDS

#Specify the directory, where (64-bit) Apache Tomcat 10 or higher is installed
TOMCAT_DIR=/app/tomcat

#This hostname is used by other instances to connect to the synchronization master host.
PRIMARY_FQDN=

#Is this server a supplementary instance to an existing environment?
ISREPLICA_TOPOLOGY=0

#Specify OpenDJ connection for import.
IMPORT_DATA=0

#Specify the data encryption key from an existing instance.
ENCRYPTION_KEY=

#OpenDJ LDAP URL (example: ldap://localhost:1389)
MIGRATION_OPENDJ_URL=

#Specify JDBC connection String (example: jdbc:postgresql://localhost:5432/postgres). NOTE: Enter these values carefully since they cannot be validated here. Refer to the OTDS installation and administration guide for JDBC URL samples for supported databases.
JDBC_CONNECTION_STRING=

#Specify Database User Name
JDBC_USERNAME=
&#x5B;tomcat@otds-1 workspace_otds]$
</pre></div>


<p>Finally, the &#8220;<strong><em>otds.properties</em></strong>&#8221; file (normally generated during the installation) was also not present yet:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
&#x5B;tomcat@otds-1 workspace_otds]$ ls -l $APP_DATA/otds/config/otds.properties
ls: cannot access &#039;/app/tomcat/app_data/otds/config/otds.properties&#039;: No such file or directory
&#x5B;tomcat@otds-1 workspace_otds]$
</pre></div>


<h2 class="wp-block-heading" id="h-4-attempts-to-debug-the-issue">4. Attempts to debug the issue</h2>



<p>I tried launching the installer multiple times, on that OTDS Replica, while making small changes to the silent properties file to see if something specific would cause it to fail. Starting by modifying the &#8220;<em><strong>JDBC_CONNECTION_STRING</strong></em>&#8221; parameter, since that is what the installer complained about, but without success. I then suspected the password parameter. Because passwords are masked in the logs (&#8220;<strong>*</strong>&#8220;), it is impossible to see whether the value is parsed correctly or not.</p>



<p>Therefore, I replaced the OTDS Admin password in the silent properties file with &#8220;<em><strong>dummyPassword</strong></em>&#8220;, and the installer suddenly proceeded further&#8230; I cancelled the installation because this was not the real password of the &#8220;<em><strong>otadmin</strong></em>&#8221; account on the Primary instance, but in this case the &#8220;<em><strong>JDBC_CONNECTION_STRING</strong></em>&#8221; parameter was no longer empty and the installer continued normally.</p>



<p><em><strong>Note:</strong></em> the OTDS documentation specifies that passwords must contain at least eight characters, including one lowercase letter, one uppercase letter, one number, and one special character. However, it appears that this rule may not be strictly validated during Replica installations (and possibly not for the Primary either?).</p>



<p>At that point it became clear that the password itself was involved in the issue, somehow. Looking at the script &#8220;<em><strong>tools/setup.sh</strong></em>&#8220;, you can see that the installer extracts the value of &#8220;<em><strong>OTDS_PASS</strong></em>&#8220;, applies a function called &#8220;<em><strong>AsctoHex</strong></em>&#8220;, and then encrypts it. My original &#8220;<em><strong>otadmin</strong></em>&#8221; password was 16 characters long and satisfied all complexity requirements. However, I noticed that the password contained the string &#8220;<em><strong>HEX</strong></em>&#8220;. Since the installer converts the password to hexadecimal before encryption, I wondered whether the presence of the string &#8220;<em><strong>HEX</strong></em>&#8221; might interfere with this process. That would be quite unbelievable, right?</p>



<h2 class="wp-block-heading" id="h-5-a-problem-with-the-password-length-or-content">5. A problem with the password length or content?</h2>



<p>To test this idea, I removed the &#8220;<em><strong>E</strong></em>&#8221; in the middle, transforming &#8220;<em><strong>HEX</strong></em>&#8221; into &#8220;<em><strong>HX</strong></em>&#8221; and effectively reducing the password length by one character:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
&#x5B;tomcat@otds-1 workspace_otds]$ grep OTDS_PASS otds/silent.properties | awk -F= &#039;{print $2}&#039; | wc -c
17
&#x5B;tomcat@otds-1 workspace_otds]$ # 17 means 16 char since wc -c count the new line in this command
&#x5B;tomcat@otds-1 workspace_otds]$
&#x5B;tomcat@otds-1 workspace_otds]$ sed -i &#039;s,HEX,HX,&#039; otds/silent.properties
&#x5B;tomcat@otds-1 workspace_otds]$
&#x5B;tomcat@otds-1 workspace_otds]$ grep OTDS_PASS otds/silent.properties | awk -F= &#039;{print $2}&#039; | wc -c
16
&#x5B;tomcat@otds-1 workspace_otds]$ # 16 means 15 char now
</pre></div>


<p>To re-execute the installer after a failure, you must remove the content of the &#8220;<em><strong>/etc/opentext</strong></em>&#8221; directory (which kind of caches the content from the &#8220;<em><strong>silent.properties</strong></em>&#8221; file) and also delete the &#8220;<em><strong>otds.properties</strong></em>&#8221; file if it exists (not in my case):</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
&#x5B;tomcat@otds-1 workspace_otds]$ rm -rf /etc/opentext/*
&#x5B;tomcat@otds-1 workspace_otds]$
</pre></div>


<p>In addition to modifying the &#8220;<em><strong>silent.properties</strong></em>&#8221; file, I also changed the &#8220;<em><strong>otadmin</strong></em>&#8221; password through the OTDS otds-admin UI (see the OTDS Install &amp; Admin Guide, section 7.2.5 &#8220;Resetting a user password&#8221;). Then I started a new Replica installation to see whether changing &#8220;<em><strong>HEX</strong></em>&#8221; to &#8220;<em><strong>HX</strong></em>&#8221; from the password would resolve the issue:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
&#x5B;tomcat@otds-1 workspace_otds]$ /app/scripts/workspace_otds/otds/setup -qbi -rf /app/scripts/workspace_otds/otds/silent.properties

OpenText Directory Services 24.4.0

------------------------------------------------------------------------------
  OpenText Directory Services
------------------------------------------------------------------------------
Installing OpenText Directory Services Component
Please wait .
Installation of OpenText Directory Services Component OK

Installation completed. Results:

OpenText Directory Services Component OK

Installation finished.

&#x5B;tomcat@otds-1 workspace_otds]$
</pre></div>


<p>… It worked …?</p>



<p>If the issue was really caused by the presence of &#8220;<em><strong>HEX</strong></em>&#8221; in the password, then replacing it with &#8220;<em><strong>HXE</strong></em>&#8221; should also work, right? Unfortunately, when I tried that, the issue came back&#8230; This indicates that the real problem is not the literal &#8220;<em><strong>HEX</strong></em>&#8221; string but maybe something related to password length, complexity, or how the installer processes and encrypts the password internally?</p>



<h2 class="wp-block-heading" id="h-6-conclusion">6. Conclusion</h2>



<p>In the end, I reverted to the shorter 15-character password that worked and prepared all higher environments at this customer to use 15-character passwords. This approach worked without issue for five additional environments until, of course, it failed again, in Production…</p>



<p>Since it failed in another environment even with a 15-character password, the length alone does not seem to be the root cause. When reviewing previously installed environments across multiple customers, I found a few instances running with &#8220;<em><strong>otadmin</strong></em>&#8221; passwords of up to 19 characters long (about 111/120 bits of entropy according to a password manager like KeePass). This is significantly stronger than the 15-character password (96 bits) used in the Production environment where the issue occurred.</p>



<p>Therefore, since I couldn&#8217;t find any logical reasons why the issue happened on some environments but not with others, I opened a ticket with OpenText. I described everything and we went through several weeks of exchanges to try to find an explanation but without success. As of today, I still don&#8217;t know why ~10% of the OTDS Replicas that I installed faced an issue with the OT Admin password, but the fix, was simply to change the password in the UI and start the silent installation again. I don&#8217;t have an environment to test / debug that issue anymore, since it&#8217;s not easily reproducible. Guess I will need to wait for next time to get more debug logs from the OTDS installer (&#8220;<em><strong>-debug</strong></em>&#8221; option). In the meantime, I can only assume something is probably wrong in the way OTDS manages the password or its hash.</p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/otds-installation-of-replicas-fail-if-the-ot-admin-password-is-too-long/">OTDS &#8211; Installation of Replicas fail if the OT Admin password is too long?</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/otds-installation-of-replicas-fail-if-the-ot-admin-password-is-too-long/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Dctm &#8211; Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time</title>
		<link>https://www.dbi-services.com/blog/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time/</link>
					<comments>https://www.dbi-services.com/blog/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time/#respond</comments>
		
		<dc:creator><![CDATA[Morgan Patou]]></dc:creator>
		<pubDate>Sun, 22 Mar 2026 08:51:00 +0000</pubDate>
				<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[D2]]></category>
		<category><![CDATA[DM_LICENSE_E_INVALID_LICENSE]]></category>
		<category><![CDATA[Documentum]]></category>
		<category><![CDATA[jms]]></category>
		<category><![CDATA[Proxy]]></category>
		<category><![CDATA[SSO]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43521</guid>

					<description><![CDATA[<p>At the end of last year, I published a first blog about a DM_LICENSE_E_INVALID_LICENSE error in D2 SSO login through OTDS. The root cause in that previous post was a duplicate user with one lowercase and one uppercase user_login_name. However, I did mention that there can be several reasons for that error. In this blog, [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time/">Dctm &#8211; Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>At the end of last year, I published a <a href="https://www.dbi-services.com/blog/dctm-d2-sso-through-otds-fails-with-dm_license_e_invalid_license/" target="_blank" rel="noreferrer noopener">first blog</a> about a DM_LICENSE_E_INVALID_LICENSE error in D2 SSO login through OTDS. The root cause in that previous post was a duplicate user with one lowercase and one uppercase <strong><em>user_login_name</em></strong>. However, I did mention that there can be several reasons for that error. In this blog, I will describe another such case.</p>



<h2 class="wp-block-heading" id="h-1-symptoms-in-d2-logs">1. Symptoms in D2 logs</h2>



<p>The generated D2 logs associated with this new issue are almost exactly the same. The only difference is that the Repository returns &#8220;<em><strong>null</strong></em>&#8221; as the userid (<em><strong>user_name</strong></em>). See the message &#8220;<em><strong>Authentication failed for user null with docbase REPO_NAME</strong></em>&#8220;. This wasn&#8217;t the case in the other blog post:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; highlight: [4,5,15,16,17,21,23,24,25,26,27,28,29,30,31,32,33,34,72]; title: ; notranslate">
&#x5B;tomcat@d2-0 logs]$ cat D2.log
...
2025-12-08 12:21:14,784 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-47) - c.emc.x3.portal.server.X3HttpSessionListener  : Created http session 8531D373A3EA12A398B158AF656E7D20
2025-12-08 12:21:14,784 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : No user name on the Http session yet
2025-12-08 12:21:14,785 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : No access_token found in Http request or Cookie Redirecting to OTDS Server
2025-12-08 12:21:14,786 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified scheme : https
2025-12-08 12:21:14,786 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified server name : d2.domain.com
2025-12-08 12:21:14,787 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified server port : 443
2025-12-08 12:21:14,787 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Built server host is : https://d2.domain.com:443
2025-12-08 12:21:14,788 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; /D2/HTTPUtilities] header name=Host, value=d2.domain.com
2025-12-08 12:21:14,789 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; /D2/HTTPUtilities] MaxHeaderValueSize: 8192
2025-12-08 12:21:14,792 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; /D2/HTTPUtilities] validating the input valued2.domain.com
2025-12-08 12:21:14,793 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified host : d2.domain.com
2025-12-08 12:21:14,794 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Overall base URL built : https://d2.domain.com/D2
2025-12-08 12:21:14,795 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : Redirection url post encoding - https%3A%2F%2Fd2.domain.com%2FD2%2Fd2_otds.html%3ForigUrl%3D%2FD2%2F
2025-12-08 12:21:14,797 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : OAUTH final login sendRedirect URL : https://otds-mfa.domain.com/otdsws/oauth2/auth?response_type=token&amp;client_id=dctm-ns-d2&amp;redirect_uri=https%3A%2F%2Fd2.domain.com%2FD2%2Fd2_otds.html%3ForigUrl%3D%2FD2%2F&amp;logon_appname=Documentum+Client+CE+23.4
2025-12-08 12:21:14,798 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-47) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : Sending redirection as it&#039;s not a rpc call : https://otds-mfa.domain.com/otdsws/oauth2/auth?response_type=token&amp;client_id=dctm-ns-d2&amp;redirect_uri=https%3A%2F%2Fd2.domain.com%2FD2%2Fd2_otds.html%3ForigUrl%3D%2FD2%2F&amp;logon_appname=Documentum+Client+CE+23.4
2025-12-08 12:21:15,018 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; /D2/HTTPUtilities] MaxHeaderKeySize: 256
2025-12-08 12:21:15,018 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; /D2/HTTPUtilities] MaxHeaderValueSize: 8192
2025-12-08 12:21:15,020 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : No user name on the Http session yet
2025-12-08 12:21:15,021 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : Found access_token on Http Cookie, invalidating the cookie by setting maxAge 0
2025-12-08 12:21:15,022 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : setting the cookie as secure as its a https request
2025-12-08 12:21:15,024 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : OTDS responded with a oauth token
2025-12-08 12:21:15,025 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : ------ Begin getUntrustedJwtHeader : eyJraWQiOiI1YjM4...oSD8Xh3vVmkekcA
2025-12-08 12:21:15,026 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : getUntrustedJwtHeader oauthTokenWithoutSignature : eyJraWQiOiI1YjM4...i1xYWN0LWQyIn0.
2025-12-08 12:21:15,614 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : ------ Begin validateOTDSTokenClaims : MYUSERID
2025-12-08 12:21:15,615 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  :  validateOTDSTokenClaims for user : MYUSERID , OTDS : currenttime: 1765196475615 expirationtime: 1765200074000
2025-12-08 12:21:15,615 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : ------ End validateOTDSTokenClaims : MYUSERID
2025-12-08 12:21:15,615 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : PublicKey for Key id : 5b38b...bf487 exists
2025-12-08 12:21:15,617 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  :  OTDS Deafault Repository from shiro configured : REPO_NAME
2025-12-08 12:21:15,617 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : generating DM_Ticket for user : MYUSERID in Repository : REPO_NAME
2025-12-08 12:21:16,522 UTC &#x5B;ERROR] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : OAuth Token Error occurred while generating a DCTM MultiUse Ticket for user  : MYUSERID
2025-12-08 12:21:16,522 UTC &#x5B;ERROR] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : OTDS : OAuth Token Error please validate the OTDS Config of user exists in Repository
com.documentum.fc.client.DfAuthenticationException: &#x5B;DM_SESSION_E_AUTH_FAIL]error:  &quot;Authentication failed for user null with docbase REPO_NAME.&quot;
        at com.documentum.fc.client.impl.docbase.DocbaseExceptionMapper.newException(DocbaseExceptionMapper.java:52)
        at com.documentum.fc.client.impl.connection.docbase.MessageEntry.getException(MessageEntry.java:39)
        at com.documentum.fc.client.impl.connection.docbase.DocbaseMessageManager.getException(DocbaseMessageManager.java:137)
        at com.documentum.fc.client.impl.connection.docbase.netwise.NetwiseDocbaseRpcClient.checkForMessages(NetwiseDocbaseRpcClient.java:332)
        at com.documentum.fc.client.impl.connection.docbase.netwise.NetwiseDocbaseRpcClient.applyForObject(NetwiseDocbaseRpcClient.java:680)
        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection$8.evaluate(DocbaseConnection.java:1572)
        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.evaluateRpc(DocbaseConnection.java:1272)
        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.applyForObject(DocbaseConnection.java:1564)
        at com.documentum.fc.client.impl.docbase.DocbaseApi.authenticateUser(DocbaseApi.java:1894)
        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.authenticate(DocbaseConnection.java:460)
        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.open(DocbaseConnection.java:140)
        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.&lt;init&gt;(DocbaseConnection.java:109)
        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnection.&lt;init&gt;(DocbaseConnection.java:69)
        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnectionFactory.newDocbaseConnection(DocbaseConnectionFactory.java:32)
        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnectionManager.createNewConnection(DocbaseConnectionManager.java:202)
        at com.documentum.fc.client.impl.connection.docbase.DocbaseConnectionManager.getDocbaseConnection(DocbaseConnectionManager.java:132)
        at com.documentum.fc.client.impl.session.SessionFactory.newSession(SessionFactory.java:24)
        ...
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
        at java.base/java.lang.Thread.run(Thread.java:840)
2025-12-08 12:21:16,524 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : redirectToErrorPage : Redirecting to Error Page as Login failed for user : null and exception : {}
com.emc.x3.portal.server.filters.authc.X3OTDSAuthenticationFilter$1: Authentication failed for user null with repository REPO_NAME.
        at com.emc.x3.portal.server.filters.authc.X3OTDSAuthenticationFilter.validateTokenAndGetUserId(X3OTDSAuthenticationFilter.java:1167)
        at com.emc.x3.portal.server.filters.authc.X3OTDSAuthenticationFilter.onAccessDenied(X3OTDSAuthenticationFilter.java:293)
        at org.apache.shiro.web.filter.AccessControlFilter.onAccessDenied(AccessControlFilter.java:133)
        at org.apache.shiro.web.filter.AccessControlFilter.onPreHandle(AccessControlFilter.java:162)
        at org.apache.shiro.web.filter.PathMatchingFilter.isFilterChainContinued(PathMatchingFilter.java:223)
        at org.apache.shiro.web.filter.PathMatchingFilter.preHandle(PathMatchingFilter.java:198)
        ...
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
        at java.base/java.lang.Thread.run(Thread.java:840)
2025-12-08 12:21:16,524 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : Adding the LicenseException to the Session : DM_SESSION_E_AUTH_FAIL
2025-12-08 12:21:16,526 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified scheme : https
2025-12-08 12:21:16,526 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified server name : d2.domain.com
2025-12-08 12:21:16,526 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified server port : 443
2025-12-08 12:21:16,528 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Built server host is : https://d2.domain.com:443
2025-12-08 12:21:16,529 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; /D2/HTTPUtilities] header name=Host, value=d2.domain.com
2025-12-08 12:21:16,530 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; /D2/HTTPUtilities] MaxHeaderValueSize: 8192
2025-12-08 12:21:16,531 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; /D2/HTTPUtilities] validating the input valued2.domain.com
2025-12-08 12:21:16,532 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Identified host : d2.domain.com
2025-12-08 12:21:16,533 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter : Overall base URL built : https://d2.domain.com/D2
2025-12-08 12:21:16,534 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-5) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  :  D2 redirecting to errorPage JSP  : https://d2.domain.com/D2/errors/authenticationError.jsp
2025-12-08 12:21:16,567 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; /D2/HTTPUtilities] MaxHeaderKeySize: 256
2025-12-08 12:21:16,567 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; /D2/HTTPUtilities] MaxHeaderValueSize: 8192
2025-12-08 12:21:16,568 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - c.e.x.p.s.f.authc.X3OTDSAuthenticationFilter  : No LicenseExcepton found on HttpSession hence not Redirectling to License ErrorPage
2025-12-08 12:21:16,571 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - c.e.x.p.s.f.a.X3TrustHttpAuthenticationFilter :  Selected Repository : REPO_NAME
2025-12-08 12:21:16,573 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; /D2/HTTPUtilities] MaxHeaderKeySize: 256
2025-12-08 12:21:16,574 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - o.o.e.logging.slf4j.Slf4JLogLevelHandlers$4   : &#x5B;EVENT SUCCESS -&gt; /D2/HTTPUtilities] MaxHeaderValueSize: 8192
2025-12-08 12:21:16,578 UTC &#x5B;INFO ] (https-jsse-nio-8080-exec-26) - c.emc.x3.portal.server.X3HttpSessionListener  : Expired Http session id : 8531D373A3EA12A398B158AF656E7D20
2025-12-08 12:21:16,578 UTC &#x5B;DEBUG] (https-jsse-nio-8080-exec-26) - com.emc.x3.server.context.ContextManager      : Create a new context manager
...
&#x5B;tomcat@d2-0 logs]$
</pre></div>


<h2 class="wp-block-heading" id="h-2-checking-the-repository-authentication-trace">2. Checking the Repository authentication trace</h2>



<p>As usual, the next step is to check the Repository logs with the authentication trace enabled:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; highlight: [4,9,12,13,14,15]; title: ; notranslate">
&#x5B;dmadmin@cs-0 ~]$ cat $DOCUMENTUM/dba/log/$DOCBASE_NAME.log
...
2025-12-08T12:21:16.235912      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Entering RPC AUTHENTICATE_USER
2025-12-08T12:21:16.236052      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Start Authentication : LOGON_NAME=MYUSERID, DOMAIN_NAME=, OS_LOGON_NAME=tomcat, OS_LOGON_DOMAIN=, ASSUME_USER=0, TRUSTED_LOGIN_ALLOWED=1, PRINCIPAL_AUTH=0, DO_SET_LOCALE=0, RECONNECT=0, CLIENT_TOKEN=&#x5B;-36, 8, 66, 12, 89, 102, -85, -11, 6, -115, -34, -68, -123, 11, 100]
2025-12-08T12:21:16.236115      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Start Authenticate Client Instance
2025-12-08T12:21:16.236215      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Start Verify Signature, Client : dfc_327WHMY40Mglbp4taDgajZEM39Lc , Host : d2-0.d2.dctm-ns.svc.cluster.local
2025-12-08T12:21:16.244603      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  End Verify Signature, Client : dfc_327WHMY40Mglbp4taDgajZEM39Lc , Host : d2-0.d2.dctm-ns.svc.cluster.local
2025-12-08T12:21:16.244657      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  End Authenticate Client Instance
2025-12-08T12:21:16.303325      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Start-AuthenticateUser: ClientHost(d2-0.d2.dctm-ns.svc.cluster.local), LogonName(null), LogonOSName(tomcat), LogonOSDomain(), UserExtraDomain(), ServerDomain()
2025-12-08T12:21:16.303410      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Start-AuthenticateUserName:
2025-12-08T12:21:16.303442      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  dmResolveNamesForCredentials: auth_protocol()
2025-12-08T12:21:16.305698      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  &#x5B;DM_USER_E_NOT_DOCUMENTUM_USER]error:  &quot;User null does not exist in the docbase&quot;
2025-12-08T12:21:16.305720      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  End-AuthenticateUserName: dm_user.user_login_domain(), Result: 0
2025-12-08T12:21:16.305730      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Not Found dm_user.user_login_name(null), dm_user.user_login_domain()
2025-12-08T12:21:16.519331      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Final Auth Result=F, LOGON_NAME=null, AUTHENTICATION_LEVEL=1, OS_LOGON_NAME=tomcat, OS_LOGON_DOMAIN=, CLIENT_HOST_NAME=d2-0.d2.dctm-ns.svc.cluster.local, CLIENT_HOST_ADDR=172.1.1.1, USER_LOGON_NAME_RESOLVED=1, AUTHENTICATION_ONLY=0, USER_NAME=, USER_OS_NAME=null, USER_LOGIN_NAME=null, USER_LOGIN_DOMAIN=, USER_EXTRA_CREDENTIAL&#x5B;0]=, USER_EXTRA_CREDENTIAL&#x5B;1]=, USER_EXTRA_CREDENTIAL&#x5B;2]=e2, USER_EXTRA_CREDENTIAL&#x5B;3]=, USER_EXTRA_CREDENTIAL&#x5B;4]=, USER_EXTRA_CREDENTIAL&#x5B;5]=, SERVER_SESSION_ID=0101234580c77e96, AUTH_BEGIN_TIME=Mon Dec  8 12:21:16 2025, AUTH_END_TIME=Mon Dec  8 12:21:16 2025, Total elapsed time=0 seconds
2025-12-08T12:21:16.519359      3567122&#x5B;3567122]        0101234580c77e96        &#x5B;AUTH]  Exiting RPC AUTHENTICATE_USER
...
&#x5B;dmadmin@cs-0 ~]$
</pre></div>


<p>There is one thing that is quite strange in these logs. If you look at the beginning, it traces the authentication for &#8220;<strong><em>MYUSERID</em></strong>&#8220;. But then, in the middle of the process, that <em><strong>user_name</strong></em> becomes &#8220;<em><strong>null</strong></em>&#8220;. I do not recall seeing that behavior before, so I started investigating what might have caused it.</p>



<p>The account &#8220;<em><strong>MYUSERID</strong></em>&#8221; existed in the Repository. This issue occurred on the same application as in the previous blog post, but this time in the TEST/QA environment (instead of DEV). The same OTDS and users were present, so my account was definitely there (without duplicates in TEST/QA).</p>



<h2 class="wp-block-heading" id="h-3-investigating-otds-authentication-logs">3. Investigating OTDS authentication logs</h2>



<p>Since the <em><strong>dm_user</strong></em> object had a &#8220;<em><strong>user_source</strong></em>&#8221; of <em><strong>OTDS</strong></em>, I then checked the OTDS Authentication log file from the JMS. For this Documentum 23.4 version, the log file was &#8220;<em><strong>$JMS_HOME/logs/otdsauth.log</strong></em>&#8220;. Starting from version 25.4, this log file is located inside &#8220;<em><strong>$DOCUMENTUM/dba/log</strong></em>&#8221; instead:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; highlight: [3,21]; title: ; notranslate">
&#x5B;dmadmin@cs-0 ~]$ cat $JMS_HOME/logs/otdsauth.log
...
2025-12-08 11:49:46,106 UTC ERROR &#x5B;] (https-jsse-nio-9082-exec-36) Thread&#x5B;https-jsse-nio-9082-exec-36,5,main] java.io.IOException: Unable to tunnel through proxy. Proxy returns &quot;HTTP/1.1 502 Bad Gateway&quot;
        at java.base/sun.net.www.protocol.http.HttpURLConnection.doTunneling0(HttpURLConnection.java:2311)
        at java.base/sun.net.www.protocol.http.HttpURLConnection.doTunneling(HttpURLConnection.java:2181)
        at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
        at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1465)
        at java.base/sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1436)
        at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:220)
        at com.documentum.cs.otds.OTDSAuthenticationServlet.validatePassword(OTDSAuthenticationServlet.java:275)
        at com.documentum.cs.otds.OTDSAuthenticationServlet.doPost(OTDSAuthenticationServlet.java:175)
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
        ...
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1740)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Thread.java:840)

2025-12-08 12:21:16,302 UTC ERROR &#x5B;] (https-jsse-nio-9082-exec-50) Exception while fetching certificates from jwks url
&#x5B;dmadmin@cs-0 ~]$
</pre></div>


<p>The first error message (11:49) occurred about 30 minutes before the authentication attempt. On the other hand, the last line (12:21) is directly linked to the problem according to its timestamp. This indicates that the Documentum Server was trying to fetch the <em><strong>JWKS certificate</strong></em>. This happens when the OTDS Authentication Servlet is configured with the &#8220;<em><strong>auto_cert_refresh=true</strong></em>&#8221; parameter (see the &#8220;<em><strong>otdsauth.properties</strong></em>&#8221; file).</p>



<p>This forces the Documentum Server to contact the OTDS Server in order to retrieve the correct or current SSL certificate to use. However, that request failed. Even though it is not explicitly written, it is easy to deduce that the first error, related to a proxy communication issue, is the root cause.</p>



<h2 class="wp-block-heading" id="h-4-checking-newly-added-proxy-and-correcting-it">4. Checking newly added proxy and correcting it</h2>



<p>As far as I knew, there should not have been any proxy configured on Documentum, since all components are internal to the customer and located within the same network. However, when checking the startup logs of the JMS, I noticed that a new proxy configuration had recently been added when the Tomcat process restarted less than two hours earlier:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; highlight: [3,4,5,6]; title: ; notranslate">
&#x5B;dmadmin@cs-0 ~]$ grep proxy $JMS_HOME/logs/catalina.out
...
2025-12-08 10:54:56,385 UTC INFO &#x5B;main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttp.proxyHost=proxy.domain.com
2025-12-08 10:54:56,385 UTC INFO &#x5B;main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttp.proxyPort=2010
2025-12-08 10:54:56,385 UTC INFO &#x5B;main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttps.proxyHost=proxy.domain.com
2025-12-08 10:54:56,385 UTC INFO &#x5B;main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dhttps.proxyPort=2011
...
&#x5B;dmadmin@cs-0 ~]$
</pre></div>


<p>After checking with the relevant teams, it turned out that this issue was not really related to Documentum itself. Someone had simply restarted the JMS after adding proxy settings as new JVM parameters while testing an external service that required internet access. Yes, directly in TEST/QA without validating in DEV first &#8211; it happens apparently.</p>



<p>However, since no exceptions were configured through the <em><strong>no_proxy</strong></em> setting (&#8220;<em><strong>-Dhttp.nonProxyHosts</strong></em>&#8221; JVM parameter), it meant that 100% of the requests initiated by the JVM were forwarded to the proxy. That proxy had no knowledge of the OTDS server (which is expected), so the communication simply failed.</p>



<p>After correcting the proxy configuration (either by removing it or by adding all internal domains to the <em><strong>no_proxy</strong></em> setting), the JVM was able to communicate with OTDS again. As a consequence, the D2 SSO started working successfully and the environment was back &#8220;online&#8221; for all testers. These two blog posts clearly demonstrate that just because D2 displays an error, it doesn&#8217;t mean that the real root cause is obvious. Careful investigation and analysis of the log files is always essential.</p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time/">Dctm &#8211; Another DM_LICENSE_E_INVALID_LICENSE error but caused by JMS this time</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/dctm-another-dm_license_e_invalid_license-error-but-caused-by-jms-this-time/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ECM: Low-code, high value</title>
		<link>https://www.dbi-services.com/blog/ecm-low-code-high-value/</link>
					<comments>https://www.dbi-services.com/blog/ecm-low-code-high-value/#respond</comments>
		
		<dc:creator><![CDATA[Guillaume Meunier]]></dc:creator>
		<pubDate>Mon, 16 Mar 2026 08:13:36 +0000</pubDate>
				<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[Developer Experience]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[M-Files]]></category>
		<category><![CDATA[Microsoft]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43356</guid>

					<description><![CDATA[<p>First, for those unfamiliar with the term, low-code is a software development approach that uses visual, drag-and-drop interfaces and pre-built components to create applications, rather than manual coding. Low-code doesn&#8217;t always have a good reputation in the IT world because &#8220;real&#8221; programmers write code. But why reinvent the wheel? I have worked in the ECM [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/ecm-low-code-high-value/">ECM: Low-code, high value</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>First, for those unfamiliar with the term, low-code is a software development approach that uses visual, drag-and-drop interfaces and pre-built components to create applications, rather than manual coding.</p>



<p>Low-code doesn&#8217;t always have a good reputation in the IT world because &#8220;real&#8221; programmers write code. But why reinvent the wheel?</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;6a08ec7abafaf&quot;}" data-wp-interactive="core/image" data-wp-key="6a08ec7abafaf" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="683" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/M-Files-Low-code-1024x683.png" alt="M-Files low-code platform" class="wp-image-43509" title="M-Files low-code platform" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/M-Files-Low-code-1024x683.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/M-Files-Low-code-300x200.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/M-Files-Low-code-768x512.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/03/M-Files-Low-code.png 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>



<p>I have worked in the ECM world for more than fifteen years and have seen many organizations rely on heavy custom development to adapt systems to their business needs.</p>



<p>It is often a work habit, but sometimes, it can also be a way of making our work more complicated than it needs to be. Complicating things allows to maintain control over customers (or management for internals) and their need for modifications or maintenance.<br>However, the reality is that low-code doesn&#8217;t mean low competencies. It requires a thorough understanding of existing features and how to optimize them.</p>



<h2 class="wp-block-heading" id="h-the-hidden-cost-of-custom-development">The hidden cost of custom development</h2>



<p>This is especially true in a cloud environment, where we cannot control the update or upgrade cycle. Updates are frequently pushed (monthly for <a href="https://www.m-files.com/" target="_blank" rel="noreferrer noopener">M-Files</a>), bringing architectural changes, API adjustments, performance optimizations, and security enhancements. Custom code poses a permanent risk of unexpected breakdowns, compatibility issues, authentication errors, and API errors. Sometimes these issues occur silently after an update, and root cause analysis can be difficult.</p>



<p>What worked last month might suddenly stop working tomorrow, and you may not even know until a critical business process fails.</p>



<p>Every custom development requires regression testing, debugging after updates, code refactoring, documentation and QA validation. Since many companies don’t keep the original developer on staff, the risk grows every year.<br>In contrast, using embedded modules, like Compliance Kit or Properties Calculator for M-Files. They evolve with the platform, not against it.</p>



<p>Another cost factor is security and compliance responsibility. Adding custom code means adding a new piece of software to your ecosystem. You become responsible for its security and must ensure that it complies with data protection rules. Auditors may request documentation and evidence of validation.</p>



<p>On the other hand, native configuration tools are secure by design and part of the editor&#8217;s audited code base.</p>



<h2 class="wp-block-heading" id="h-the-rise-of-low-code-ecm-platforms">The rise of low-code ECM platforms</h2>



<p>To address these issues, modern ECM vendors are moving toward low-code or configuration-driven models.<br>Low-code ECM platforms focus on:</p>



<ul class="wp-block-list">
<li>configuration instead of custom code</li>



<li>rules instead of scripts</li>



<li>metadata-driven logic instead of hard-coded business rules</li>



<li>cloud compatibility from the ground up</li>
</ul>



<p>This shift dramatically reduces implementation effort, accelerates time to value, and improves overall system stability.</p>



<h2 class="wp-block-heading" id="h-when-low-code-matters-the-most">When low-code matters the most</h2>



<p id="h-when-low-code-matters-the-most-low-code-ecm-becomes-critical-in-situations-such-as"><br>Low-code ECM becomes critical in situations such as:</p>



<ul class="wp-block-list">
<li>cloud deployments</li>



<li>rapid prototyping and agile implementations</li>



<li>regulated environments with strict audit requirements</li>



<li>organizations with limited IT resources</li>



<li>multi-country deployments requiring frequent adaptations</li>
</ul>



<p>In all these scenarios, platforms that rely heavily on custom development struggle.<br>Low-code ECM thrives.</p>



<p>Where Custom Development Still Has a Role<br>Low-code doesn’t eliminate custom development, but it changes where it belongs.<br>Custom code should be used primarily for:</p>



<ul class="wp-block-list">
<li>complex integrations</li>



<li>external workflow orchestration</li>



<li>advanced business systems</li>



<li>analytics or reporting pipelines</li>
</ul>



<p>But this logic belongs outside the ECM platform, not inside the vault.<br>This modular approach reduces risk and simplifies lifecycle management.</p>



<h2 class="wp-block-heading" id="h-low-code-is-the-future">Low-code is the future</h2>



<p>As the ECM landscape accelerates toward cloud-first delivery, the industry is moving away from heavy customization. Organizations are demanding systems that:</p>



<ul class="wp-block-list">
<li>are stable across updates</li>



<li>reduce maintenance</li>



<li>accelerate deployment</li>



<li>adapt quickly</li>



<li>remain secure and compliant</li>
</ul>



<p>Low-code ECM is the answer, and M-Files is one of the most advanced platforms in this space thanks to:</p>



<ul class="wp-block-list">
<li>metadata-driven design</li>



<li>powerful configuration tools</li>



<li>no-code automation capabilities</li>



<li>cloud-safe architecture</li>
</ul>



<p>While many ECM platforms still rely on fragile customizations, M-Files demonstrates that flexibility doesn’t have to mean complexity.<br>Low-code is no longer a trend, it’s the foundation of modern ECM.<br>And M-Files is years ahead of many competitors in embracing this approach.</p>



<p>As usual if you want more information about this topic feel free to contact <a href="https://www.dbi-services.com/technologies/m-files-document-management-solutions/" target="_blank" rel="noreferrer noopener">us</a></p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/ecm-low-code-high-value/">ECM: Low-code, high value</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/ecm-low-code-high-value/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Dctm &#8211; IDS Source 16.7.5 config.bin crash during execution</title>
		<link>https://www.dbi-services.com/blog/dctm-ids-source-16-7-5-config-bin-crash-during-execution/</link>
					<comments>https://www.dbi-services.com/blog/dctm-ids-source-16-7-5-config-bin-crash-during-execution/#respond</comments>
		
		<dc:creator><![CDATA[Morgan Patou]]></dc:creator>
		<pubDate>Tue, 10 Mar 2026 18:56:00 +0000</pubDate>
				<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[config.bin]]></category>
		<category><![CDATA[configurator]]></category>
		<category><![CDATA[crash]]></category>
		<category><![CDATA[Documentum]]></category>
		<category><![CDATA[ids]]></category>
		<category><![CDATA[Tomcat]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=43427</guid>

					<description><![CDATA[<p>Around six months ago, I faced a confusing issue with IDS Source 16.7.5 where the &#8220;config.bin&#8221; executable always crashed when I tried to run it. The installation of IDS binaries itself completed successfully without any errors. However, the configurator, which is supposed to set up the required objects inside the Repository, consistently crashed. 1. Environment [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/dctm-ids-source-16-7-5-config-bin-crash-during-execution/">Dctm &#8211; IDS Source 16.7.5 config.bin crash during execution</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Around six months ago, I faced a confusing issue with IDS Source 16.7.5 where the &#8220;<em><strong>config.bin</strong></em>&#8221; executable always crashed when I tried to run it. The installation of IDS binaries itself completed successfully without any errors. However, the configurator, which is supposed to set up the required objects inside the Repository, consistently crashed.</p>



<h2 class="wp-block-heading" id="h-1-environment-context-and-ids-upgrade">1. Environment context and IDS upgrade</h2>



<p>This Documentum environment had just been upgraded to 23.4. The next step was to upgrade the associated IDS component. The latest version of IDS compatible with recent Documentum versions is 16.7.5.</p>



<p>The execution of the &#8220;<em><strong>idsLinuxSuiteSetup.bin</strong></em>&#8221; installer properly extracted all binaries and deployed the WebCache application in its Tomcat server. To quickly verify that, you can check the version properties file and try starting/stopping the Tomcat instance of the IDS. On my side, there were no problems with that.</p>



<p>To verify the installed version of IDS and ensure that the configurator was also updated:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [3,7,10]; title: ; notranslate">
&#x5B;dmadmin@cs-0 ~]$ cd $DM_HOME/webcache
&#x5B;dmadmin@cs-0 webcache]$
&#x5B;dmadmin@cs-0 webcache]$ cat version/version.properties
#Please don&#039;t remove this values
#Fri Oct 10 09:52:49 UTC 2025
INSTALLER_NAME=IDS
PRODUCT_VERSION=16.7.5
&#x5B;dmadmin@cs-0 webcache]$
&#x5B;dmadmin@cs-0 webcache]$ ls -l install/config.bin
-rwxrwxr-x 1 dmadmin dmadmin 54943847 Oct 19  2024 install/config.bin
&#x5B;dmadmin@cs-0 webcache]$
</pre></div>


<p>The above confirms that WebCache was properly updated to version 16.7.5 on October 10. It also confirms that the &#8220;<em><strong>config.bin</strong></em>&#8221; is fairly recent (Q4 2024), i.e. much more recent that the old 16.7.4 file.</p>



<h2 class="wp-block-heading" id="h-2-running-the-ids-configurator-in-silent">2. Running the IDS configurator in silent</h2>



<p>My next step was therefore to execute the configurator, still in silent mode, as I have done for all previous IDS installations and configurations. I have not written a blog about IDS silent installation yet, but I have done so for several other components. For example, you can refer to <a href="https://www.dbi-services.com/blog/documentum-silent-install-otds/" id="36492" target="_blank" rel="noreferrer noopener">this post</a> for the latest one published.</p>



<p>The silent properties file for the IDS Source configurator is quite simple, as it only requires the Repository name to configure:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [7]; title: ; notranslate">
&#x5B;dmadmin@cs-0 webcache]$ cat ${install_file}
### Silent installation response file for IDS configurator
INSTALLER_UI=silent
KEEP_TEMP_FILE=true

### Configuration parameters
DOC_BASE_NAME=REPO_01

&#x5B;dmadmin@cs-0 webcache]$
</pre></div>


<p>Initially, I simply executed &#8220;<em><strong>config.bin</strong></em>&#8220;. Since it crashed and there was absolutely nothing in the logs, I had to run it again with the <em><strong>DEBUG</strong></em> flag enabled:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [1,10,11]; title: ; notranslate">
&#x5B;dmadmin@cs-0 webcache]$ $DM_HOME/webcache/install/config.bin -DLOG_LEVEL=DEBUG -f ${install_file}
Preparing to install
Extracting the installation resources from the installer archive...
Configuring the installer for this system&#039;s environment...

Launching installer...

Picked up JAVA_TOOL_OPTIONS: -Djdk.util.zip.disableZip64ExtraFieldValidation=true -Djava.locale.providers=COMPAT,SPI --add-exports=java.base/sun.security.provider=ALL-UNNAMED --add-exports=java.base/sun.security.pkcs=ALL-UNNAMED --add-exports=java.base/sun.security.x509=ALL-UNNAMED --add-exports=java.base/sun.security.util=ALL-UNNAMED --add-exports=java.base/sun.security.tools.keytool=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
&#x5B;dmadmin@cs-0 webcache]$
&#x5B;dmadmin@cs-0 webcache]$ echo $?
1
&#x5B;dmadmin@cs-0 webcache]$
</pre></div>


<h2 class="wp-block-heading" id="h-3-investigating-the-logs">3. Investigating the logs</h2>



<p>As shown above, the execution failed, as the return code was &#8220;<em><strong>1</strong></em>&#8220;. With DEBUG enabled and after checking the generated files, I found the following:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
&#x5B;dmadmin@cs-0 webcache]$ find . -type f -mmin -20 -ls
92475248907    380 -rw-rw-r--   1  dmadmin  dmadmin    384222 Oct 10 11:58 ./install/logs/install.log
92470810541      4 -rw-rw-r--   1  dmadmin  dmadmin       219 Oct 10 11:57 ./install/installer.properties
92475252084     12 -rwxrwxrwx   1  dmadmin  dmadmin     10564 Oct 10 11:57 ./install/config_log/OpenText_Documentum_Interactive_Delivery_Services_Configuration_Install_10_10_2025_11_57_42.log
&#x5B;dmadmin@cs-0 webcache]$
&#x5B;dmadmin@cs-0 webcache]$ grep -iE &quot;_E_|_F_|ERROR|WARN|FATAL&quot; install/logs/install.log
TYPE ERROR_TYPE 0000000000000000 0 0 0
13:24:12,192 DEBUG &#x5B;main] com.documentum.install.shared.common.error.DiException - null/dba/config/GR_REPO/webcache.ini (No such file or directory)
13:24:12,193 DEBUG &#x5B;main] com.documentum.install.shared.common.error.DiException - null
13:24:12,194 DEBUG &#x5B;main] com.documentum.install.shared.common.error.DiException - null/dba/config/REPO_01/webcache.ini (No such file or directory)
13:24:12,194 DEBUG &#x5B;main] com.documentum.install.shared.common.error.DiException - null
13:24:12,199 DEBUG &#x5B;main] com.documentum.install.shared.common.error.DiException - null/dba/config/GR_REPO/webcache.ini (No such file or directory)
13:24:12,199 DEBUG &#x5B;main] com.documentum.install.shared.common.error.DiException - null
13:24:12,199 DEBUG &#x5B;main] com.documentum.install.shared.common.error.DiException - null/dba/config/REPO_01/webcache.ini (No such file or directory)
13:24:12,199 DEBUG &#x5B;main] com.documentum.install.shared.common.error.DiException - null
13:24:12,200 DEBUG &#x5B;main] com.documentum.install.shared.common.error.DiException - null/dba/config/REPO_01/webcache.ini (No such file or directory)
13:24:12,200 DEBUG &#x5B;main] com.documentum.install.shared.common.error.DiException - null
TYPE ERROR_TYPE 0000000000000000 0 0 0
&#x5B;dmadmin@cs-0 webcache]$
</pre></div>


<p>The DEBUG logs above might make it look like the &#8220;<em><strong>$DOCUMENTUM</strong></em>&#8221; environment variable is missing, since it complains about &#8220;<em><strong>null/dba/xxx</strong></em>&#8221; not being found. However, that is not the issue. I checked all parameters and environment variables, and everything was configured correctly. In addition, Documentum had just been successfully upgraded from version 20.2 to 23.4 from start to finish, which confirmed that there was no problem with the OS or environment configuration. So I checked the second file:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; highlight: [15,17,21,22,23,30]; title: ; notranslate">
&#x5B;dmadmin@cs-0 webcache]$ cat install/config_log/OpenText_Documentum_Interactive_Delivery_Services_Configuration_Install_10_10_2025_11_57_42.log

__________________________________________________________________________

Fri Oct 10 11:57:50 UTC 2025

Free Memory: 15947 kB
Total Memory: 49152 kB
...
Summary
-------

Installation: Successful with errors.

8 Successes
0 Warnings
1 NonFatalErrors
0 FatalErrors
...

Custom Action:            com.documentum.install.webcache.CustomActions.DiWAWebcsConfigureDocbase
                          Status: ERROR
                          Additional Notes: ERROR -     class com.documentum.install.webcache.CustomActions.DiWAWebcsConfigureDocbase.install() runtime exception:

...
====================STDERR ENTRIES==================

RepositoryManager: Trying fallback repository location...
8. final log file name=$DM_HOME/webcache/install/config_log/OpenText_Documentum_Interactive_Delivery_Services_Configuration_Install_10_10_2025_11_57_42.log
java.lang.NumberFormatException: For input string: &quot;&quot;
        at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
        at java.base/java.lang.Integer.parseInt(Integer.java:678)
        at java.base/java.lang.Integer.parseInt(Integer.java:786)
        at com.documentum.install.webcache.CustomActions.DiWAWebcsConfigureDocbase.configureDocbase(DiWAWebcsConfigureDocbase.java:329)
        at com.documentum.install.webcache.CustomActions.DiWAWebcsConfigureDocbase.install(DiWAWebcsConfigureDocbase.java:202)
        at com.zerog.ia.installer.actions.CustomAction.installSelf(Unknown Source)
        at com.zerog.ia.installer.InstallablePiece.install(Unknown Source)
        at com.zerog.ia.installer.InstallablePiece.install(Unknown Source)
        at com.zerog.ia.installer.GhostDirectory.install(Unknown Source)
        at com.zerog.ia.installer.InstallablePiece.install(Unknown Source)
        at com.zerog.ia.installer.Installer.install(Unknown Source)
        at com.zerog.ia.installer.LifeCycleManager.consoleInstallMain(Unknown Source)
        at com.zerog.ia.installer.LifeCycleManager.executeApplication(Unknown Source)
        at com.zerog.ia.installer.Main.main(Unknown Source)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:569)
        at com.zerog.lax.LAX.launch(Unknown Source)
        at com.zerog.lax.LAX.main(Unknown Source)
Execute Custom Code
    class com.documentum.install.webcache.CustomActions.DiWAWebcsConfigureDocbase.install() runtime exception:
java.awt.HeadlessException:
No X11 DISPLAY variable was set,
but this program performed an operation which requires it.
        at java.desktop/java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:164)
        at java.desktop/java.awt.Window.&lt;init&gt;(Window.java:553)
        at java.desktop/java.awt.Frame.&lt;init&gt;(Frame.java:428)
        at java.desktop/java.awt.Frame.&lt;init&gt;(Frame.java:393)
        at java.desktop/javax.swing.JFrame.&lt;init&gt;(JFrame.java:180)
        at com.documentum.install.webcache.CustomActions.DiWAWebcsConfigureDocbase.install(DiWAWebcsConfigureDocbase.java:215)
        at com.zerog.ia.installer.actions.CustomAction.installSelf(Unknown Source)
        at com.zerog.ia.installer.InstallablePiece.install(Unknown Source)
        at com.zerog.ia.installer.InstallablePiece.install(Unknown Source)
        at com.zerog.ia.installer.GhostDirectory.install(Unknown Source)
        at com.zerog.ia.installer.InstallablePiece.install(Unknown Source)
        at com.zerog.ia.installer.Installer.install(Unknown Source)
        at com.zerog.ia.installer.LifeCycleManager.consoleInstallMain(Unknown Source)
        at com.zerog.ia.installer.LifeCycleManager.executeApplication(Unknown Source)
        at com.zerog.ia.installer.Main.main(Unknown Source)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:569)
        at com.zerog.lax.LAX.launch(Unknown Source)
        at com.zerog.lax.LAX.main(Unknown Source)
Retrying Installables deferred in pass 0
Deferral retries done because:
There were no deferrals in the last pass.
8. final log file name=$DM_HOME/webcache/install/config_log/OpenText_Documentum_Interactive_Delivery_Services_Configuration_Install_10_10_2025_11_57_42.log
====================STDOUT ENTRIES==================
...
&#x5B;dmadmin@cs-0 webcache]$
</pre></div>


<p>That log file appeared to indicate that a certain &#8220;<em><strong>Number</strong></em>&#8221; value might be missing (&#8220;<em><strong>NumberFormatException</strong></em>&#8220;). Without access to the IDS source code (and I always avoid de-compiling Documentum source files), it was impossible to determine exactly what was missing. There were no additional details in the logs, so in the end I had to reach out to OpenText support to find out what was causing the issue.</p>



<h2 class="wp-block-heading" id="h-4-root-cause-missing-value-for-tomcat-port-selected">4. Root cause: missing value for TOMCAT_PORT_SELECTED</h2>



<p>After several back-and-forth exchanges and around 12 days of waiting for a solution, I finally received confirmation that this was a bug in the IDS Source 16.7.5 software. This version is the first one deployed on Tomcat instead of WildFly, so it was somewhat expected that some issues might appear.</p>



<p>When installing the IDS Source binaries, the silent installation properties file requires you to define the port that Tomcat will use. This parameter is &#8220;<em><strong>USER_PORT_CHOICE=6677</strong></em>&#8220;. You can of course change the port if needed, but <em><strong>6677</strong></em> was the default port used with previous IDS versions running on WildFly, so I kept the same value when installing IDS 16.7.5 on Tomcat.</p>



<p>The bug is that even though this value is used correctly during the Tomcat installation step, it is not properly written into the properties file that the configuration process later relies on. The IDS Source &#8220;<em><strong>config.bin</strong></em>&#8221; looks for the file &#8220;<em><strong>$DM_HOME/webcache/scs_tomcat.properties</strong></em>&#8221; and reads the port from the &#8220;<em><strong>TOMCAT_PORT_SELECTED</strong></em>&#8221; parameter.</p>



<p>However, in IDS 16.7.5 this file is not updated during installation. As a result, the port value remains empty, which corresponds to the missing number referenced in the logs and causes the configurator to crash.</p>



<h2 class="wp-block-heading" id="h-5-fix-updating-scs-tomcat-properties">5. Fix: updating scs_tomcat.properties</h2>



<p>The solution is fairly simple: manually update that file and run the configurator again. In my case, I used the HTTPS port <em><strong>6679</strong></em>, since my Tomcat was already in SSL (6677 + 2 = 6679):</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [2,5,14,15]; title: ; notranslate">
&#x5B;dmadmin@cs-0 webcache]$ port=6679
&#x5B;dmadmin@cs-0 webcache]$ sed -i &quot;s,\(TOMCAT_PORT_SELECTED=\).*,\1${port},&quot; $DM_HOME/webcache/scs_tomcat.properties
&#x5B;dmadmin@cs-0 webcache]$
&#x5B;dmadmin@cs-0 webcache]$
&#x5B;dmadmin@cs-0 webcache]$ $DM_HOME/webcache/install/config.bin -DLOG_LEVEL=DEBUG -f ${install_file}
Preparing to install
Extracting the installation resources from the installer archive...
Configuring the installer for this system&#039;s environment...

Launching installer...

Picked up JAVA_TOOL_OPTIONS: -Djdk.util.zip.disableZip64ExtraFieldValidation=true -Djava.locale.providers=COMPAT,SPI --add-exports=java.base/sun.security.provider=ALL-UNNAMED --add-exports=java.base/sun.security.pkcs=ALL-UNNAMED --add-exports=java.base/sun.security.x509=ALL-UNNAMED --add-exports=java.base/sun.security.util=ALL-UNNAMED --add-exports=java.base/sun.security.tools.keytool=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
&#x5B;dmadmin@cs-0 webcache]$
&#x5B;dmadmin@cs-0 webcache]$ echo $?
0
&#x5B;dmadmin@cs-0 webcache]$
</pre></div>


<p>As you can see above, the return code is now &#8220;<strong><em>0</em></strong>&#8220;, which indicates a successful execution. The logs generated during this new attempt are much cleaner, and there are no longer any exceptions or errors:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; highlight: [14,20,21]; title: ; notranslate">
&#x5B;dmadmin@cs-0 webcache]$ cat install/config_log/OpenText_Documentum_Interactive_Delivery_Services_Configuration_Install_10_22_2025_13_37_46.log
__________________________________________________________________________

Wed Oct 22 01:39:40 UTC 2025

Free Memory: 14800 kB
Total Memory: 49152 kB
...
Summary
-------

Installation: Successful.

9 Successes
0 Warnings
0 NonFatalErrors
0 FatalErrors
...

Custom Action:            com.documentum.install.webcache.CustomActions.DiWAWebcsConfigureDocbase
                          Status: SUCCESSFUL

...
====================STDERR ENTRIES==================

RepositoryManager: Trying fallback repository location...
8. final log file name=$DM_HOME/webcache/install/config_log/OpenText_Documentum_Interactive_Delivery_Services_Configuration_Install_10_22_2025_13_37_46.log
Retrying Installables deferred in pass 0
Deferral retries done because:
There were no deferrals in the last pass.
8. final log file name=$DM_HOME/webcache/install/config_log/OpenText_Documentum_Interactive_Delivery_Services_Configuration_Install_10_22_2025_13_37_46.log
====================STDOUT ENTRIES==================
...
&#x5B;dmadmin@cs-0 webcache]$
</pre></div>


<p>As mentioned earlier, this configurator is responsible for installing components inside the Repository. It creates the required IDS objects or updates them if they already exist. The DAR files were also successfully installed:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [2,18,19,20]; title: ; notranslate">
&#x5B;dmadmin@cs-0 webcache]$ iapi $DOCBASE_NAME -Udmadmin -Pxxx &lt;&lt; EOC
&gt; ?,c,select r_object_id, r_modify_date, object_name from dmc_dar order by r_modify_date asc;
&gt; EOC

        OpenText Documentum iapi - Interactive API interface
        Copyright (c) 2023. OpenText Corporation
        All rights reserved.
        Client Library Release 23.4.0000.0180

Connecting to Server using docbase REPO_01
&#x5B;DM_SESSION_I_SESSION_START]info:  &quot;Session 011234568027fb88 started for user dmadmin.&quot;

Connected to OpenText Documentum Server running Release 23.4.0000.0143  Linux64.Oracle
1&gt; 2&gt;
r_object_id       r_modify_date              object_name
----------------  -------------------------  ---------------------------------
...               ...                        ...
08123456800c99a5  10/22/2025 13:38:32        SCSDocApp
08123456800c99be  10/22/2025 13:38:58        SCSWorkflow
08123456800c99e1  10/22/2025 13:39:29        icmRating

(43 rows affected)
1&gt;
&#x5B;dmadmin@cs-0 webcache]$
</pre></div>


<h2 class="wp-block-heading" id="h-6-another-small-bug">6. Another small bug</h2>



<p>However, I later discovered another small bug. The &#8220;<em><strong>scs_admin_config.product_version</strong></em>&#8221; attribute in the Repository was not updated correctly. Previously installed version was 16.7.4, so it&#8217;s unclear whether the configurator updated the value (with 16.7.4 still) or not at all. In any case, the stored product version was incorrect.</p>



<p>This value is used by IDS to verify version compatibility during execution. For example, you can see this version referenced during the End-to-End tests. Therefore, I had to update the value manually. To correct the issue:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [2,3,4,21,27,34]; title: ; notranslate">
&#x5B;dmadmin@cs-0 webcache]$ iapi $DOCBASE_NAME -Udmadmin -Pxxx &lt;&lt; EOC
&gt; ?,c,select product_version from scs_admin_config;
&gt; ?,c,update scs_admin_config object set product_version=&#039;16.7.5&#039; where product_version=&#039;16.7.4&#039;;
&gt; ?,c,select product_version from scs_admin_config;
&gt; exit
&gt; EOC

        OpenText Documentum iapi - Interactive API interface
        Copyright (c) 2023. OpenText Corporation
        All rights reserved.
        Client Library Release 23.4.0000.0180

Connecting to Server using docbase REPO_01
&#x5B;DM_SESSION_I_SESSION_START]info:  &quot;Session 011234568027fd13 started for user dmadmin.&quot;

Connected to OpenText Documentum Server running Release 23.4.0000.0143  Linux64.Oracle
Session id is s0
API&gt;
product_version
------------------------
16.7.4
(1 row affected)

API&gt;
objects_updated
---------------
              1
(1 row affected)
&#x5B;DM_QUERY_I_NUM_UPDATE]info:  &quot;1 objects were affected by your UPDATE statement.&quot;

API&gt;
product_version
------------------------
16.7.5
(1 row affected)

API&gt; Bye
&#x5B;dmadmin@cs-0 webcache]$
</pre></div>


<p>OpenText mentioned that both of these bugs should normally be fixed in a future update of the binaries. I have not checked in the last six months, but hopefully the issue has already been resolved. If not, at least you now have the information needed to fix it!</p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/dctm-ids-source-16-7-5-config-bin-crash-during-execution/">Dctm &#8211; IDS Source 16.7.5 config.bin crash during execution</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/dctm-ids-source-16-7-5-config-bin-crash-during-execution/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)

Served from: www.dbi-services.com @ 2026-05-17 00:15:22 by W3 Total Cache
-->