<?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 Application integration &amp; Middleware - dbi Blog</title>
	<atom:link href="https://www.dbi-services.com/blog/category/application-integration-middleware/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbi-services.com/blog/category/application-integration-middleware/</link>
	<description></description>
	<lastBuildDate>Wed, 25 Feb 2026 20:21:19 +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 Application integration &amp; Middleware - dbi Blog</title>
	<link>https://www.dbi-services.com/blog/category/application-integration-middleware/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>WebLogic 14 &#038; Elastic Stack: From Metrics to Predictive Insights</title>
		<link>https://www.dbi-services.com/blog/weblogic-14-elastic-stack-from-metrics-to-predictive-insights/</link>
					<comments>https://www.dbi-services.com/blog/weblogic-14-elastic-stack-from-metrics-to-predictive-insights/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Fri, 20 Feb 2026 09:21:39 +0000</pubDate>
				<category><![CDATA[Elastic Stack]]></category>
		<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[elastic Stack]]></category>
		<category><![CDATA[Monitoring]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=40353</guid>

					<description><![CDATA[<p>Oracle WebLogic Server continues to be a backbone for enterprise Java applications. With version 14, it brings improved Java compatibility, stronger security defaults, and better clustering. But while the platform is robust, monitoring it effectively remains a challenge. Introduction Within WebLogic 14, out-of-the-box tools such as the Remote Console and WLST scripts provide some visibility, [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/weblogic-14-elastic-stack-from-metrics-to-predictive-insights/">WebLogic 14 &amp; Elastic Stack: From Metrics to Predictive Insights</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Oracle WebLogic Server continues to be a backbone for enterprise Java applications. With version 14, it brings improved Java compatibility, stronger security defaults, and better clustering. But while the platform is robust, monitoring it effectively remains a challenge.</p>



<span id="more-40353"></span>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="683" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/Blog-WLS14-Elastic-Stack1-1024x683.png" alt="" class="wp-image-40561" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/Blog-WLS14-Elastic-Stack1-1024x683.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/Blog-WLS14-Elastic-Stack1-300x200.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/Blog-WLS14-Elastic-Stack1-768x512.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/Blog-WLS14-Elastic-Stack1.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading" id="h-introduction">Introduction</h2>



<p>Within WebLogic 14, out-of-the-box tools such as the Remote Console and WLST scripts provide some visibility, but they are limited when it comes to real-time metrics, historical analysis, or predictive monitoring.</p>



<p>This is where the <a href="https://www.elastic.co/">Elastic</a> Stack (Elasticsearch, Logstash, Beats, Elastic Agent, Kibana, and Elastic Machine Learning) delivers real value. By integrating WebLogic 14 logs, traces and metrics with Elastic Stack, you can build a unified platform that provides:</p>



<ul class="wp-block-list">
<li>Real-time observability of servers, threads, JDBC pools, and JVM health.</li>



<li>Powerful visualization and analysis in Kibana.</li>



<li>Predictive monitoring through anomaly detection and forecasting.</li>
</ul>



<p>In this blog, we’ll walk through the integration of metrics step by step.</p>



<h2 class="wp-block-heading" id="h-step-1-export-weblogic-14-metrics">Step 1: Export WebLogic 14 Metrics</h2>



<p>WebLogic does not natively expose metrics in formats suitable for Elastic or Prometheus. The solution is the WebLogic Monitoring Exporter, which translates JMX metrics into Prometheus-style output.</p>



<p>Download the exporter:</p>



<pre class="wp-block-code"><code>wget https://github.com/oracle/weblogic-monitoring-exporter/releases/download/v2.3.0/weblogic-monitoring-exporter.jar
</code></pre>



<p>Configure it (<code>config.yaml</code>):</p>



<pre class="wp-block-code"><code>domains:
  - name: mydomain
    url: t3://localhost:7001
    username: monitoruser
    password: XXXXXXXXXX
    metrics:
      - name: ServerHealth
      - name: ThreadPool
      - name: JDBCConnectionPool
      - name: JVMRuntime</code></pre>



<p>Start the exporter:</p>



<pre class="wp-block-code"><code>java -jar weblogic-monitoring-exporter.jar --config=config.yaml</code></pre>



<p>Verify metrics are exposed at:</p>



<pre class="wp-block-code"><code>http:&#047;&#047;localhost:8080/metrics</code></pre>



<h2 class="wp-block-heading" id="h-step-2-collect-metrics-with-metricbeat">Step 2: Collect Metrics with Metricbeat</h2>



<p>Elastic provides Metricbeat with a Prometheus module, making it easy to scrape WebLogic exporter metrics and send them to Elasticsearch.</p>



<p>Enable and configure the module:</p>



<pre class="wp-block-code"><code>metricbeat modules enable prometheus</code></pre>



<p>prometheus.yml configuration:</p>



<pre class="wp-block-code"><code>- module: prometheus
  period: 10s
  hosts: &#091;"http://localhost:8080"]
  metrics_path: /metrics</code></pre>



<p>Start Metricbeat:</p>



<pre class="wp-block-code"><code>sudo metricbeat setup
sudo service metricbeat start</code></pre>



<p>Now WebLogic metrics are flowing into Elasticsearch.</p>



<h2 class="wp-block-heading" id="h-step-3-collect-weblogic-logs-with-filebeat-or-elastic-agent">Step 3: Collect WebLogic Logs with Filebeat or Elastic Agent</h2>



<p>Metrics give you system health, but logs provide context. To correlate performance issues with application errors, you should ingest WebLogic logs into Elasticsearch.</p>



<h3 class="wp-block-heading">Option A: Using Filebeat</h3>



<p>Install and configure Filebeat on the WebLogic server.</p>



<p>Example configuration (<code>filebeat.yml</code>):</p>



<pre class="wp-block-code"><code>filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /u02/app/weblogic/domains/mydomain/servers/*/logs/*.log
    fields:
      application: weblogic
    multiline.pattern: '^\&lt;'
    multiline.negate: true
    multiline.match: after

output.elasticsearch:
  hosts: &#091;"http://localhost:9200"]

And start Filebeat.</code></pre>



<h3 class="wp-block-heading" id="h-option-b-using-elastic-agent-recommended">Option B: Using Elastic Agent (Recommended)</h3>



<p>Elastic Agent simplifies deployment by combining logs, metrics, and security data collection into a single agent managed centrally via Kibana Fleet.</p>



<p>Steps:</p>



<ol class="wp-block-list">
<li>Enroll the agent from Kibana &#8211; Fleet.</li>



<li>Attach the System + Custom Log integration.</li>



<li>Configure the WebLogic log path.</li>



<li>Deploy the agent on your WebLogic server.</li>
</ol>



<p>This approach reduces operational overhead and centralizes configuration.</p>



<h1 class="wp-block-heading" id="h-next-steps-amp-conclusion">Next steps &amp; Conclusion</h1>



<p>Next steps:</p>



<ul class="wp-block-list">
<li>Build Observability Dashboards in Kibana</li>



<li>Add APM for Transaction-Level Visibility</li>



<li>Enable Machine Learning for Predictive Monitoring</li>



<li>Configure Alerts</li>
</ul>



<p>While WebLogic 14 provides essential administrative tooling, it does not offer full observability capabilities out of the box.</p>



<p>By integrating it with the Elastic Stack, you gain:</p>



<ul class="wp-block-list">
<li>Real-time operational insight</li>



<li>Deep log and metric correlation</li>



<li>Predictive monitoring with machine learning</li>



<li>Actionable alerting</li>



<li>Transaction-level visibility</li>
</ul>



<p>This approach scales from a single WebLogic instance to enterprise clusters and hybrid cloud deployments.</p>



<p>In short: you move from reactive troubleshooting to proactive performance management.</p>



<p><a href="https://www.dbi-services.com/blog/category/elastic-stack/" target="_blank" rel="noreferrer noopener">See my Elastic blogs</a>.</p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/weblogic-14-elastic-stack-from-metrics-to-predictive-insights/">WebLogic 14 &amp; Elastic Stack: From Metrics to Predictive Insights</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/weblogic-14-elastic-stack-from-metrics-to-predictive-insights/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>JBoss EAP &#8211; Credential Stores: from optional best practice to mandatory security baseline</title>
		<link>https://www.dbi-services.com/blog/jboss-eap-credential-stores-from-optional-best-practice-to-mandatory-security-baseline/</link>
					<comments>https://www.dbi-services.com/blog/jboss-eap-credential-stores-from-optional-best-practice-to-mandatory-security-baseline/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Thu, 19 Feb 2026 16:49:44 +0000</pubDate>
				<category><![CDATA[JBoss EAP]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=42501</guid>

					<description><![CDATA[<p>One of the most impactful (and often underestimated) differences between JBoss EAP 7.4 and JBoss EAP 8 is how credentials are handled. This is not just a documentation tweak or a recommendation shift. It is a hard security enforcement change driven by modern platform standards and compliance expectations from Red Hat. If you remember only [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-credential-stores-from-optional-best-practice-to-mandatory-security-baseline/">JBoss EAP &#8211; Credential Stores: from optional best practice to mandatory security baseline</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>One of the most impactful (and often underestimated) differences between JBoss EAP 7.4 and JBoss EAP 8 is how credentials are handled.</p>



<p>This is not just a documentation tweak or a recommendation shift. It is a hard security enforcement change driven by modern platform standards and compliance expectations from Red Hat.</p>



<span id="more-42501"></span>



<p>If you remember only one thing from this article, remember this:</p>



<ul class="wp-block-list">
<li>JBoss EAP 7.4 allows credentials to be defined in multiple ways, including clear text.</li>



<li>JBoss EAP 8 forces the use of Credential Stores for sensitive resources such as datasources.</li>
</ul>



<h2 class="wp-block-heading" id="h-jboss-eap-7-4-credential-stores-were-optional"><strong>JBoss EAP 7.4: Credential Stores were OPTIONAL</strong></h2>



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



<p>In EAP 7.4, Elytron credential stores were already available and recommended, but not enforced.</p>



<p>All of the following were valid and supported:</p>



<ul class="wp-block-list">
<li>Clear-text passwords in standalone.xml</li>



<li>Encrypted expressions</li>



<li>Elytron credential-store</li>



<li>Legacy vault-based approaches (deprecated, but still functional)</li>
</ul>



<p>A datasource like this was perfectly valid in 7.4:</p>



<pre class="wp-block-code"><code>&lt;datasource jndi-name="java:/jdbc/MyDS" pool-name="MyDS"&gt;
    &lt;connection-url&gt;jdbc:postgresql://db:5432/app&lt;/connection-url&gt;
    &lt;user-name&gt;app&lt;/user-name&gt;
    &lt;password&gt;secret123&lt;/password&gt;
&lt;/datasource&gt;</code></pre>



<h2 class="wp-block-heading" id="h-jboss-eap-8-credential-stores-are-effectively-mandatory"><strong>JBoss EAP 8: Credential Stores are EFFECTIVELY MANDATORY</strong></h2>



<p>With JBoss EAP 8, Red Hat made a clear and intentional decision, sensitive credentials must no longer be stored directly in configuration files.</p>



<p>What changed in practice:</p>



<ul class="wp-block-list">
<li>The element for datasources is no longer the supported approach</li>



<li>Datasources are expected to use credential-reference</li>



<li>Elytron is no longer just the default security framework, it is the only one</li>
</ul>



<p>A valid datasource configuration in EAP 8 looks like this:</p>



<pre class="wp-block-code"><code>&lt;datasource jndi-name="java:/jdbc/MyDS" pool-name="MyDS"&gt;
    &lt;connection-url&gt;jdbc:postgresql://db:5432/app&lt;/connection-url&gt;
    &lt;user-name&gt;app&lt;/user-name&gt;
    &lt;credential-reference store="cs-db" alias="db-password"/&gt;
&lt;/datasource&gt;</code></pre>



<h2 class="wp-block-heading" id="h-why-this-enforcement-exists-in-eap-8">Why this enforcement exists in EAP 8</h2>



<p>This change is not accidental or cosmetic. It aligns EAP with:</p>



<ul class="wp-block-list">
<li>OpenShift and container-native security expectations</li>



<li>Compliance-driven environments (CIS, ISO, regulated industries)</li>



<li>Modern “secrets management” practices</li>
</ul>



<h2 class="wp-block-heading" id="h-forced-does-not-mean-hard">“Forced” does not mean “hard”</h2>



<p>A common fear when moving to EAP 8 is: “Now everything is complicated” because of security!</p>



<p>In reality, the operational model becomes cleaner and more consistent.</p>



<p>Typical pattern:</p>



<ol class="wp-block-list">
<li>Create one credential store</li>



<li>Add secrets once</li>



<li>Reference them everywhere</li>
</ol>



<p>CLI example:</p>



<pre class="wp-block-code"><code>/subsystem=elytron/credential-store=cs-db:add(
  path=cs-db.jceks,
  relative-to=jboss.server.config.dir,
  credential-reference={clear-text=changeit}
)

/subsystem=elytron/credential-store=cs-db:add-alias(
  alias=db-password,
  secret-value=secret123
)
</code></pre>



<p>From that point on:</p>



<ul class="wp-block-list">
<li>No passwords in XML</li>



<li>No passwords in Git</li>



<li>No accidental leaks</li>
</ul>



<h2 class="wp-block-heading" id="h-migration-impact-where-most-upgrades-fail">Migration impact: where most upgrades fail</h2>



<p>When upgrading from EAP 7.4 to EAP 8, you must:</p>



<ul class="wp-block-list">
<li>Identify all clear-text credentials</li>



<li>Move them into credential stores</li>



<li>Replace &lt;password&gt; with &lt;credential-reference&gt;</li>
</ul>



<p>This step is mandatory in EAP 8.</p>



<p>Good news: </p>



<ul class="wp-block-list">
<li>If you already used credential stores in 7.4: migration is straightforward</li>



<li>If you didn’t: EAP 8 forces a long-overdue cleanup <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
</ul>



<p>If you’re planning a move to JBoss EAP 8, I can help you get there safely.<br>From credential-store migration to full security hardening, I support organizations in turning a mandatory change into a controlled, successful upgrade.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/jboss-eap-credential-stores-from-optional-best-practice-to-mandatory-security-baseline/">JBoss EAP &#8211; Credential Stores: from optional best practice to mandatory security baseline</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/jboss-eap-credential-stores-from-optional-best-practice-to-mandatory-security-baseline/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Migrating from WildFly 26 to WildFly 38</title>
		<link>https://www.dbi-services.com/blog/migrating-from-wildfly-26-to-wildfly-38/</link>
					<comments>https://www.dbi-services.com/blog/migrating-from-wildfly-26-to-wildfly-38/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Wed, 18 Feb 2026 10:41:41 +0000</pubDate>
				<category><![CDATA[WildFly]]></category>
		<category><![CDATA[migration]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=42491</guid>

					<description><![CDATA[<p>I have been asked to migrate a customer environment from WildFly 26 to WildFly 38. That’s a meaningful upgrade, not just a version bump, because WildFly 38 represents the latest stable baseline with modern Jakarta EE support, updated security, and long-term compatibility with modern Java runtimes like OpenJDK 17&#8230; Before we dive into commands and [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/migrating-from-wildfly-26-to-wildfly-38/">Migrating from WildFly 26 to WildFly 38</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>I have been asked to migrate a customer environment from WildFly 26 to WildFly 38. That’s a meaningful upgrade, not just a version bump, because WildFly 38 represents the latest stable baseline with modern Jakarta EE support, updated security, and long-term compatibility with modern Java runtimes like OpenJDK 17&#8230;</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="683" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/01/d8277d18-12d3-4a45-97a5-6e1346f268dc-1024x683.png" alt="" class="wp-image-42492" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/01/d8277d18-12d3-4a45-97a5-6e1346f268dc-1024x683.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/01/d8277d18-12d3-4a45-97a5-6e1346f268dc-300x200.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/01/d8277d18-12d3-4a45-97a5-6e1346f268dc-768x512.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2026/01/d8277d18-12d3-4a45-97a5-6e1346f268dc.png 1536w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<span id="more-42491"></span>



<p>Before we dive into commands and configurations, let’s anchor this in version history and explain an important staging step that many teams overlook.</p>



<h2 class="wp-block-heading" id="h-wildfly-version-history">WildFly version history</h2>



<p>WildFly releases follow a rapid cadence, but some versions carry particular importance for migration:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td>Version</td><td>Release date</td><td>Notes</td></tr><tr><td><a href="https://www.wildfly.org/news/2021/12/16/WildFly-26-is-released/" target="_blank" rel="noreferrer noopener">WildFly 26</a></td><td>December 2021</td><td>Last in the older Java EE family with early Jakarta EE support. Many legacy configurations still present.</td></tr><tr><td><a href="https://www.wildfly.org/news/2025/04/10/WildFly-36-is-released/">WildFly 36</a></td><td>April 2025</td><td>Transitional release: consolidates Jakarta EE 9+ changes and stabilizes newer subsystems.</td></tr><tr><td><a href="https://www.wildfly.org/news/2025/11/17/WildFly-38-0-1-is-released/" target="_blank" rel="noreferrer noopener">WildFly 38</a></td><td>October 2025</td><td>Latest stable release with Jakarta EE 10 alignment, updated security policies, and official baseline for Java 17.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading" id="h-why-not-jump-directly-from-26-to-38">Why Not Jump Directly from 26 to 38?</h2>



<p>In theory you could try, but in practice, this is discouraged for several reasons:</p>



<p>     1. <strong>Evolving Jakarta EE Support</strong></p>



<p>WildFly 26 still contains remnants of older namespace patterns from the earlier Jakarta EE transition. WildFly 38 assumes:</p>



<ul class="wp-block-list">
<li>Full Jakarta EE 10 compliance</li>



<li>Removal of deprecated subsystem elements</li>
</ul>



<p>Staging through WildFly 36 means you pass through a version that:</p>



<ul class="wp-block-list">
<li>Consolidated many breaking changes</li>



<li>Served as a stepping stone for configuration syntax modernization</li>



<li>Was widely adopted and battle-tested by community users before WildFly 38</li>
</ul>



<p>This reduces the “shock” of incompatible subsystems in one big jump.</p>



<p>     2. <strong>Migration Tool Patching</strong></p>



<p>The WildFly Migration Tool is better optimized when configurations change incrementally:</p>



<ul class="wp-block-list">
<li>From 26 to 36, the migration tool handles early syntax conversions</li>



<li>From 36 to 38, it can focus on more recent modular and namespace adjustments</li>
</ul>



<p>If you try to leap directly from 26 to 38, the migration tool may:</p>



<ul class="wp-block-list">
<li>Miss subtle differences</li>



<li>Produce overly noisy reports</li>



<li>Increase your manual remediation effort</li>
</ul>



<p>Staging through 36 results in cleaner migration scripts, fewer manual manual fixes, and a more predictable process.</p>



<p>    3. <strong>Security and Subsystem Consistency</strong></p>



<p>Between 26 and 38, several subsystems saw significant reconfiguration:</p>



<ul class="wp-block-list">
<li>Elytron security policy changes</li>



<li>Credential store formats</li>



<li>Datasource definitions (Oracle and others became stricter)</li>



<li>Logging and management interfaces</li>
</ul>



<p>WildFly 36 introduced many of these changes incrementally so that:</p>



<ul class="wp-block-list">
<li>Administrators could adapt</li>



<li>Tooling could reflect real-world environments before further evolution in WildFly 38</li>
</ul>



<p>This made 36 a natural “landing zone” between the older 26 semantics and the newer 38 mechanics.</p>



<h2 class="wp-block-heading" id="h-migration-flow">Migration Flow</h2>



<p>The migration from WildFly 26 to WildFly 38 is intentionally performed in two controlled phases. This staged approach reduces risk, isolates problems earlier, and provides clear validation points before reaching the final production target.</p>



<h3 class="wp-block-heading" id="h-step-1-baseline-wildfly-26-current-state">Step 1 &#8211; Baseline: WildFly 26 (Current State)</h3>



<p>The starting point is the existing WildFly 26 environment, typically running on Java 11 and hosting a stable, production-tested application.</p>



<p>At this stage:</p>



<ul class="wp-block-list">
<li>The platform is known and stable</li>



<li>Configuration reflects historical decisions and legacy syntax</li>



<li>Security, datasources, and deployments are tightly coupled to this version</li>
</ul>



<p>No changes are made here except:</p>



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



<li>Configuration review</li>



<li>Inventory of customizations</li>
</ul>



<p>WildFly 26 remains untouched and fully rollback-capable throughout the migration.</p>



<h3 class="wp-block-heading" id="h-step-2-first-migration-wildfly-26-to-wildfly-36">Step 2 &#8211; First Migration: WildFly 26 to WildFly 36</h3>



<p>The first technical migration is performed using the <strong>WildFly migration tool</strong>, targeting WildFly 36.</p>



<p>This step focuses on:</p>



<ul class="wp-block-list">
<li>Converting legacy configuration syntax</li>



<li>Removing deprecated or removed subsystems</li>



<li>Preparing the configuration for newer Jakarta EE expectations</li>
</ul>



<p>WildFly 36 acts as a transition platform:</p>



<ul class="wp-block-list">
<li>It supports Java 17</li>



<li>It consolidates many breaking changes introduced after WildFly 26</li>



<li>It allows configuration issues to be addressed incrementally rather than all at once</li>
</ul>



<p>At this stage, the goal is not production readiness, but configuration correctness.</p>



<h3 class="wp-block-heading" id="h-step-3-staging-and-validation-on-wildfly-36">Step 3 &#8211; Staging and Validation on WildFly 36</h3>



<p>Once the configuration is migrated, WildFly 36 is used as a staging environment for in-depth validation.</p>



<p>Key activities include:</p>



<ul class="wp-block-list">
<li>Running WildFly on Java 17</li>



<li>Rebuilding or adjusting Elytron security components</li>



<li>Recreating credential stores</li>



<li>Validating datasource connectivity</li>



<li>Starting the application and ensuring it runs</li>



<li>Performing smoke tests and basic functional checks</li>



<li>Allowing customer or application teams to execute targeted tests</li>
</ul>



<p>When all tests pass:</p>



<ul class="wp-block-list">
<li>Configuration is frozen</li>



<li>Known issues are documented</li>



<li>The environment is considered stable enough to move forward</li>
</ul>



<p>This step significantly reduces uncertainty before the final upgrade.</p>



<h3 class="wp-block-heading" id="h-step-4-second-migration-wildfly-36-to-wildfly-38">Step 4 – Second Migration: WildFly 36 to WildFly 38</h3>



<p>With a validated configuration on WildFly 36, the second migration step is executed toward WildFly 38.</p>



<p>This phase:</p>



<ul class="wp-block-list">
<li>Uses the migration tool again</li>



<li>Applies final syntax and subsystem adjustments</li>



<li>Introduces stricter validation and enforcement present in WildFly 38</li>
</ul>



<p>Because most major changes were already handled in the previous step, this migration is usually:</p>



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



<li>Cleaner</li>



<li>Easier to troubleshoot</li>
</ul>



<p>WildFly 38 now represents the target platform, not just a test environment.</p>



<h3 class="wp-block-heading" id="h-step-5-final-validation-on-wildfly-38">Step 5 &#8211; Final Validation on WildFly 38</h3>



<p>Before production rollout, WildFly 38 undergoes final validation:</p>



<ul class="wp-block-list">
<li>Server startup and stability checks</li>



<li>Security and datasource verification</li>



<li>Application deployment validation</li>



<li>Final smoke and regression tests</li>
</ul>



<p>At this point, the platform should behave identically (or better) than WildFly 26, with the added benefits of:</p>



<ul class="wp-block-list">
<li>A modern Java runtime</li>



<li>Up-to-date Jakarta EE support</li>



<li>Improved security and maintainability</li>
</ul>



<h3 class="wp-block-heading" id="h-step-6-production-rollout-and-retirement-of-wildfly-26">Step 6 &#8211; Production Rollout and Retirement of WildFly 26</h3>



<p>Once validated:</p>



<ul class="wp-block-list">
<li>WildFly 38 is promoted to production</li>



<li>Traffic is switched according to the customer’s deployment strategy</li>



<li>WildFly 26 is retired in a controlled manner</li>
</ul>



<p>Rollback remains trivial until decommissioning is complete, since:</p>



<ul class="wp-block-list">
<li>WildFly 26 was never modified</li>



<li>All migrations were performed side-by-side</li>
</ul>



<h2 class="wp-block-heading" id="h-summary">Summary</h2>



<p>This staged migration approach ensures that:</p>



<ul class="wp-block-list">
<li>Configuration changes are isolated and understandable</li>



<li>Security and infrastructure issues are discovered early</li>



<li>Application teams have time to adapt and validate</li>



<li>Production risk is minimized</li>
</ul>



<p>By treating WildFly 36 as a stabilization checkpoint, the transition to WildFly 38 becomes predictable, controlled, and repeatable.</p>



<p>Don’t hesitate to reach out to discuss your WildFly or JBoss EAP migration project, we’ll be happy to help you move forward safely, efficiently, and with full transparency.</p>



<p>Related interesting blog: <a href="https://www.dbi-services.com/blog/jboss-eap-vs-wildfly-whats-the-difference/">JBoss EAP vs Wildfly</a> </p>
<p>L’article <a href="https://www.dbi-services.com/blog/migrating-from-wildfly-26-to-wildfly-38/">Migrating from WildFly 26 to WildFly 38</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/migrating-from-wildfly-26-to-wildfly-38/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Securing an Existing Unsecure GoldenGate Installation</title>
		<link>https://www.dbi-services.com/blog/securing-an-existing-unsecure-goldengate-installation/</link>
					<comments>https://www.dbi-services.com/blog/securing-an-existing-unsecure-goldengate-installation/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Fri, 07 Nov 2025 07:00:00 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[Database Administration & Monitoring]]></category>
		<category><![CDATA[Database management]]></category>
		<category><![CDATA[Oracle]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=41467</guid>

					<description><![CDATA[<p>You might have an existing unsecure GoldenGate installation that you would like to secure, whether it&#8217;s for security reasons or because you would like to dissociate the installation and its securing process. After searching everywhere in the Oracle documentation for how to proceed, I decided to try, investigate and eventually even asked Oracle directly. Here [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/securing-an-existing-unsecure-goldengate-installation/">Securing an Existing Unsecure GoldenGate Installation</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>You might have an <strong>existing unsecure GoldenGate installation</strong> that you would like to secure, whether it&#8217;s for <strong>security reasons</strong> or because you would like to dissociate the installation and its securing process. After searching everywhere in the Oracle documentation for how to proceed, I decided to try, investigate and eventually even asked Oracle directly. Here is the answer.</p>



<p>For a <em>TL;DR</em> version of the answer, please go to the end of the blog, but in the meantime, here was my reasoning.</p>



<h2 class="wp-block-heading" id="h-setup-differences-between-a-secure-and-unsecure-goldengate-installation">Setup differences between a secure and unsecure GoldenGate installation</h2>



<h3 class="wp-block-heading" id="h-installation-differences"><strong>Installation differences</strong></h3>



<p>From an <strong><em>installation perspective</em></strong>, the <strong>difference between a secure and unsecure installation is narrow</strong>. I talked earlier about <a href="https://www.dbi-services.com/blog/goldengate-23ai-installation-graphic-and-silent-mode-comparison-for-automation/" target="_blank" rel="noreferrer noopener">graphic and silent GoldenGate installations</a>, and for the silent installation, the following response file parameters are the only one involved in this security aspect:</p>



<pre class="wp-block-code"><code># SECTION C - SECURITY MANAGER
SECURITY_ENABLED=false

# SECTION H - SECURITY
TLS_1_2_ENABLED=false
TLS_1_3_ENABLED=false
FIPS_ENABLED=false
SERVER_CERTIFICATE=
SERVER_CERTIFICATE_KEY_FILE=
SERVER_CA_CERTIFICATES_FILE=
CLIENT_CERTIFICATE=
CLIENT_CERTIFICATE_KEY_FILE=
CLIENT_CA_CERTIFICATES_FILE</code></pre>



<p><code>*_ENABLED</code> parameters are just flags that should be set to true to secure the installation (at least for <code>SECURITY_ENABLED</code> and one TLS parameter), and then you need to provide the certificate files (client and server, three for each).</p>



<p>To summarize, there is not much you have to do to configure a <strong>secure</strong> GoldenGate setup. So it shouldn&#8217;t be that difficult to enable these security features after installation: one flag, and a few certificates.</p>



<h3 class="wp-block-heading" id="h-configuration-differences"><strong>Configuration differences</strong></h3>



<p>From a <strong><em>configuration perspective</em></strong>, there are not many differences either. Looking at the <code>deploymentConfiguration.dat</code> file for both secure and unsecure service managers, the only difference lies in the <code>SecurityManager.config.securityDetails</code> section. After cleaning what is similar, here are the differences:</p>



<pre class="wp-block-code"><code># Secure installation
            "securityDetails": {
                "network": {
                    "common": {
                        "fipsEnabled": false,
                    },
                    "inbound": {
                        "authMode": "clientOptional_server",
                        "cipherSuites": &#091;
                            "TLS_AES_256_GCM_SHA384",
                            "TLS_AES_128_GCM_SHA256",
                            "TLS_CHACHA20_POLY1305_SHA256"
                        ],
                        "protocolVersion": "TLS_ALL"
                    },
                    "outbound": {
                        "authMode": "clientOptional_server",
                    }
                }
            },

# Unsecure installation
            "securityDetails": {
                "network": {
                    "common": {
                        "fipsEnabled": false,
                    },
                    "inbound": {
                        "authMode": "clientOptional_server",
                        "cipherSuites": "^((?!anon|RC4|NULL|3DES).)*$",
                    },
                    "outbound": {
                        "authMode": "client_server",
                    }
                }
            },</code></pre>



<p>Basically, <code>securityDetails.outbound.authMode</code> is set to <code>clientOptional_server</code> on one side, and <code>client_server</code> on the other. And the unsecure configuration has a different <code>securityDetails.inbound.cipherSuites</code> parameter, and a missing <code>securityDetails.protocolVersion</code> parameter.</p>



<p>But nothing in the configuration points to the wallet files, locates in <code>$OGG_ETC_HOME/ssl</code>. So, how to add them here ?</p>



<h2 class="wp-block-heading" id="h-can-you-secure-an-unsecure-goldengate-installation">Can you secure an unsecure GoldenGate installation ?</h2>



<p>When connecting to an unsecure GoldenGate service manager, you still have the ability to <strong>add and manage certificates from the UI</strong>, the same way you would do on a secure installation:</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="1024" height="722" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/11/image-1024x722.png" alt="Certificates Management tab on an unsecured GoldenGate service manager UI" class="wp-image-41468" style="width:600px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/11/image-1024x722.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/11/image-300x212.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/11/image-768x541.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/11/image.png 1200w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>It is unfortunate, but just <strong>adding the certificates from the UI doesn&#8217;t make your installation secure</strong>. In fact, even after modifying the <code>deploymentConfiguration.dat</code> files, the last piece missing in the configuration, as described above, it doesn&#8217;t work. You will only end up with a <strong>broken installation</strong>, even when doing the same with all your deployments and restarting everything.</p>



<h3 class="wp-block-heading" id="h-is-there-really-no-way-to-secure-an-already-existing-goldengate-installation">Is there really no way to secure an already existing GoldenGate installation ?</h3>



<p>Unfortunately, not at this point. And it was confirmed earlier this week on the <a href="https://community.oracle.com/mosc/discussion/4593112/securing-an-already-existing-unsecured-goldengate-23ai-installation" target="_blank" rel="noreferrer noopener">MOSC forums</a> by <strong>Gopal Gaur</strong>, <em>Senior Principal Software Engineer</em> working on GoldenGate at Oracle.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>You can not convert non secure deployment into secure deployment, you will need a new service manager that supports sever side SSL/TLS.</p>



<p>You can not convert non secure deployment into secure deployment at this stage, we have an opened enhancement for this.</p>
</blockquote>



<p>To wrap up, bad news: <strong>it is not possible to secure an existing GoldenGate installation</strong>, but good news, <strong>Oracle is apparently working</strong> on it. In the meantime, just <a href="https://www.dbi-services.com/blog/goldengate-23ai-installation-graphic-and-silent-mode-comparison-for-automation/">re-install GoldenGate</a>&#8230;</p>
<p>L’article <a href="https://www.dbi-services.com/blog/securing-an-existing-unsecure-goldengate-installation/">Securing an Existing Unsecure GoldenGate Installation</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/securing-an-existing-unsecure-goldengate-installation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GoldenGate 23ai Installation: Graphic and Silent Mode Comparison for Automation</title>
		<link>https://www.dbi-services.com/blog/goldengate-23ai-installation-graphic-and-silent-mode-comparison-for-automation/</link>
					<comments>https://www.dbi-services.com/blog/goldengate-23ai-installation-graphic-and-silent-mode-comparison-for-automation/#respond</comments>
		
		<dc:creator><![CDATA[Julien Delattre]]></dc:creator>
		<pubDate>Mon, 03 Nov 2025 08:00:00 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[Database Administration & Monitoring]]></category>
		<category><![CDATA[GoldenGate]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[23ai]]></category>
		<category><![CDATA[automated]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[microservices]]></category>
		<category><![CDATA[oggca]]></category>
		<category><![CDATA[Replication]]></category>
		<category><![CDATA[response file]]></category>
		<category><![CDATA[responsefile]]></category>
		<category><![CDATA[service manager]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=40320</guid>

					<description><![CDATA[<p>Automating Oracle installations can sometimes be daunting, given the long list of parameters available. We&#8217;ll compare both graphic and silent installations of GoldenGate 23ai, focusing on building minimalist response files for automation purposes. Prerequisites for GoldenGate installation You can set up GoldenGate in two different ways: For the purpose of this installation, we will use [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/goldengate-23ai-installation-graphic-and-silent-mode-comparison-for-automation/">GoldenGate 23ai Installation: Graphic and Silent Mode Comparison for Automation</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Automating Oracle installations can sometimes be daunting, given the long list of parameters available. We&#8217;ll <strong>compare both graphic and silent installations</strong> of GoldenGate 23ai, focusing on building <strong>minimalist response files for automation</strong> purposes.</p>



<div class="wp-block-yoast-seo-table-of-contents yoast-table-of-contents"><h2>Table of contents</h2><ul><li><a href="#h-prerequisites-for-goldengate-installation" data-level="2">Prerequisites for GoldenGate installation</a></li><li><a href="#h-installing-goldengate-with-the-oui-graphic-installation" data-level="2">Installing GoldenGate with the OUI (graphic installation)</a><ul><li><a href="#h-installing-goldengate-binaries" data-level="3">Installing GoldenGate binaries</a></li><li><a href="#h-installing-the-service-manager-and-the-first-deployment" data-level="3">Installing the Service Manager and the First Deployment</a></li></ul></li><li><a href="#h-installing-goldengate-with-the-cli-silent-installation" data-level="2">Installing GoldenGate with the CLI (silent installation)</a><ul><li><a href="#h-installing-goldengate-binaries-0" data-level="3">Installing GoldenGate binaries</a></li><li><a href="#h-installing-the-service-manager-and-the-first-deployment-0" data-level="3">Installing the Service Manager and the First Deployment</a></li></ul></li><li><a href="#h-adding-or-removing-a-deployment" data-level="2">Adding or Removing a Deployment</a><ul><li><a href="#h-removing-a-deployment" data-level="3">Removing a deployment</a></li></ul></li><li><a href="#h-accessing-the-web-ui" data-level="2">Accessing the Web UI</a></li><li><a href="#h-appendix-oggca-rsp-example" data-level="2">Appendix: oggca.rsp example</a></li></ul></div>



<h2 class="wp-block-heading" id="h-prerequisites-for-goldengate-installation">Prerequisites for GoldenGate installation</h2>



<p>You can set up GoldenGate in two different ways:</p>



<ul class="wp-block-list">
<li>From the base archive, available on <a href="https://edelivery.oracle.com/">eDelivery</a> (V1042871-01.zip for Linux x86-64, for instance)</li>



<li>From the patched archive, updated quarterly and available on the Oracle Support. At the time of writing of this blog, GoldenGate 23.9 is the latest version available (23.10, now called 23.26, was announced but not released yet). You can find the <a href="https://support.oracle.com/knowledge/Oracle%20Database%20Products/3093376_1.html" target="_blank" rel="noreferrer noopener">MOS Document 3093376.1</a> on the subject, or <a href="https://support.oracle.com/knowledge/Oracle%20Database%20Products/2193391_1.html" target="_blank" rel="noreferrer noopener">2193391.1</a> for general patching information on GoldenGate. <strong>Patch 38139663 is the completely patched installation</strong> (we will use this one in the blog), while patch 38139662 is the patch-only archive, applied on an existing GoldenGate installation.</li>
</ul>



<p>For the purpose of this installation, we will use the <code>oracle-database-preinstall</code> rpm, even if we don&#8217;t need all the things it brings. If you plan on installing GoldenGate on an existing Oracle database server, Oracle recommends using a separate user. We will keep <code>oracle</code> here.</p>



<pre class="wp-block-code"><code>&#091;root@vmogg ~] dnf install -y oracle-database-preinstall-23ai
&#091;root@vmogg ~] mkdir -p /u01/stage
&#091;root@vmogg ~] chown oracle:oinstall -R /u01</code></pre>



<p>With the <code>oracle</code> user created through the rpm installation, unzip GoldenGate source file into a stage area:</p>



<pre class="wp-block-code"><code>&#091;root@vmogg ~] su - oracle
&#091;oracle@vmogg ~] cd /u01/stage
&#091;oracle@vmogg stage] unzip -oq p38139663_23902507OGGRU_Linux-x86-64.zip -d /u01/stage/</code></pre>



<h2 class="wp-block-heading" id="h-installing-goldengate-with-the-oui-graphic-installation">Installing GoldenGate with the OUI (graphic installation)</h2>



<h3 class="wp-block-heading" id="h-installing-goldengate-binaries">Installing GoldenGate binaries</h3>



<p>Running the graphic installation of GoldenGate is not any different from what you would do with an Oracle database installation.</p>



<p>After setting up X11 display (out of the scope of this blog), you should first define the <code>OGG_HOME</code> variable to the location of the GoldenGate installation and then run the installer:</p>



<pre class="wp-block-code"><code>&#091;oracle@vmogg ~]$ export OGG_HOME=/u01/app/oracle/product/ogg23ai
&#091;oracle@vmogg ~]$ /u01/stage/fbo_ggs_Linux_x64_Oracle_services_shiphome/Disk1/runInstaller</code></pre>



<p>Bug: depending on the display options you have, you might have a color mismatch on the GoldenGate installation window, most of it appearing black (see this <a href="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_black_window.png" target="_blank" rel="noreferrer noopener">image</a>). If this happens, run the following command before launching the installation: <code>export _JAVA_OPTIONS="-Dsun.java2d.xrender=false"</code></p>



<p>Just click <em>Next</em> on the first step. Starting from GoldenGate 23ai, <strong>Classic Architecture was desupported</strong>, so you don&#8217;t have to worry anymore about which architecture to choose. The Microservices Architecture is the only choice now.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="798" height="596" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_1o5.png" alt="" class="wp-image-40326" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_1o5.png 798w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_1o5-300x224.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_1o5-768x574.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></figure>



<p>Fill in the software location for your installation of GoldenGate. This will match the <code>OGG_HOME</code> environment variable. If the variable is set prior to launching the <code>runInstaller</code>, the software location is filled automatically.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="798" height="596" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_2o5.png" alt="" class="wp-image-40327" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_2o5.png 798w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_2o5-300x224.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_2o5-768x574.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></figure>



<p><em><strong>Step 3</strong></em> is just a summary of the installation. You can save the response file at this stage and use it later to standardize your installations with the silent installation described below. Then, click on <em>Install</em>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="798" height="596" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_3o5-1.png" alt="" class="wp-image-40329" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_3o5-1.png 798w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_3o5-1-300x224.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_3o5-1-768x574.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></figure>



<p>After a few seconds, the installation is complete, and you can exit the installer.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="798" height="596" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_4o5.png" alt="" class="wp-image-40330" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_4o5.png 798w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_4o5-300x224.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_4o5-768x574.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></figure>



<p>If it&#8217;s your first Oracle-related installation on this server, you might have to run the <code>/u01/app/oraInventory/orainstRoot.sh</code> script as <code>root</code> when prompted to do so.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="576" height="321" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_orainstRoot-1.png" alt="" class="wp-image-40336" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_orainstRoot-1.png 576w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_orainstRoot-1-300x167.png 300w" sizes="auto, (max-width: 576px) 100vw, 576px" /></figure>



<pre class="wp-block-code"><code>&#091;root@vmogg ~]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.</code></pre>



<p>The binary installation is complete.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="798" height="596" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_5o5.png" alt="" class="wp-image-40331" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_5o5.png 798w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_5o5-300x224.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/ogg_installation_core_5o5-768x574.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></figure>



<p></p>



<h3 class="wp-block-heading" id="h-installing-the-service-manager-and-the-first-deployment">Installing the Service Manager and the First Deployment</h3>



<p>Once the binaries are installed, with the same <code>oracle</code> X11 terminal, run the <code>oggca.sh</code> script located in the <code>$OGG_HOME/bin</code> directory:</p>



<pre class="wp-block-code"><code>&#091;oracle@vmogg ~]$ export OGG_HOME=/u01/app/oracle/product/ogg23ai
&#091;oracle@vmogg ~]$ $OGG_HOME/bin/oggca.sh</code></pre>



<p>On the first step (see below), you will have:</p>



<ul class="wp-block-list">
<li><em><strong>Software Home</strong></em>, which contains the GoldenGate binaries, also called <code>$OGG_HOME</code></li>



<li><em><strong>Deployment Home</strong></em>, filled with the location of the <strong>service manager directory</strong> (and not the GoldenGate deployment, thank you Oracle for this one…).</li>



<li><strong><em>Port</em></strong> (default is 7809) of the service manager. This will be the main point of entry for the web UI.</li>



<li><em><strong>Register as a service/system daemon</strong></em>, if you want GoldenGate to be a service on your server.</li>



<li><strong><em>Integrate with XAG</em></strong>, for a GoldenGate RAC installation (out of the scope of this blog).</li>



<li><strong><em>Enable Security</em></strong>, with the associated certificates and key. You can leave this unchecked if you just want to test the GoldenGate installation process.</li>



<li>We leave the rest unchecked.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="798" height="596" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_1o7.png" alt="Step 1 out of 7 of GoldenGate graphic installation with oggca.sh" class="wp-image-41096" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_1o7.png 798w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_1o7-300x224.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_1o7-768x574.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></figure>



<p>Next, fill in the credentials for the <strong>service manager</strong>. Enabling <strong>Strong Password Policy</strong> will force you to enter a secure password.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="798" height="596" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_2o7.png" alt="Step 2 out of 7 of GoldenGate graphic installation with oggca.sh" class="wp-image-41097" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_2o7.png 798w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_2o7-300x224.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_2o7-768x574.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></figure>



<p>In previous versions of GoldenGate, you could first set up the service manager and wait before configuring your first deployment. It is now mandatory to set up the first deployment:</p>



<ul class="wp-block-list">
<li><strong><em>Deployment Name</em></strong>: <code>ogg_test_01</code> for this installation. It is not just cosmetic, you will refer to this name for connection, in the <code>adminclient</code> and on the Web UI.</li>



<li><strong><em>Deployment Home</em></strong>: Path to the deployment home. Logs, trail files and configuration will sit there.</li>



<li><strong><em>Ports</em></strong>: Four ports need to be filled here. I would recommend using the default ports for the first deployment (7810, 7811, 7812 and 7813), or ports following the service manager port (7809). For a <a href="#h-adding-or-removing-a-deployment">second deployment</a>, you can continue with the following ports (7814, 7815, 7816, 7817), or keep the same units digit (7820, 7821, 7822, 7823) for a better understanding of your GoldenGate infrastructure.</li>



<li><strong><em>Remote Metrics for the Deployment</em></strong>: out of the scope of this blog, not needed for a basic GoldenGate installation.</li>



<li><strong><em>Security</em></strong>: If you secured your service manager earlier in the previous step, you should secure your deployment here, providing keys and certificates.</li>



<li><strong><em>Replication Options</em></strong>: <code>TNS_ADMIN</code> could already be filled, otherwise just specify its path. GoldenGate will look for TNS entries here. You should also fill in the replication schema name.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="798" height="596" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_3o7.png" alt="Step 3 out of 7 of GoldenGate graphic installation with oggca.sh" class="wp-image-41094" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_3o7.png 798w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_3o7-300x224.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_3o7-768x574.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></figure>



<p>Later, fill in the <strong>credentials for the deployment</strong>. They can be different from the service manager credentials, or you can check the box to keep the same credentials.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="798" height="596" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_4o7.png" alt="Step 4 out of 7 of GoldenGate graphic installation with oggca.sh" class="wp-image-41093" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_4o7.png 798w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_4o7-300x224.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_4o7-768x574.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></figure>



<p>In the summary screen, review your configuration, and save the response file for later if required. Click on <strong><em>Finish</em></strong> to start the installation.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="798" height="596" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_5o7.png" alt="Step 5 out of 7 of GoldenGate graphic installation with oggca.sh" class="wp-image-41095" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_5o7.png 798w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_5o7-300x224.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_5o7-768x574.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></figure>



<p>The installation should take a few seconds:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="798" height="596" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_6o7.png" alt="Step 6 out of 7 of GoldenGate graphic installation with oggca.sh" class="wp-image-41098" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_6o7.png 798w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_6o7-300x224.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_installation_oggca_6o7-768x574.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></figure>



<p>That&#8217;s it, you have successfully installed GoldenGate 23ai ! Go to the <a href="#h-accessing-the-web-ui">web UI</a> section for how to connect to your GoldenGate environment.</p>



<h2 class="wp-block-heading" id="h-installing-goldengate-with-the-cli-silent-installation">Installing GoldenGate with the CLI (silent installation)</h2>



<h3 class="wp-block-heading" id="h-installing-goldengate-binaries-0">Installing GoldenGate binaries</h3>



<p>To perform the GoldenGate installation process in silent mode, you can either use a response file containing the arguments needed for the installation or give these arguments in the command line.</p>



<p>For the GoldenGate binaries installation, create a <code>oggcore_23ai.rsp</code> file, changing <code>SOFTWARE_LOCATION</code>, <code>INVENTORY_LOCATION</code> and <code>UNIX_GROUP_NAME</code> as needed:</p>



<pre class="wp-block-code"><code>&#091;oracle@vmogg ~]$ cat oggcore_23ai.rsp
oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v23_1_0
INSTALL_OPTION=ORA23ai
SOFTWARE_LOCATION=/u01/app/oracle/product/ogg23ai
INVENTORY_LOCATION=/u01/app/oraInventory
UNIX_GROUP_NAME=oinstall</code></pre>



<p>Then, run the installer with the <code>-silent</code> and <code>-responseFile</code> options:</p>



<pre class="wp-block-code"><code>&#091;oracle@vmogg ~]$ /u01/stage/fbo_ggs_Linux_x64_Oracle_services_shiphome/Disk1/runInstaller -silent -responseFile /home/oracle/oggcore_23ai.rsp
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 17094 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 4095 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2025-09-24_09-53-23AM. Please wait ...
You can find the log of this install session at:
 /u01/app/oraInventory/logs/installActions2025-09-24_09-53-23AM.log

As a root user, run the following script(s):
	1. /u01/app/oraInventory/orainstRoot.sh



Successfully Setup Software.
The installation of Oracle GoldenGate Services was successful.
Please check '/u01/app/oraInventory/logs/silentInstall2025-09-24_09-53-23AM.log' for more details.</code></pre>



<p>Same thing as with the graphic installation: if it&#8217;s the first time you run an Oracle-related installation on this server, run the <code>orainstRoot.sh</code> script as <code>root</code>:</p>



<pre class="wp-block-code"><code>&#091;root@vmogg ~]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.</code></pre>



<p></p>



<h3 class="wp-block-heading" id="h-installing-the-service-manager-and-the-first-deployment-0">Installing the Service Manager and the First Deployment</h3>



<p>Once the binaries are installed, run the <code>oggca.sh</code> script with the response file corresponding to the service manager and deployment that you want to create. The content of the response file <code>oggca.rsp</code> should be adapted to your needs, but I integrated a full example in the appendix below.</p>



<pre class="wp-block-code"><code>&#091;oracle@vmogg ~]$ /u01/app/oracle/product/ogg23ai/bin/oggca.sh -silent -responseFile /home/oracle/oggca.rsp

As part of the process of registering Service Manager as a system daemon, the following steps will be performed:
	1- The deployment will be stopped before registering the Service Manager as a daemon.
	2- A new popup window will show the details of the script used to register the Service Manager as a daemon.
	3- After the register script is executed, the Service Manager daemon will be started in the background and the deployment will be automatically restarted.

Click "OK" to continue.

In order to register Service Manager as a system service/daemon, as a "root" user, execute the following script:
	(1). /u01/app/oracle/product/ogg23ai_SM/bin/registerServiceManager.sh

To execute the configuration scripts:
  1.Open a terminal window
  2.Login as "root"
  3.Run the script


Successfully Setup Software.</code></pre>



<p>If you asked for the creation of a service, then run the following command as <code>root</code>:</p>



<pre class="wp-block-code"><code>&#091;root@vmogg ~]# /u01/app/oracle/product/ogg23ai_SM/bin/registerServiceManager.sh
Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
----------------------------------------------------
     Oracle GoldenGate Install As Service Script
----------------------------------------------------
OGG_HOME=/u01/app/oracle/product/ogg23ai
OGG_CONF_HOME=/u01/app/oracle/product/ogg23ai_SM/etc/conf
OGG_VAR_HOME=/u01/app/oracle/product/ogg23ai_SM/var
OGG_USER=oracle
Running OracleGoldenGateInstall.sh...
Created symlink /etc/systemd/system/multi-user.target.wants/OracleGoldenGate.service → /etc/systemd/system/OracleGoldenGate.service.
Successfully Setup Software.</code></pre>



<p><strong>Warning:</strong> If you plan on automating a GoldenGate installation and setup, make sure response files can only be read by the <code>oracle</code> user, and clean the response files if you need to keep passwords in plain text inside the file.</p>



<h2 class="wp-block-heading" id="h-adding-or-removing-a-deployment">Adding or Removing a Deployment</h2>



<p>To add or remove a deployment to an existing service manager, you can do that graphically with <code>oggca.sh</code>, or in silent mode. In silent mode, I give below a minimal response file example to add a new deployment (removing everything that would be already configured, like service manager properties). Of course, the deployment name, paths, and ports should be different from an existing deployment. And if your deployment is secured, you should fill <code>SECTION H - SECURITY</code> in the same way you did for the first installation, and specify <code>SECURITY_ENABLED=true</code> in <code>SECTION C - SERVICE MANAGER</code>.</p>



<h4 class="wp-block-heading" id="h-adding-a-deployment">Adding a deployment</h4>



<pre class="wp-block-code"><code>oracle.install.responseFileVersion=/oracle/install/rspfmt_oggca_response_schema_v23_1_0

# SECTION A - GENERAL
CONFIGURATION_OPTION=ADD
DEPLOYMENT_NAME=ogg_test_02

# SECTION B - ADMINISTRATOR ACCOUNT
ADMINISTRATOR_USER=ogg
ADMINISTRATOR_PASSWORD=ogg_password
DEPLOYMENT_ADMINISTRATOR_USER=ogg
DEPLOYMENT_ADMINISTRATOR_PASSWORD=ogg_password

# SECTION C - SERVICE MANAGER
HOST_SERVICEMANAGER=your_host
PORT_SERVICEMANAGER=7809
SECURITY_ENABLED=false
STRONG_PWD_POLICY_ENABLED=false

# SECTION E - SOFTWARE HOME
OGG_SOFTWARE_HOME=/u01/app/oracle/product/ogg23ai

# SECTION F - DEPLOYMENT DIRECTORIES
OGG_DEPLOYMENT_HOME=/u01/app/oracle/product/ogg_test_02
OGG_ETC_HOME=/u01/app/oracle/product/ogg_test_02/etc
OGG_CONF_HOME=/u01/app/oracle/product/ogg_test_02/etc/conf
OGG_SSL_HOME=/u01/app/oracle/product/ogg_test_02/etc/ssl
OGG_VAR_HOME=/u01/app/oracle/product/ogg_test_02/var
OGG_DATA_HOME=/u01/app/oracle/product/ogg_test_02/var/lib/data
OGG_ARCHIVE_HOME=/u01/app/oracle/product/ogg_test_02/var/lib/archive

# SECTION G - ENVIRONMENT VARIABLES
ENV_LD_LIBRARY_PATH=${OGG_HOME}/lib/instantclient:${OGG_HOME}/lib
ENV_TNS_ADMIN=/u01/app/oracle/network/admin
ENV_STREAMS_POOL_SIZE=
ENV_USER_VARS=

# SECTION H - SECURITY
TLS_1_2_ENABLED=false
TLS_1_3_ENABLED=false
FIPS_ENABLED=false
SERVER_CERTIFICATE=
SERVER_CERTIFICATE_KEY_FILE=
SERVER_CA_CERTIFICATES_FILE=
CLIENT_CERTIFICATE=
CLIENT_CERTIFICATE_KEY_FILE=
CLIENT_CA_CERTIFICATES_FILE=

# SECTION I - SERVICES
ADMINISTRATION_SERVER_ENABLED=true
PORT_ADMINSRVR=7820
DISTRIBUTION_SERVER_ENABLED=true
PORT_DISTSRVR=7821
NON_SECURE_DISTSRVR_CONNECTS_TO_SECURE_RCVRSRVR=false
RECEIVER_SERVER_ENABLED=true
PORT_RCVRSRVR=7822
METRICS_SERVER_ENABLED=true
METRICS_SERVER_IS_CRITICAL=false
PORT_PMSRVR=7823
PMSRVR_DATASTORE_TYPE=BDB
PMSRVR_DATASTORE_HOME=
ENABLE_DEPLOYMENT_REMOTE_METRICS=false
DEPLOYMENT_REMOTE_METRICS_LISTENING_HOST=
DEPLOYMENT_REMOTE_METRICS_LISTENING_PORT=0

# SECTION J - REPLICATION OPTIONS
OGG_SCHEMA=OGGADMIN</code></pre>



<h3 class="wp-block-heading" id="h-removing-a-deployment">Removing a deployment</h3>



<p>Same thing for the removal of an existing deployment, where the minimal response file is even simpler. You just need the deployment name and service manager information.</p>



<pre class="wp-block-code"><code>oracle.install.responseFileVersion=/oracle/install/rspfmt_oggca_response_schema_v23_1_0

# SECTION A - GENERAL
CONFIGURATION_OPTION=REMOVE
DEPLOYMENT_NAME=ogg_test_02

# SECTION B - ADMINISTRATOR ACCOUNT
ADMINISTRATOR_USER=ogg
ADMINISTRATOR_PASSWORD=ogg_password
DEPLOYMENT_ADMINISTRATOR_USER=ogg
DEPLOYMENT_ADMINISTRATOR_PASSWORD=ogg_password

# SECTION C - SERVICE MANAGER
HOST_SERVICEMANAGER=your_host
PORT_SERVICEMANAGER=7809
SECURITY_ENABLED=false

# SECTION H - SECURITY
TLS_1_2_ENABLED=false
TLS_1_3_ENABLED=false
FIPS_ENABLED=false
SERVER_CERTIFICATE=
SERVER_CERTIFICATE_KEY_FILE=
SERVER_CA_CERTIFICATES_FILE=
CLIENT_CERTIFICATE=
CLIENT_CERTIFICATE_KEY_FILE=
CLIENT_CA_CERTIFICATES_FILE=

# SECTION K - REMOVE DEPLOYMENT OPTIONS
REMOVE_DEPLOYMENT_FROM_DISK=true</code></pre>



<h2 class="wp-block-heading" id="h-accessing-the-web-ui">Accessing the Web UI</h2>



<p>Whether you installed GoldenGate graphically or silently, you will now be able to connect to the Web UI. Except for the design, it is pretty much the same thing as the Microservices Architecture of GoldenGate 19c and 21c. Connect to the hostname of your GoldenGate installation, on the service manager port: <code>http://hostname:port</code>, or <code>https://hostname:post</code> if the installation is secured.</p>



<p>With the example of this blog:</p>



<ul class="wp-block-list">
<li><code>7809</code> — Service manager</li>



<li><code>7810</code> — Administration service of the first deployment you created, for managing extracts and replicats</li>



<li><code>7811</code> — Distribution service, to send trail files to other GoldenGate deployments.</li>



<li><code>7812</code> — Receiver service, to receive trail files.</li>



<li><code>7813</code> — Performance metrics service, for extraction and replication analysis.</li>
</ul>



<p>Log in either with the service manager credentials, or with the deployment credentials:</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="986" height="888" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_webui_connection.png" alt="" class="wp-image-41353" style="width:500px" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_webui_connection.png 986w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_webui_connection-300x270.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_webui_connection-768x692.png 768w" sizes="auto, (max-width: 986px) 100vw, 986px" /></figure>



<h4 class="wp-block-heading" id="h-service-manager-web-ui">Service Manager Web UI</h4>



<p>The service manager web UI allows you to stop and start deployment services, manage users and certificates. You will hardly ever use it, even less since deployment creation/removal will be done through <code>oggca.sh</code> anyway. If you have many deployments, it can still be useful to log in to these deployments quickly.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="315" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_sm_webui-1024x315.png" alt="" class="wp-image-41354" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_sm_webui-1024x315.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_sm_webui-300x92.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_sm_webui-768x237.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_sm_webui-1536x473.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_sm_webui-2048x631.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h4 class="wp-block-heading" id="h-deployment-web-ui">Deployment Web UI</h4>



<p>The deployment web UI, however, is used throughout the whole lifecycle of your GoldenGate replications. You manage extracts, replicats, distribution paths, and more.</p>



<p><em><strong>NB for the newcomers</strong></em>: you don&#8217;t have to bookmark all the services of a deployment. Once logged in to the administration service of a deployment, you can just jump between services through the UI, by clicking on the services on the top bar.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="499" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_webui_depl-1024x499.png" alt="" class="wp-image-41355" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_webui_depl-1024x499.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_webui_depl-300x146.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_webui_depl-768x375.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_webui_depl-1536x749.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ogg_webui_depl-2048x999.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>You now have a full GoldenGate 23ai installation, and can start configuring your first replication !</p>



<h2 class="wp-block-heading" id="h-appendix-oggca-rsp-example">Appendix: <code>oggca.rsp</code> example</h2>



<p>Here is an example of a response file to create both the service manager and the first deployment of a GoldenGate installation. I included at the end the full file with Oracle annotations.</p>



<pre class="wp-block-code"><code>oracle.install.responseFileVersion=/oracle/install/rspfmt_oggca_response_schema_v23_1_0

# SECTION A - GENERAL
CONFIGURATION_OPTION=ADD
DEPLOYMENT_NAME=ogg_test_01

# SECTION B - ADMINISTRATOR ACCOUNT
ADMINISTRATOR_USER=ogg
ADMINISTRATOR_PASSWORD=ogg_password
DEPLOYMENT_ADMINISTRATOR_USER=ogg
DEPLOYMENT_ADMINISTRATOR_PASSWORD=ogg_password

# SECTION C - SERVICE MANAGER
SERVICEMANAGER_DEPLOYMENT_HOME=/u01/app/oracle/product/ogg23ai_SM
SERVICEMANAGER_ETC_HOME=/u01/app/oracle/product/ogg23ai_SM/etc
SERVICEMANAGER_CONF_HOME=/u01/app/oracle/product/ogg23ai_SM/etc/conf
SERVICEMANAGER_SSL_HOME=/u01/app/oracle/product/ogg23ai_SM/etc/ssl
SERVICEMANAGER_VAR_HOME=/u01/app/oracle/product/ogg23ai_SM/var
SERVICEMANAGER_DATA_HOME=/u01/app/oracle/product/ogg23ai_SM/var/lib/data
SERVICEMANAGER_ARCHIVE_HOME=/u01/app/oracle/product/ogg23ai_SM/var/lib/archive
HOST_SERVICEMANAGER=your_host
PORT_SERVICEMANAGER=7809
SECURITY_ENABLED=false
STRONG_PWD_POLICY_ENABLED=false
CREATE_NEW_SERVICEMANAGER=true
REGISTER_SERVICEMANAGER_AS_A_SERVICE=true
INTEGRATE_SERVICEMANAGER_WITH_XAG=false
EXISTING_SERVICEMANAGER_IS_XAG_ENABLED=false
ENABLE_SERVICE_MANAGER_REMOTE_METRICS=false
SERVICE_MANAGER_REMOTE_METRICS_LISTENING_HOST=
SERVICE_MANAGER_REMOTE_METRICS_LISTENING_PORT=0
PLUGIN_SERVICE_ENABLED=false

# SECTION D - CONFIGURATION SRVICE
CONFIGURATION_SERVICE_ENABLED=false
CONFIGURATION_SERVICE_BACKEND_TYPE=FILESYSTEM
CONFIGURATION_SERVICE_BACKEND_CONNECTION_STRING=
CONFIGURATION_SERVICE_BACKEND_USERNAME=
CONFIGURATION_SERVICE_BACKEND_PASSWORD=
CONFIGURATION_SERVICE_BACKEND_TABLE_NAME=

# SECTION E - SOFTWARE HOME
OGG_SOFTWARE_HOME=/u01/app/oracle/product/ogg23ai

# SECTION F - DEPLOYMENT DIRECTORIES
OGG_DEPLOYMENT_HOME=/u01/app/oracle/product/ogg_test_01
OGG_ETC_HOME=/u01/app/oracle/product/ogg_test_01/etc
OGG_CONF_HOME=/u01/app/oracle/product/ogg_test_01/etc/conf
OGG_SSL_HOME=/u01/app/oracle/product/ogg_test_01/etc/ssl
OGG_VAR_HOME=/u01/app/oracle/product/ogg_test_01/var
OGG_DATA_HOME=/u01/app/oracle/product/ogg_test_01/var/lib/data
OGG_ARCHIVE_HOME=/u01/app/oracle/product/ogg_test_01/var/lib/archive

# SECTION G - ENVIRONMENT VARIABLES
ENV_LD_LIBRARY_PATH=${OGG_HOME}/lib/instantclient:${OGG_HOME}/lib
ENV_TNS_ADMIN=/u01/app/oracle/network/admin
ENV_STREAMS_POOL_SIZE=
ENV_USER_VARS=

# SECTION H - SECURITY
TLS_1_2_ENABLED=false
TLS_1_3_ENABLED=true
FIPS_ENABLED=false
SERVER_CERTIFICATE=
SERVER_CERTIFICATE_KEY_FILE=
SERVER_CA_CERTIFICATES_FILE=
CLIENT_CERTIFICATE=
CLIENT_CERTIFICATE_KEY_FILE=
CLIENT_CA_CERTIFICATES_FILE=

# SECTION I - SERVICES
ADMINISTRATION_SERVER_ENABLED=true
PORT_ADMINSRVR=7810
DISTRIBUTION_SERVER_ENABLED=true
PORT_DISTSRVR=7811
NON_SECURE_DISTSRVR_CONNECTS_TO_SECURE_RCVRSRVR=false
RECEIVER_SERVER_ENABLED=true
PORT_RCVRSRVR=7812
METRICS_SERVER_ENABLED=true
METRICS_SERVER_IS_CRITICAL=false
PORT_PMSRVR=7813
PMSRVR_DATASTORE_TYPE=BDB
PMSRVR_DATASTORE_HOME=
ENABLE_DEPLOYMENT_REMOTE_METRICS=false
DEPLOYMENT_REMOTE_METRICS_LISTENING_HOST=
DEPLOYMENT_REMOTE_METRICS_LISTENING_PORT=0

# SECTION J - REPLICATION OPTIONS
OGG_SCHEMA=OGGADMIN

# SECTION K - REMOVE DEPLOYMENT OPTIONS
REMOVE_DEPLOYMENT_FROM_DISK=</code></pre>



<p>Full file :</p>



<pre class="wp-block-code"><code>################################################################################
## Copyright(c) Oracle Corporation 2016, 2024. All rights reserved.           ##
##                                                                            ##
## Specify values for the variables listed below to customize your            ##
## installation.                                                              ##
##                                                                            ##
## Each variable is associated with a comment. The comments can help to       ##
## populate the variables with the appropriate values.                        ##
##                                                                            ##
## IMPORTANT NOTE: This file should be secured to have read permission only   ##
## by the Oracle user or an administrator who owns this configuration to      ##
## protect any sensitive input values.                                        ##
##                                                                            ##
################################################################################

#-------------------------------------------------------------------------------
# Do not change the following system generated value. 
#-------------------------------------------------------------------------------
oracle.install.responseFileVersion=/oracle/install/rspfmt_oggca_response_schema_v23_1_0


################################################################################
##                                                                            ##
## Oracle GoldenGate deployment configuration options and details             ##
##                                                                            ##
################################################################################

################################################################################
##                                                                            ##
## Instructions to fill out this response file                                ##
## -------------------------------------------                                ##
## Fill out section A, B, and C for general deployment information            ##
## Additionally:                                                              ##  
## Fill out sections D, E, F, G, H, I, and J for adding a deployment          ##
## Fill out section K for removing a deployment                               ##
##                                                                            ##
################################################################################

################################################################################
#                                                                              #
#                          SECTION A - GENERAL                                 #
#                                                                              #
################################################################################

#-------------------------------------------------------------------------------
# Specify the configuration option.
# Specify: 
# - ADD    : for adding a new GoldenGate deployment.
# - REMOVE : for removing an existing GoldenGate deployment. 
#-------------------------------------------------------------------------------
CONFIGURATION_OPTION=ADD

#-------------------------------------------------------------------------------
# Specify the name for the new or existing deployment.
#-------------------------------------------------------------------------------
DEPLOYMENT_NAME=ogg_test_01


################################################################################
#                                                                              #
#                       SECTION B - ADMINISTRATOR ACCOUNT                      #
#                                                                              #
# * If creating a new Service Manager, set the Administrator Account username  #
#   and password.                                                              #
#                                                                              #
# * If reusing an existing Service Manager:                                    #
#     * Enter the credentials for the Administrator Account in                 #
#       the existing Service Manager.                                          #
#                                                                              #
################################################################################

#-------------------------------------------------------------------------------
# Specify the administrator account username for the Service Manager.
#-------------------------------------------------------------------------------
ADMINISTRATOR_USER=ogg

#-------------------------------------------------------------------------------
# Specify the administrator account password for the Service Manager.
#-------------------------------------------------------------------------------
ADMINISTRATOR_PASSWORD=ogg_password

#-------------------------------------------------------------------------------
# Optionally, specify a different administrator account username for the deployment,
# or leave blanks to use the same Service Manager administrator credentials.
#-------------------------------------------------------------------------------
DEPLOYMENT_ADMINISTRATOR_USER=ogg

#-------------------------------------------------------------------------------
# If creating a different administrator account username for the deployment, 
# specify the password for it.
#-------------------------------------------------------------------------------
DEPLOYMENT_ADMINISTRATOR_PASSWORD=ogg_password


################################################################################
#                                                                              #
#                       SECTION C - SERVICE MANAGER                            #
#                                                                              #
################################################################################

#-------------------------------------------------------------------------------
# Specify the location for the Service Manager deployment.
# This is only needed if the Service Manager deployment doesn't exist already.
#-------------------------------------------------------------------------------
SERVICEMANAGER_DEPLOYMENT_HOME=/u01/app/oracle/product/ogg23ai_SM

#-------------------------------------------------------------------------------
# Optionally, specify a custom location for the Service Manager deployment ETC_HOME.
#-------------------------------------------------------------------------------
SERVICEMANAGER_ETC_HOME=/u01/app/oracle/product/ogg23ai_SM/etc

#-------------------------------------------------------------------------------
# Optionally, specify a custom location for the Service Manager deployment CONF_HOME.
#-------------------------------------------------------------------------------
SERVICEMANAGER_CONF_HOME=/u01/app/oracle/product/ogg23ai_SM/etc/conf

#-------------------------------------------------------------------------------
# Optionally, specify a custom location for the Service Manager deployment SSL_HOME.
#-------------------------------------------------------------------------------
SERVICEMANAGER_SSL_HOME=/u01/app/oracle/product/ogg23ai_SM/etc/ssl

#-------------------------------------------------------------------------------
# Optionally, specify a custom location for the Service Manager deployment VAR_HOME.
#-------------------------------------------------------------------------------
SERVICEMANAGER_VAR_HOME=/u01/app/oracle/product/ogg23ai_SM/var

#-------------------------------------------------------------------------------
# Optionally, specify a custom location for the Service Manager deployment DATA_HOME.
#-------------------------------------------------------------------------------
SERVICEMANAGER_DATA_HOME=/u01/app/oracle/product/ogg23ai_SM/var/lib/data

#-------------------------------------------------------------------------------
# Optionally, specify a custom location for the Service Manager deployment ARCHIVE_HOME.
#-------------------------------------------------------------------------------
SERVICEMANAGER_ARCHIVE_HOME=/u01/app/oracle/product/ogg23ai_SM/var/lib/archive

#-------------------------------------------------------------------------------
# Specify the host for the Service Manager.
#-------------------------------------------------------------------------------
HOST_SERVICEMANAGER=your_host

#-------------------------------------------------------------------------------
# Specify the port for the Service Manager.
#-------------------------------------------------------------------------------
PORT_SERVICEMANAGER=7809

#-------------------------------------------------------------------------------
# Specify if SSL / TLS is or will be enabled for the deployment.
# Specify true if SSL / TLS is or will be enabled, false otherwise.
#-------------------------------------------------------------------------------
SECURITY_ENABLED=false

#-------------------------------------------------------------------------------
# Specify if the deployment should enforce a strong password policy.
# Specify true to enable strong password policy management.
#-------------------------------------------------------------------------------
STRONG_PWD_POLICY_ENABLED=false

#-------------------------------------------------------------------------------
# Specify if a new Service Manager should be created. 
# Specify true if a new Service Manager should be created, false otherwise.
#
# This option is only needed when CONFIGURATION_OPTION is ADD.
#-------------------------------------------------------------------------------
CREATE_NEW_SERVICEMANAGER=true

#-------------------------------------------------------------------------------
# Specify if Service Manager should be registered as a service/daemon. This option is mutually exclusive with the 'INTEGRATE_SERVICEMANAGER_WITH_XAG' option.
# Specify true if Service Manager should be registered as a service, false otherwise.
#
# This option is only needed when CONFIGURATION_OPTION is ADD.
# This option does not apply to Windows platform.
#-------------------------------------------------------------------------------
REGISTER_SERVICEMANAGER_AS_A_SERVICE=true
#-------------------------------------------------------------------------------
# Specify if Service Manager should be integrated with XAG. This option is mutually exclusive with the 'REGISTER_SERVICEMANAGER_AS_A_SERVICE' option.
# Specify true if Service Manager should be integrated with XAG, false otherwise.
#
# This option is only needed when CONFIGURATION_OPTION is ADD.
# This option is only supported for Oracle databases.
#-------------------------------------------------------------------------------
INTEGRATE_SERVICEMANAGER_WITH_XAG=false

#-------------------------------------------------------------------------------
# If using an existing Service Manager, specify if it is integrated with XAG.
# Specify true if the existing Service Manager is integrated with XAG, false otherwise.
#
# This option is only needed when CONFIGURATION_OPTION is ADD.
# This option is only supported for Oracle databases.
#-------------------------------------------------------------------------------
EXISTING_SERVICEMANAGER_IS_XAG_ENABLED=false

#-------------------------------------------------------------------------------
# Specify if Remote Metrics using StatsD protocol will be enabled for the Service Manager
# Specify true if Remote Metrics for the Service Manager will be enabled, false otherwise
#-------------------------------------------------------------------------------
ENABLE_SERVICE_MANAGER_REMOTE_METRICS=false

#-------------------------------------------------------------------------------
# If Remote Metrics for the Service Manager will be enabled, specify the listening host
#-------------------------------------------------------------------------------
SERVICE_MANAGER_REMOTE_METRICS_LISTENING_HOST=

#-------------------------------------------------------------------------------
# If Remote Metrics for the Service Manager will be enabled, specify the listening port for that server
#-------------------------------------------------------------------------------
SERVICE_MANAGER_REMOTE_METRICS_LISTENING_PORT=0

#-------------------------------------------------------------------------------
# Specify if the Plugin Service for the Service Manager will be enabled.
# Specify true if the Plugin Service will be enabled, false otherwise.
#-------------------------------------------------------------------------------
PLUGIN_SERVICE_ENABLED=false
###############################################################################
#                                                                             #  
#                    SECTION D - CONFIGURATION SERVICE                        #
#                                                                             #
###############################################################################

#-------------------------------------------------------------------------------
# Specify if the Configuration Service will be enabled.
# Specify true if the Configuration Service will be enabled, false otherwise.
#-------------------------------------------------------------------------------
CONFIGURATION_SERVICE_ENABLED=false

#-------------------------------------------------------------------------------
# Specify the Configuration Service backend type.
# Specify:
# - FILESYSTEM
# - ORACLE_DATABASE
#
# This is only needed if the Configuration Service will be enabled
#-------------------------------------------------------------------------------
CONFIGURATION_SERVICE_BACKEND_TYPE=FILESYSTEM

#-------------------------------------------------------------------------------
# Specify the Configuration Service connection string for the database backend
#
# This is only needed if:
#     * The Configuration Service will be enabled
#     * CONFIGURATION_SERVICE_BACKEND_TYPE is ORACLE_DATABASE
#-------------------------------------------------------------------------------
CONFIGURATION_SERVICE_BACKEND_CONNECTION_STRING=

#-------------------------------------------------------------------------------
# Specify the Configuration Service username for the database backend
#
# This is only needed if: 
#     * The Configuration Service will be enabled
#     * CONFIGURATION_SERVICE_BACKEND_TYPE is ORACLE_DATABASE
#-------------------------------------------------------------------------------
CONFIGURATION_SERVICE_BACKEND_USERNAME=

#-------------------------------------------------------------------------------
# Specify the Configuration Service password for the database backend
#
# This is only needed if: 
#     * The Configuration Service will be enabled
#     * CONFIGURATION_SERVICE_BACKEND_TYPE is ORACLE_DATABASE
#-------------------------------------------------------------------------------
CONFIGURATION_SERVICE_BACKEND_PASSWORD=

#-------------------------------------------------------------------------------
# Specify the Configuration Service table name for the database backend
#
# This is only needed if: 
#     * The Configuration Service will be enabled
#     * CONFIGURATION_SERVICE_BACKEND_TYPE is ORACLE_DATABASE
#-------------------------------------------------------------------------------
CONFIGURATION_SERVICE_BACKEND_TABLE_NAME=
###############################################################################
#                                                                             #
#                       SECTION E - SOFTWARE HOME                             #
#                                                                             #
###############################################################################

#-------------------------------------------------------------------------------
# Specify the existing OGG software home location.
#-------------------------------------------------------------------------------
OGG_SOFTWARE_HOME=/u01/app/oracle/product/OGG_23.9.0.25.07


###############################################################################
#                                                                             #
#                       SECTION F - DEPLOYMENT DIRECTORIES                    #
#                                                                             #
###############################################################################

#-------------------------------------------------------------------------------
# Specify the location of the new or existing OGG deployment.
#-------------------------------------------------------------------------------
OGG_DEPLOYMENT_HOME=/u01/app/oracle/product/ogg_test_01

#-------------------------------------------------------------------------------
# Specify the location for OGG_ETC_HOME.
#-------------------------------------------------------------------------------
OGG_ETC_HOME=/u01/app/oracle/product/ogg_test_01/etc

#-------------------------------------------------------------------------------
# Specify the location for OGG_CONF_HOME.
#-------------------------------------------------------------------------------
OGG_CONF_HOME=/u01/app/oracle/product/ogg_test_01/etc/conf

#-------------------------------------------------------------------------------
# Specify the location for OGG_SSL_HOME.
#-------------------------------------------------------------------------------
OGG_SSL_HOME=/u01/app/oracle/product/ogg_test_01/etc/ssl

#-------------------------------------------------------------------------------
# Specify the location for OGG_VAR_HOME.
#-------------------------------------------------------------------------------
OGG_VAR_HOME=/u01/app/oracle/product/ogg_test_01/var

#-------------------------------------------------------------------------------
# Specify the location for OGG_DATA_HOME.
#-------------------------------------------------------------------------------
OGG_DATA_HOME=/u01/app/oracle/product/ogg_test_01/var/lib/data

#-------------------------------------------------------------------------------
# Specify the location for OGG_ARCHIVE_HOME.
#-------------------------------------------------------------------------------
OGG_ARCHIVE_HOME=/u01/app/oracle/product/ogg_test_01/var/lib/archive

###############################################################################
#                                                                             #
#                       SECTION G - ENVIRONMENT VARIABLES                     #
#                                                                             #
###############################################################################

#-------------------------------------------------------------------------------
# Specify the value for the LD_LIBRARY_PATH environment variable.
#-------------------------------------------------------------------------------
ENV_LD_LIBRARY_PATH=${OGG_HOME}/lib/instantclient:${OGG_HOME}/lib

#-------------------------------------------------------------------------------
# Specify the value for the TNS_ADMIN environment variable.
# This environment variable is only for Oracle Databases.
#-------------------------------------------------------------------------------
ENV_TNS_ADMIN=/u01/app/oracle/network/admin

#-------------------------------------------------------------------------------
# This option is only needed when Sharding will be enabled.
# Specify the value for the STREAMS_POOL_SIZE environment variable.
# This environment variable is only for Oracle Databases.
#-------------------------------------------------------------------------------
ENV_STREAMS_POOL_SIZE=

#-------------------------------------------------------------------------------
# Specify any additional environment variables to be set in the deployment.
#-------------------------------------------------------------------------------
ENV_USER_VARS=


###############################################################################
#                                                                             #
#                           SECTION H - SECURITY                              #
#           This section is only needed if Security will be enabled           #
#                                                                             #
###############################################################################

# ------------------------------------------------------------------------------
# If security will be enabled, specify if TLS v1.2 will be enabled.
# Specify true if TLS v1.2 will be enabled, false otherwise.
#-------------------------------------------------------------------------------
TLS_1_2_ENABLED=false

# ------------------------------------------------------------------------------
# If security will be enabled, specify if TLS v1.3 will be enabled. 
# Specify true if TLS v1.3 will be enabled, false otherwise.
#-------------------------------------------------------------------------------
TLS_1_3_ENABLED=true

#-------------------------------------------------------------------------------
# Specify if FIPS will be enabled.
#-------------------------------------------------------------------------------
FIPS_ENABLED=false

#-------------------------------------------------------------------------------
# If SSL / TLS will be enabled, specify the server certificate 
#-------------------------------------------------------------------------------
SERVER_CERTIFICATE=

#-------------------------------------------------------------------------------
# If importing a server certificate, specify the private key file in PKCS#8 format
# The private key file must not be encrypted
#-------------------------------------------------------------------------------
SERVER_CERTIFICATE_KEY_FILE=

#-------------------------------------------------------------------------------
# If importing a server certificate, optionally specify the CA certificates file
#-------------------------------------------------------------------------------
SERVER_CA_CERTIFICATES_FILE=

#-------------------------------------------------------------------------------
# If SSL / TLS will be enabled, optionally specify the client certificate.
#-------------------------------------------------------------------------------
CLIENT_CERTIFICATE=

#-------------------------------------------------------------------------------
# If importing a client certificate, specify the private key file in PKCS#8 format
# The private key file must not be encrypted
#-------------------------------------------------------------------------------
CLIENT_CERTIFICATE_KEY_FILE=

#-------------------------------------------------------------------------------
# If importing a client certificate, optionally specify the CA certificates file
#-------------------------------------------------------------------------------
CLIENT_CA_CERTIFICATES_FILE=


###############################################################################
#                                                                             #
#                           SECTION I - SERVICES                              #
#                                                                             #
###############################################################################

#-------------------------------------------------------------------------------
# Specify if the Administration server will be enabled.
# Specify true if the Administration server will be enabled, false otherwise.
#-------------------------------------------------------------------------------
ADMINISTRATION_SERVER_ENABLED=true

#-------------------------------------------------------------------------------
# Required only if the Administration server will be enabled. 
# Specify the port for Administration Server.
#-------------------------------------------------------------------------------
PORT_ADMINSRVR=7810

#-------------------------------------------------------------------------------
# Specify if the Distribution server will be enabled.
# Specify true if the Distribution server will be enabled, false otherwise.
#-------------------------------------------------------------------------------
DISTRIBUTION_SERVER_ENABLED=true

#-------------------------------------------------------------------------------
# Required only if the Distribution server will be enabled. 
# Specify the port for Distribution Server.
#-------------------------------------------------------------------------------
PORT_DISTSRVR=7811

#-------------------------------------------------------------------------------
# If security is disabled, specify if this non-secure deployment will be used
# to send trail data to a secure deployment.
#-------------------------------------------------------------------------------
NON_SECURE_DISTSRVR_CONNECTS_TO_SECURE_RCVRSRVR=false

#-------------------------------------------------------------------------------
# Specify if the Receiver server will be enabled.
# Specify true if the Receiver server will be enabled, false otherwise.
#-------------------------------------------------------------------------------
RECEIVER_SERVER_ENABLED=true

#-------------------------------------------------------------------------------
# Required only if the Receiver server will be enabled. 
# Specify the port for Receiver Server.
#-------------------------------------------------------------------------------
PORT_RCVRSRVR=7812

#-------------------------------------------------------------------------------
# Specify if Performance Metrics server will be enabled.
# Specify true if Performance Metrics server will be enabled, false otherwise.
#-------------------------------------------------------------------------------
METRICS_SERVER_ENABLED=true
#-------------------------------------------------------------------------------
# Specify if Performance Metrics server is a critical service.
# Specify true if Performance Metrics server is a critical service, false otherwise.
#
# This is optional and only takes effect when Performance Metrics server will be enabled.
# Also, this option should only be set when the Service Manager is integrated with XAG.
# The default value is false.
#
# This option is only supported for Oracle databases.
#-------------------------------------------------------------------------------
METRICS_SERVER_IS_CRITICAL=false

#-------------------------------------------------------------------------------
# Specify the port for Performance Metrics server (TCP).
#
# This option is only needed when Performance Metrics server will be enabled.
#-------------------------------------------------------------------------------
PORT_PMSRVR=7813

#-------------------------------------------------------------------------------
# Specify the DataStore type for Performance Metrics server.
# Valid values are: BDB, LMDB
#
# This option is only needed when Performance Metrics server will be enabled.
#-------------------------------------------------------------------------------
PMSRVR_DATASTORE_TYPE=BDB

#-------------------------------------------------------------------------------
# Specify the DataStore home location for Performance Metrics server.
# This is optional and only takes effect when Performance Metrics server will be enabled.
#-------------------------------------------------------------------------------
PMSRVR_DATASTORE_HOME=

#-------------------------------------------------------------------------------
# Specify if Remote Metrics using StatsD protocol will be enabled for the Deployment
# Specify true if Remote Metrics for the deployment will be enabled, false otherwise
#-------------------------------------------------------------------------------
ENABLE_DEPLOYMENT_REMOTE_METRICS=false

#-------------------------------------------------------------------------------
# If Remote Metrics for the deployment will be enabled, specify the listening host
#-------------------------------------------------------------------------------
DEPLOYMENT_REMOTE_METRICS_LISTENING_HOST=

#-------------------------------------------------------------------------------
# If Remote Metrics for the deployment will be enabled, specify the listening port for that server
#-------------------------------------------------------------------------------
DEPLOYMENT_REMOTE_METRICS_LISTENING_PORT=0


###############################################################################
#                                                                             #
#                       SECTION J - REPLICATION OPTIONS                       #
#                                                                             #
###############################################################################

#-------------------------------------------------------------------------------
# Specify the value for the GoldenGate schema.
#-------------------------------------------------------------------------------
OGG_SCHEMA=OGGADMIN


###############################################################################
#                                                                             #
#                  SECTION K - REMOVE DEPLOYMENT OPTIONS                      #
#                                                                             #
###############################################################################

#-------------------------------------------------------------------------------
# Specify if the deployment files should be removed from disk.
# Specify true if the deployment files should be removed, false otherwise.
#-------------------------------------------------------------------------------
REMOVE_DEPLOYMENT_FROM_DISK=</code></pre>
<p>L’article <a href="https://www.dbi-services.com/blog/goldengate-23ai-installation-graphic-and-silent-mode-comparison-for-automation/">GoldenGate 23ai Installation: Graphic and Silent Mode Comparison for Automation</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/goldengate-23ai-installation-graphic-and-silent-mode-comparison-for-automation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>From JBoss EAP 7 to 8: What Really Changed</title>
		<link>https://www.dbi-services.com/blog/from-jboss-eap-7-to-8-what-really-changed/</link>
					<comments>https://www.dbi-services.com/blog/from-jboss-eap-7-to-8-what-really-changed/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Mon, 06 Oct 2025 12:44:12 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[JBoss EAP]]></category>
		<category><![CDATA[migration]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=40762</guid>

					<description><![CDATA[<p>The arrival of JBoss EAP 8 marks a significant milestone in the evolution of Red Hat’s Enterprise Application Server. For many organizations still running on JBoss EAP 7.x, the upgrade brings not only new features but also strategic changes aligned with the modernization of the Java ecosystem.Let’s explore what really changed and what you need [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/from-jboss-eap-7-to-8-what-really-changed/">From JBoss EAP 7 to 8: What Really Changed</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>The arrival of JBoss EAP 8 marks a significant milestone in the evolution of Red Hat’s Enterprise Application Server. For many organizations still running on JBoss EAP 7.x, the upgrade brings not only new features but also strategic changes aligned with the modernization of the Java ecosystem.<br>Let’s explore what really changed and what you need to know before moving forward.</p>



<span id="more-40762"></span>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1225" height="817" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/Jboss-7-to-8-4.png" alt="" class="wp-image-40772" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/Jboss-7-to-8-4.png 1225w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/Jboss-7-to-8-4-300x200.png 300w" sizes="auto, (max-width: 1225px) 100vw, 1225px" /></figure>



<h2 class="wp-block-heading" id="h-a-shift-toward-jakarta-ee">A Shift Toward Jakarta EE</h2>



<p>The most visible and impactful change in JBoss EAP 8 is the transition from Java EE to Jakarta EE.</p>



<ul class="wp-block-list">
<li>Namespace migration: All javax.* packages are now replaced by jakarta.*.</li>



<li>This means that even if your application compiles fine on EAP 7, it won’t deploy on EAP 8 without updating imports and dependencies.</li>



<li>While this migration can sound painful, it’s a necessary step to stay compatible with the modern Java ecosystem and future versions of Jakarta EE.</li>
</ul>



<p>We can count on the Red Hat’s EAP Migration Toolkit to automatically detect and fix most of the package name changes.</p>



<h2 class="wp-block-heading" id="h-new-java-and-platform-support">New Java and Platform Support</h2>



<p>JBoss EAP 8 officially supports Java 17 and later.<br>This brings performance, security, and syntax improvements, while dropping support for older Java versions (like Java 8 in many cases).</p>



<p>Other platform updates include:</p>



<ul class="wp-block-list">
<li>Updated Undertow web server version for improved HTTP/2 and security.</li>



<li>Enhanced datasource and driver management via the CLI and management console.</li>



<li>Simplified configuration through YAML and CLI scripts, helping automate deployments and tuning.</li>
</ul>



<h2 class="wp-block-heading" id="h-updated-subsystems-and-architecture-improvements">Updated Subsystems and Architecture Improvements</h2>



<p>EAP 8 brings a more modular, streamlined architecture:</p>



<ul class="wp-block-list">
<li>Legacy subsystems deprecated (e.g., older messaging or logging frameworks).</li>



<li>MicroProfile updates: More APIs for observability, configuration, and fault tolerance.</li>



<li>Improved clustering and domain mode management, faster startup and better node synchronization.</li>
</ul>



<p>For administrators, these changes mean fewer manual tweaks and more consistent runtime behavior across environments.</p>



<h2 class="wp-block-heading" id="h-ready-for-the-cloud-for-real">Ready for the Cloud (for Real <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> )</h2>



<p>Red Hat has made significant investments to make EAP 8 cloud-native:</p>



<ul class="wp-block-list">
<li>Better support for OpenShift and Kubernetes with optimized container images.</li>



<li>Smaller footprint and faster startup thanks to tuned modules and lazy loading.</li>



<li>Compatibility with Red Hat build of Quarkus for microservice migration paths.</li>
</ul>



<p>In other words, JBoss EAP 8 is no longer just a traditional application server, it’s a hybrid platform that bridges the gap between legacy Java EE workloads and modern cloud architectures.</p>



<h2 class="wp-block-heading" id="h-security-and-compliance-enhancements">Security and Compliance Enhancements</h2>



<p>Security was a major focus in JBoss EAP 8:</p>



<ul class="wp-block-list">
<li>Integrated Elytron 2 for modern authentication and authorization.</li>



<li>Stronger TLS configurations by default.</li>



<li>Simplified credential store management (replacing legacy vault mechanisms).</li>
</ul>



<p>Administrators will appreciate the more centralized, policy-driven security model.</p>



<h2 class="wp-block-heading" id="h-my-experience-amp-recommendations">My Experience &amp; Recommendations</h2>



<p>After long time working with both JBoss EAP 7 and JBoss EAP 8, I can say the migration is more about preparation than complexity.<br>The most common pitfalls I’ve seen include:</p>



<ul class="wp-block-list">
<li>Forgetting the Jakarta namespace migration.</li>



<li>Using old JDBC drivers or libraries no longer supported.</li>



<li>Missing dependencies when running in containerized environments.</li>
</ul>



<p>Our best practice is always to:</p>



<ul class="wp-block-list">
<li>Test the migration in a clean environment.</li>



<li>Use automation (Ansible or CI/CD pipelines) for consistent builds.</li>



<li>Validate performance, logging, and metrics integration (especially with Zabbix or Elastic).</li>
</ul>



<p>Once properly prepared, JBoss EAP 8 runs smoother, faster, and integrates much better with modern infrastructure.</p>



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



<p>JBoss EAP 8 isn’t just an upgrade, it’s a modernization step.<br>It pushes Java EE into the Jakarta EE era, embraces cloud-native deployments, and simplifies operations for enterprises.<br>While the migration from EAP 7 requires careful planning, the long-term benefits in performance, maintainability, and compliance make it well worth the effort.</p>



<p>If you’re planning a JBoss migration, feel free to reach out for guidance or a technical exchange.<br>Have a look at our <a href="https://www.dbi-services.com/blog/tag/jboss/" target="_blank" rel="noreferrer noopener">JBoss EAP blogs</a> for more insights.</p>



<p>Happy to share,</p>



<p>David</p>
<p>L’article <a href="https://www.dbi-services.com/blog/from-jboss-eap-7-to-8-what-really-changed/">From JBoss EAP 7 to 8: What Really Changed</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/from-jboss-eap-7-to-8-what-really-changed/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>WebLogic 14: What’s New and Why It Matters</title>
		<link>https://www.dbi-services.com/blog/weblogic-14-whats-new-and-why-it-matters/</link>
					<comments>https://www.dbi-services.com/blog/weblogic-14-whats-new-and-why-it-matters/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Mon, 29 Sep 2025 08:42:47 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[release]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=40404</guid>

					<description><![CDATA[<p>After years working with WebLogic and other application servers (JBoss, WildFly, Tomcat, etc.), I’ve seen most of the challenges enterprises face: domains that refuse to start, clusters that behave unpredictably, and performance issues caused by poor configurations. What experience has taught me is clear: when Best Practices are applied, environments are far more stable and [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/weblogic-14-whats-new-and-why-it-matters/">WebLogic 14: What’s New and Why It Matters</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>After years working with WebLogic and other application servers (JBoss, WildFly, Tomcat, etc.), I’ve seen most of the challenges enterprises face: domains that refuse to start, clusters that behave unpredictably, and performance issues caused by poor configurations. What experience has taught me is clear: when Best Practices are applied, environments are far more stable and easier to manage.</p>



<span id="more-40404"></span>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="800" height="400" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1_xPL5LusRjLnv_qict4-KNA.jpg" alt="" class="wp-image-40481" style="width:631px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1_xPL5LusRjLnv_qict4-KNA.jpg 800w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1_xPL5LusRjLnv_qict4-KNA-300x150.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1_xPL5LusRjLnv_qict4-KNA-768x384.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p>With the release of WebLogic 14.1.2, Oracle has introduced significant updates that directly affect stability, security, and modernization. Below is an overview of what’s new and what it means for organizations planning to upgrade.</p>



<h2 class="wp-block-heading">A Quick Stroll Through WebLogic History</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Version</th><th>Release Date</th><th>Comment</th></tr></thead><tbody><tr><td>10.3.x</td><td>2009–2012</td><td>The “legacy” version — still found in production in 2025.</td></tr><tr><td>12.1.x</td><td>2011</td><td>Added Java EE 6 support.</td></tr><tr><td>12.2.1.x</td><td>2015</td><td>Introduced multitenancy, scaling, and many incremental patches.</td></tr><tr><td>14.1.1</td><td>2020</td><td>First in the 14 series: Java EE 8, TLS defaults.</td></tr><tr><td>14.1.2</td><td>2024</td><td>Current release: JDK 17/21 support, stronger security, new tooling.</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">What’s New in WebLogic 14</h2>



<h3 class="wp-block-heading">1. Modern Java Support</h3>



<p>WebLogic 14.1.2 now officially supports <strong>JDK 17 and JDK 21</strong>. This provides access to performance improvements (e.g., G1GC, ZGC) and modern Java language features such as records, sealed classes, and switch expressions.</p>



<p><strong>Impact for organizations:</strong></p>



<ul class="wp-block-list">
<li>Applications gain performance and security improvements.</li>



<li>Stricter Java module system may expose hidden dependencies.</li>



<li>Legacy libraries or reflection-based solutions may fail.</li>



<li>Outdated JDBC drivers and frameworks may require upgrading.</li>
</ul>



<h3 class="wp-block-heading">2. Strengthened Security Defaults</h3>



<p>Security has been significantly improved in WebLogic 14:</p>



<ul class="wp-block-list">
<li><strong>OpenID Connect</strong> support for integration with modern identity providers.</li>



<li><strong>TLS 1.0 and 1.1 removed</strong>; only strong cryptographic protocols are supported.</li>



<li><strong>Domain-specific demo certificates</strong> using PKCS12 keystores by default.</li>
</ul>



<p><strong>Impact for organizations:</strong></p>



<ul class="wp-block-list">
<li>Easier integration with enterprise authentication and identity management.</li>



<li>Legacy systems that depend on outdated SSL/TLS protocols will need upgrades.</li>
</ul>



<h3 class="wp-block-heading">3. Administration Console Evolution</h3>



<p>The traditional WebLogic Admin Console has been retired and replaced with the <strong>Remote Console</strong>, a lightweight web application that communicates via REST APIs.</p>



<p><strong>Advantages:</strong></p>



<ul class="wp-block-list">
<li>Manage WebLogic securely from anywhere.</li>



<li>Console can be upgraded independently from the server.</li>
</ul>



<p><strong>Considerations:</strong></p>



<ul class="wp-block-list">
<li>Administrators must adapt to a new interface.</li>



<li>Existing procedures, documentation, and training materials will require updates.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="800" height="728" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1754382750771.jpg" alt="" class="wp-image-40480" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1754382750771.jpg 800w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1754382750771-300x273.jpg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1754382750771-768x699.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<h3 class="wp-block-heading">4. Migration and Refactoring Tools</h3>



<p>Oracle introduced two new tools to assist with upgrades:</p>



<ul class="wp-block-list">
<li><strong>Migration Analysis Tool (MAT):</strong> Scans applications and reports compatibility issues.</li>



<li><strong>OpenRewrite Recipes:</strong> Automates some application refactoring tasks.</li>
</ul>



<p><strong>Considerations:</strong></p>



<ul class="wp-block-list">
<li>These tools provide useful guidance, but results often require expert interpretation.</li>



<li>Automated refactoring may only cover part of the necessary work.</li>
</ul>



<h3 class="wp-block-heading">5. Clustering and Database Enhancements</h3>



<p>Enhancements in high availability and database integration include:</p>



<ul class="wp-block-list">
<li><strong>Health-based routing:</strong> Routes requests to the healthiest available node.</li>



<li><strong>Database client modules:</strong> Simplify integration in Kubernetes and containerized environments.</li>



<li><strong>Improved failover and multi-data center support:</strong> Reduce complexity in HA deployments.</li>
</ul>



<p><strong>Impact for organizations:</strong></p>



<ul class="wp-block-list">
<li>More reliable clustering.</li>



<li>Simplified operations in cloud and hybrid environments.</li>



<li>Better resilience in multi-DC architectures.</li>
</ul>



<h2 class="wp-block-heading" id="h-should-you-upgrade">Should You Upgrade?</h2>



<p>Short answer: yes. Long answer: yes, but carefully.</p>



<p>Sticking with 12c in 2025 is like still using Internet Explorer &#8211; technically possible, but also technically embarrassing. At some point, Oracle’s support matrix will drop you, and then you’re one zero-day away from chaos.</p>



<p>In another world, continuing to run WebLogic 12c in 2025 is increasingly difficult to justify:</p>



<ul class="wp-block-list">
<li>Security vulnerabilities accumulate as older versions leave support.</li>



<li>Integration with modern Java, Kubernetes, and identity providers becomes more challenging.</li>



<li>Oracle’s support matrix is moving forward, and legacy environments are becoming costly liabilities.</li>
</ul>



<h2 class="wp-block-heading">Final Thoughts</h2>



<p>WebLogic 14 is not just an incremental update. It modernizes the platform with stronger security, cloud-native capabilities, and support for the latest Java standards. At the same time, it introduces changes that require careful planning to avoid disruption.</p>



<p>This is where experienced guidance is valuable. With years of WebLogic consulting experience, I support organizations by:</p>



<ul class="wp-block-list">
<li>Auditing WebLogic installation for compatibility issues before migration.</li>



<li>Planning and executing upgrades with minimal downtime.</li>



<li>Configuring new security features and administration tools correctly.</li>



<li>Coaching development and operations teams to adapt to the changes.</li>
</ul>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> If your organization is considering upgrading to <strong>WebLogic 14</strong>, let’s discuss how to make the transition smooth, secure, and future-proof.</p>



<p>Happy to share,</p>



<p>David</p>



<p>Have a look to all <a href="https://www.dbi-services.com/blog/author/david-diab/" target="_blank" rel="noreferrer noopener">my blogs</a></p>
<p>L’article <a href="https://www.dbi-services.com/blog/weblogic-14-whats-new-and-why-it-matters/">WebLogic 14: What’s New and Why It Matters</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/weblogic-14-whats-new-and-why-it-matters/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Oracle FMW 14 Installation &#8211; ORA-00439: feature not enabled: Fine-grained access control</title>
		<link>https://www.dbi-services.com/blog/oracle-fmw-14-installation-ora-00439-feature-not-enabled-fine-grained-access-control/</link>
					<comments>https://www.dbi-services.com/blog/oracle-fmw-14-installation-ora-00439-feature-not-enabled-fine-grained-access-control/#respond</comments>
		
		<dc:creator><![CDATA[David Diab]]></dc:creator>
		<pubDate>Tue, 23 Sep 2025 21:29:47 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[WebLogic]]></category>
		<category><![CDATA[Fusion Middleware]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Oracle]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=39382</guid>

					<description><![CDATA[<p>This short blog is to share with you an issue we faced at a customer during Oracle Fusion Middleware 14 installation. Introduction and Symptoms An important step in the installation process is the Oracle Fusion Middleware Metadata repository creation using the RCU (Repository Creation Utility) which creates the necessary schemas for the components. But when [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-fmw-14-installation-ora-00439-feature-not-enabled-fine-grained-access-control/">Oracle FMW 14 Installation &#8211; ORA-00439: feature not enabled: Fine-grained access control</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>This short blog is to share with you an issue we faced at a customer during Oracle Fusion Middleware 14 installation.</p>



<span id="more-39382"></span>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="701" height="401" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1520187287514.jpg" alt="" class="wp-image-40316" style="width:573px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1520187287514.jpg 701w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/09/1520187287514-300x172.jpg 300w" sizes="auto, (max-width: 701px) 100vw, 701px" /></figure>



<p></p>



<h2 class="wp-block-heading" id="h-introduction-and-symptoms">Introduction and Symptoms</h2>



<p>An important step in the installation process is the Oracle Fusion Middleware Metadata repository creation using the RCU (Repository Creation Utility) which creates the necessary schemas for the components.</p>



<p> But when running the Repository Creation Utility (RCU) to load schemas on Oracle Database, schema creation fails with the below errors:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="635" height="499" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/image-8.png" alt="" class="wp-image-39385" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/image-8.png 635w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/image-8-300x236.png 300w" sizes="auto, (max-width: 635px) 100vw, 635px" /></figure>



<p>In fact, the problem is seen as RCU tries to set up VPD stripes. In another world, RCU relies on fine-grained access control (FGAC) to manage schema creation and access within the Oracle database. </p>



<p>The ORA-00439 error &#8220;feature not enabled: Fine-grained access control&#8221; in Oracle RCU (Repository Creation Utility) indicates that the database being used for RCU schema creation does not have the <strong>fine-grained access control feature enabled</strong>. This feature is only part of the <strong>Enterprise Edition</strong> of Oracle Database and is not available in Standard Edition!</p>



<p>Let&#8217;s check <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="538" height="191" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/image-7.png" alt="" class="wp-image-39384" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/image-7.png 538w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/image-7-300x107.png 300w" sizes="auto, (max-width: 538px) 100vw, 538px" /></figure>



<p>So, no way to do it with Standard Edition? No worries, there is a solution <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h2 class="wp-block-heading" id="h-solution">Solution</h2>



<p>Oracle here is a patch to workaround this issue, so the steps will be:</p>



<ul class="wp-block-list">
<li>Download the patch</li>



<li>Apply the patch</li>



<li>Run the RCU to load the schemas</li>



<li>Continue with Domain configuration</li>
</ul>



<p><strong>Download the patch</strong></p>



<p>Go to <a href="https://support.oracle.com/epmos/faces/ui/patch/PatchDetail.jspx?parent=DOCUMENT&amp;sourceId=3083393.1&amp;patchId=37506854" target="_blank" rel="noreferrer noopener">Patch 37506854</a> and download it, then move it to your working folder on the server.</p>



<p><strong>Apply the patch</strong></p>



<p>Nothing really special here, apply the patch as any patch <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>



<p>Unzip the patch downloaded, go inside the folder 37506854, and apply the patch:</p>



<pre class="wp-block-code"><code>&#091;oracle@fmwserver working]$ cd 37506854
&#091;oracle@fmwserver 37506854]$ opatch apply
Oracle Interim Patch Installer version 13.9.4.2.17
Copyright (c) 2025, Oracle Corporation.  All rights reserved.


Oracle Home       : /u01/app/oracle/product/midw
Central Inventory : /u01/app/oracle/oraInventory
   from           : /u01/app/oracle/product/midw//oraInst.loc
OPatch version    : 13.9.4.2.17
OUI version       : 13.9.4.0.0
Log file location : /u01/app/oracle/product/midw/cfgtoollogs/opatch/opatch2025-07-10_11-22-38AM_1.log


OPatch detects the Middleware Home as "/u01/app/oracle/product/midw"

Verifying environment and performing prerequisite checks...
OPatch continues with these patches:   37506854

Do you want to proceed? &#091;y|n]
y
User Responded with: Y
All checks passed.

Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/u01/app/oracle/product/midw')


Is the local system ready for patching? &#091;y|n]
y
User Responded with: Y
Backing up files...
Applying interim patch '37506854' to OH '/u01/app/oracle/product/midw'

Patching component oracle.rcu.mds, 14.1.2.0.0...

Patching component oracle.rcu.mds, 14.1.2.0.0...
Patch 37506854 successfully applied.
Log file location: /u01/app/oracle/product/midw/cfgtoollogs/opatch/opatch2025-07-10_11-22-38AM_1.log

OPatch succeeded.</code></pre>



<p><strong>Retry the failed step</strong></p>



<p>Now, the RCU should work fine and the domain creation could be done without issue.</p>



<p>Have a look on all FMW <a href="https://www.dbi-services.com/blog/tag/oracle-fusion-middleware/" target="_blank" rel="noreferrer noopener">blogs</a>, more blogs to come about FMW 14 to highlight new features!</p>



<p>If you have any questions don&#8217;t hesitate, please ask <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p>Happy to share,</p>



<p>David<br></p>
<p>L’article <a href="https://www.dbi-services.com/blog/oracle-fmw-14-installation-ora-00439-feature-not-enabled-fine-grained-access-control/">Oracle FMW 14 Installation &#8211; ORA-00439: feature not enabled: Fine-grained access control</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/oracle-fmw-14-installation-ora-00439-feature-not-enabled-fine-grained-access-control/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Dctm &#8211; Invalid/Missing XSRF token on D2</title>
		<link>https://www.dbi-services.com/blog/dctm-invalid-missing-xsrf-token-on-d2/</link>
					<comments>https://www.dbi-services.com/blog/dctm-invalid-missing-xsrf-token-on-d2/#respond</comments>
		
		<dc:creator><![CDATA[Morgan Patou]]></dc:creator>
		<pubDate>Wed, 23 Jul 2025 18:25:00 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[cookies]]></category>
		<category><![CDATA[D2]]></category>
		<category><![CDATA[Documentum]]></category>
		<category><![CDATA[httpOnly]]></category>
		<category><![CDATA[secure]]></category>
		<category><![CDATA[Tomcat]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=39647</guid>

					<description><![CDATA[<p>During an upgrade project to Documentum 23.4, I faced yet again another interesting behavior from D2. The Documentum Server upgrade happened properly for all components like the Connection Broker, Repositories, D2, etc… The OTDS was also setup and available/working properly without too much trouble. However, the deployment of the D2 war file was a bit [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/dctm-invalid-missing-xsrf-token-on-d2/">Dctm &#8211; Invalid/Missing XSRF token on D2</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>During an upgrade project to Documentum 23.4, I faced yet again another interesting behavior from D2. The Documentum Server upgrade happened properly for all components like the Connection Broker, Repositories, D2, etc… The OTDS was also setup and available/working properly without too much trouble. However, the deployment of the D2 war file was a bit of another story.</p>



<p>As usual, we try to make it so that Documentum and all its components are setup as securely as possible. From a WebServer point of view, that include a bunch of Best Practices that we add into our deployments / custom images (when using containers), and D2 isn&#8217;t without rest. One of such things is for example to setup the Tomcat and D2 application to work only with cookies that have the &#8220;<strong>secure</strong>&#8221; and &#8220;<strong>httpOnly</strong>&#8221; flags. That is done in a few locations, but in recent versions of D2, there is additional parameters to help control this kind of behavior inside the <strong>ESAPI.properties</strong> file.</p>



<p><strong><em>Note:</em></strong> there are often confusions about the &#8220;<strong>httpOnly</strong>&#8221; flag for cookies, so I think a quick reminder wouldn&#8217;t hurt. The &#8220;<strong>secure</strong>&#8221; flag means that the cookie can only be sent through HTTPS (except when using localhost), so it&#8217;s much harder to get access to it. The &#8220;<strong>httpOnly</strong>&#8221; one, contrary to his name, doesn&#8217;t mean that the cookie is only for HTTP communications, but it means that it cannot be accessed by client&#8217;s scripts like JavaScript. Therefore, sensitive cookies should have both flags, so that they go through the network securely and even when it arrives on the target client&#8217;s browser, its access is protected.</p>



<p>Therefore, as a good practice, I went ahead and configured D2 as secure as I could, even before a 1st deployment, and that included these 4 parameters:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [3,4,5,7]; title: ; notranslate">
&#x5B;tomcat@d2-0 war_prep]$ grep -B1 -E &quot;ForceHttpOnly|ForceSecure&quot; WEB-INF/classes/ESAPI.properties
# Force flags on cookies, if you use HttpUtilities to set cookies
HttpUtilities.ForceHttpOnlySession=true
HttpUtilities.ForceSecureSession=true
HttpUtilities.ForceHttpOnlyCookies=true
# Whlie doing a cross site access through https make the below flag to true 
HttpUtilities.ForceSecureCookies=true
&#x5B;tomcat@d2-0 war_prep]$
</pre></div>


<p>Once my D2 WAR file was ready and configured, I tried to deploy it on Tomcat. No errors/issues during the deployment/startup of D2. However, accessing the D2 UI ended up with a pretty and infinite loading logo of D2. You probably have all seen that happen at some point:</p>



<figure data-wp-context="{&quot;imageId&quot;:&quot;69de3f72b824a&quot;}" data-wp-interactive="core/image" data-wp-key="69de3f72b824a" class="wp-block-image size-large wp-lightbox-container"><img loading="lazy" decoding="async" width="1024" height="803" 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/2025/07/D2-1024x803.png" alt="" class="wp-image-39648" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/D2-1024x803.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/D2-300x235.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/D2-768x602.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/07/D2.png 1437w" 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>Nothing on the D2 logs (generated through the <strong>logback.xml</strong> or <strong>log4j2.properties</strong>), but on the Tomcat logs, I could see the stack related to that issue when I accessed the URL a few minutes after Tomcat was fully up&amp;running:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; highlight: [4,5,6]; title: ; notranslate">
2025-07-08 14:25:56,379 UTC INFO &#x5B;main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive &#x5B;$CATALINA_HOME/webapps/D2/D2.war] has finished in &#x5B;57,704] ms
2025-07-08 14:25:56,382 UTC INFO &#x5B;main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler &#x5B;&quot;https-jsse-nio-8080&quot;]
2025-07-08 14:25:56,400 UTC INFO &#x5B;main] org.apache.catalina.startup.Catalina.start Server startup in &#x5B;57846] milliseconds
2025-07-08 14:29:36,966 UTC SEVERE &#x5B;https-jsse-nio-8080-exec-42] org.apache.catalina.core.ApplicationContext.log Key&#x5B;type=com.emc.x3.server.services.labels.RpcLabelServiceImpl, annotation=&#x5B;none]]: An RpcTokenException was thrown while processing this call.
	com.google.gwt.user.client.rpc.RpcTokenException: Invalid RPC token (Missing XSRF token: not on request, client IP=xxx.xxx.xxx.xxx)
		at com.emc.x3.server.D2XsrfProtectedServiceServlet.validateXsrfToken(D2XsrfProtectedServiceServlet.java:33)
		at com.google.gwt.user.server.rpc.AbstractXsrfProtectedServiceServlet.onAfterRequestDeserialized(AbstractXsrfProtectedServiceServlet.java:66)
		at com.emc.x3.server.GuiceRemoteServiceServlet.processCall(GuiceRemoteServiceServlet.java:120)
		at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:373)
		at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
		at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
		at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
		at com.google.inject.servlet.ServletDefinition.doServiceImpl(ServletDefinition.java:290)
		at com.google.inject.servlet.ServletDefinition.doService(ServletDefinition.java:280)
		at com.google.inject.servlet.ServletDefinition.service(ServletDefinition.java:184)
		at com.google.inject.servlet.ManagedServletPipeline.service(ManagedServletPipeline.java:89)
		at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:85)
		at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
		at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
		at com.emc.x3.portal.server.filters.authc.X3OTDSAuthenticationFilter.executeChain(X3OTDSAuthenticationFilter.java:1106)
		at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
		at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154)
		at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
		at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
		at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
		at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154)
		at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
		at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:458)
		at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:373)
		at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
		at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
		at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387)
		at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:370)
		at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:154)
		at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:82)
		at com.google.inject.servlet.ManagedFilterPipeline.dispatch(ManagedFilterPipeline.java:121)
		at com.google.inject.servlet.GuiceFilter.doFilter(GuiceFilter.java:133)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
		at com.emc.x3.portal.server.filters.X3SessionTimeoutFilter.doFilter(X3SessionTimeoutFilter.java:52)
		at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
		at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
		at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
		at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
		at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
		at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
		at org.apache.catalina.valves.StuckThreadDetectionValve.invoke(StuckThreadDetectionValve.java:185)
		at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
		at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:663)
		at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:731)
		at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
		at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)
		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)
		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)
		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)
</pre></div>


<p>I checked that the XSRF token was indeed generated, and it appeared to be present in the request, at least as shown in the Browser&#8217;s Network traces (Developer Tools). It was being generated and forwarded by the browser with both the &#8220;<strong>secure</strong>&#8221; and &#8220;<strong>httpOnly</strong>&#8221; flags. So, what was the issue then? It took me a bit of time, but I could pinpoint the issue to the <strong>ESAPI.properties</strong> file and more specifically to the 4 properties I mentioned above, that control the flags of both cookies and sessions. To be exact, I expected the &#8220;<strong>httpOnly</strong>&#8221; flag for the cookies to be the issue, since it would hide the <strong>XSRF_TOKEN</strong> from JavaScript on the client-side. Keeping the content of the WAR file exploded folder the same, I tried to switch this 1 parameter back to false, which is the default value:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [7,17]; title: ; notranslate">
&#x5B;tomcat@d2-0 ~]$ esapi_file=&quot;$CATALINA_HOME/webapps/D2/WEB-INF/classes/ESAPI.properties&quot;
&#x5B;tomcat@d2-0 ~]$
&#x5B;tomcat@d2-0 ~]$ grep -B1 -E &quot;ForceHttpOnly|ForceSecure&quot; ${esapi_file}
# Force flags on cookies, if you use HttpUtilities to set cookies
HttpUtilities.ForceHttpOnlySession=true
HttpUtilities.ForceSecureSession=true
HttpUtilities.ForceHttpOnlyCookies=true
# Whlie doing a cross site access through https make the below flag to true
HttpUtilities.ForceSecureCookies=true
&#x5B;tomcat@d2-0 ~]$
&#x5B;tomcat@d2-0 ~]$ sed -i &#039;s,\(HttpUtilities.ForceHttpOnlyCookies\)=true,\1=false,&#039; ${esapi_file}
&#x5B;tomcat@d2-0 ~]$
&#x5B;tomcat@d2-0 ~]$ grep -B1 -E &quot;ForceHttpOnly|ForceSecure&quot; ${esapi_file}
# Force flags on cookies, if you use HttpUtilities to set cookies
HttpUtilities.ForceHttpOnlySession=true
HttpUtilities.ForceSecureSession=true
HttpUtilities.ForceHttpOnlyCookies=false
# Whlie doing a cross site access through https make the below flag to true
HttpUtilities.ForceSecureCookies=true
&#x5B;tomcat@d2-0 ~]$
</pre></div>


<p>After a restart of Tomcat, the issue was completely gone and the login to D2 through the OTDS was working successfully… Since I could deploy D2-REST, D2-Smartview and D2-Config with all 4 <strong>ESAPI.properties</strong> parameter set to &#8220;<strong>true</strong>&#8220;, I asked OT if it was expected that only D2 has a problem with &#8220;<strong>HttpUtilities.ForceHttpOnlyCookies=true</strong>&#8220;. After a few days of exchange, I got the feedback that it&#8217;s not documented but it&#8217;s apparently required for D2 to NOT have the &#8220;<strong>httpOnly</strong>&#8221; flag because of the <strong>XSRF_TOKEN</strong>. They will see to create a KB for that topic (update: it was created and it&#8217;s available here: <a href="https://support.opentext.com/csm?id=kb_article_view&amp;sysparm_article=KB0845279" target="_blank" rel="noreferrer noopener">KB0845279</a>). If you really need to have both flags set, then you will not have any other choice than switching to the new UI, D2-Smartview.</p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/dctm-invalid-missing-xsrf-token-on-d2/">Dctm &#8211; Invalid/Missing XSRF token on D2</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-invalid-missing-xsrf-token-on-d2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Documentum &#8211; Login through OTDS without oTExternalID3</title>
		<link>https://www.dbi-services.com/blog/documentum-login-through-otds-without-otexternalid3/</link>
					<comments>https://www.dbi-services.com/blog/documentum-login-through-otds-without-otexternalid3/#comments</comments>
		
		<dc:creator><![CDATA[Morgan Patou]]></dc:creator>
		<pubDate>Wed, 01 Jan 2025 15:00:00 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[dm_user]]></category>
		<category><![CDATA[Documentum]]></category>
		<category><![CDATA[iapi]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[OTDS]]></category>
		<category><![CDATA[oTExternalID3]]></category>
		<category><![CDATA[user_login_name]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=36496</guid>

					<description><![CDATA[<p>As you might know, Documentum &#8220;deprecated&#8221; (in reality disabled completely) the different Authentication Plugins that were bundled with a Documentum Server. That means that with recent versions of Documentum, you cannot login to your LDAP-managed account anymore without having configured an OTDS and integrated it with your Documentum Server. After you installed the OTDS, and [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/documentum-login-through-otds-without-otexternalid3/">Documentum &#8211; Login through OTDS without oTExternalID3</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>As you might know, Documentum &#8220;deprecated&#8221; (in reality disabled completely) the different Authentication Plugins that were bundled with a Documentum Server. That means that with recent versions of Documentum, you cannot login to your LDAP-managed account anymore without having configured an OTDS and integrated it with your Documentum Server. After you <a href="https://www.dbi-services.com/blog/documentum-silent-install-otds/">installed the OTDS</a>, and configured it to work with Documentum, you might be faced with an annoying behavior that makes it impossible to login. This is because, by default, it only supports one specific configuration for the user_login_name (i.e. oTExternalID3). There is a workaround, but it&#8217;s not documented, as far as I know, so I&#8217;m writing this blog to share that information.</p>



<p>When logging in to a Documentum Server, using the &#8220;connect&#8221; iAPI command, the Repository will verify if the user_login_name exists. If yes, it will send the Authentication request to the JMS, which will contact the OTDS with the details provided. The OTDS will perform the authentication with whatever Identity Provider you configured inside it and return the result to the JMS, which will then confirm the details to the Repository to either allow or deny the login. In this case, it doesn&#8217;t matter if the user_source of the dm_user is configured with &#8220;LDAP&#8221; or &#8220;OTDS&#8221;. Both will behave in the same way and the request will be sent to the JMS and then the OTDS, that&#8217;s the theory at least&#8230; That&#8217;s working properly for an &#8220;indirect&#8221; login using the &#8220;connect&#8221; iAPI command triggered by an already logged in user such as dmadmin. But a &#8220;direct&#8221; login (DA, dqMan, or direct iAPI with username/password) will fail for an &#8220;LDAP&#8221; user_source as Documentum will, in this case, try to use the LDAP Auth and then complain that it&#8217;s deprecated :)&#8230; Might be the subject of another blog.</p>



<h2 class="wp-block-heading" id="h-i-otds-synchronization-with-default-configuration">I. OTDS Synchronization with default configuration</h2>



<p>To do some testing or if you are setting-up a freshly installed Documentum Repository (i.e. no previous LDAP integrations), you might want to keep things simple and therefore you would most probably end-up using the default configuration.</p>



<p>The default User Mapping configuration for an OTDS Resource, for Documentum, might be something like:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; first-line: 1; highlight: [1]; title: ; notranslate">
    Resource Attribute            &amp;gt;&amp;gt; OTDS Attribute          &amp;gt;&amp;gt; Format
    __NAME__                      &amp;gt;&amp;gt; cn                      &amp;gt;&amp;gt; %s
    AccountDisabled               &amp;gt;&amp;gt; ds-pwp-account-disabled &amp;gt;&amp;gt; %s
    client_capability             &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; 0
    create_default_cabinet        &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; F
    user_address                  &amp;gt;&amp;gt; mail                    &amp;gt;&amp;gt; %s
    user_global_unique_id         &amp;gt;&amp;gt; oTObjectGUID            &amp;gt;&amp;gt; %s
    user_login_name               &amp;gt;&amp;gt; oTExternalID3           &amp;gt;&amp;gt; %s
    user_name                     &amp;gt;&amp;gt; cn                      &amp;gt;&amp;gt; %s
    user_privileges               &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; 0
    user_rename_enabled           &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; F
    user_rename_unlock_locked_obj &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; T
    user_type                     &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; dm_user
    user_xprivileges              &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; 0
</pre></div>


<p>Please note that the default value for &#8220;user_login_name&#8221; is &#8220;oTExternalID3&#8221;. In addition to mapped attributes from the AD / LDAP, OTDS defines some internal attributes that you can use, and this one is one of those. For example, if a cn/sAMAccountName has a value of &#8220;MYUSERID&#8221;, then you will most probably end-up with something like:</p>



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



<li>oTExternalID2 == MYUSERID@OTDS-PARTITION-NAME</li>



<li>oTExternalID3 == MYUSERID@DOMAIN-NAME.COM</li>



<li>oTExternalID4 == DOMAIN\MYUSERID</li>
</ul>



<p>Therefore, in this case, with the default configuration, you would need to use &#8220;MYUSERID@DOMAIN-NAME.COM&#8221; to be able to login to Documentum. Nothing else would work as your dm_user would be synchronized/created/modified to have a user_login_name value of &#8220;MYUSERID@DOMAIN-NAME.COM&#8221;. As a sidenote, the &#8220;%s&#8221; in the Format column means to keep the formatting/case from the source attribute. In most AD / LDAP, the cn/sAMAccountName would be in uppercase, so you would only be able to login with the uppercase details. There is a parameter that you can set in the server.ini to be able to have a case-insensitive Repository and another one in the JMS, so you might want to take a look at that for example.</p>



<p><strong><span style="text-decoration: underline">Note:</span></strong> The value of oTExternalID3 can be changed in the Partition &gt; Properties &gt; Extended Functionality page. It is controlled by the value given to the &#8220;AD/LDAP attribute&#8221; and by default, it should be set to &#8220;userPrincipalName&#8221; (i.e. MYUSERID@DOMAIN-NAME.COM). However, you can change that value to something else, like &#8220;sAMAccountName&#8221;, and in this case, oTExternalID3 would end-up with the same value as oTExternalID1.</p>



<p>Here, I&#8217;m setting an AD password in an environment variable and then fetching a dm_user details to show you the current content, before triggering a login attempt (using the &#8220;connect&#8221; iAPI command):</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [6,7,8,22,24,26,32,49]; title: ; notranslate">
&#x5B;dmadmin@cs-0 logs]$ read -s -p &quot;  --&gt; Please enter the AD Password: &quot; ad_passwd
  --&gt; Please enter the AD Password:
&#x5B;dmadmin@cs-0 logs]$
&#x5B;dmadmin@cs-0 logs]$
&#x5B;dmadmin@cs-0 logs]$ iapi REPO_NAME -Udmadmin -Pxxx &lt;&lt; EOC
&gt; retrieve,c,dm_user where upper(user_login_name) like &#039;MYUSERID%&#039;
&gt; get,c,l,user_name
&gt; get,c,l,user_login_name
&gt; EOC

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

Connecting to Server using docbase REPO_NAME
&#x5B;DM_SESSION_I_SESSION_START]info:  &quot;Session 011234568006fe39 started for user dmadmin.&quot;

Connected to OpenText Documentum Server running Release 20.2.00013.0135  Linux64.Oracle
Session id is s0
API&gt; ...
1112345680001d00
API&gt; ...
MYUSERID
API&gt; ...
MYUSERID@DOMAIN-NAME.COM
API&gt; Bye
&#x5B;dmadmin@cs-0 logs]$
&#x5B;dmadmin@cs-0 logs]$
&#x5B;dmadmin@cs-0 logs]$ iapi REPO_NAME -Udmadmin -Pxxx &lt;&lt; EOC
&gt; apply,c,NULL,SET_OPTIONS,OPTION,S,trace_authentication,VALUE,B,T
&gt; connect,REPO_NAME,MYUSERID@DOMAIN-NAME.COM,dm_otds_password=${ad_passwd}
&gt; apply,c,NULL,SET_OPTIONS,OPTION,S,trace_authentication,VALUE,B,F
&gt; EOC

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

Connecting to Server using docbase REPO_NAME
&#x5B;DM_SESSION_I_SESSION_START]info:  &quot;Session 011234568006fe40 started for user dmadmin.&quot;

Connected to OpenText Documentum Server running Release 20.2.00013.0135  Linux64.Oracle
Session id is s0
API&gt; ...
q0
API&gt; ...
s1
API&gt; ...
q0
API&gt; Bye
&#x5B;dmadmin@cs-0 logs]$
</pre></div>


<p>As you can see above, the result of the &#8220;connect&#8221; command is &#8220;s1&#8221;, which means the session is opened and Documentum was able to verify through the OTDS that the login is correct. On the JMS, there is an &#8220;otdsauth.log&#8221; file, that gives you this kind of information (might give a bit more information depending on the Documentum Server version used):</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [4,5]; title: ; notranslate">
&#x5B;dmadmin@cs-0 logs]$ cat otdsauth.log
...
2025-01-01 13:37:26,417 UTC DEBUG &#x5B;root] (default task-6) In com.documentum.cs.otds.OTDSAuthenticationServlet
2025-01-01 13:37:26,780 UTC DEBUG &#x5B;root] (default task-6) userId: MYUSERID@DOMAIN-NAME.COM
2025-01-01 13:37:26,782 UTC DEBUG &#x5B;root] (default task-6) Password Auth Success: MYUSERID@DOMAIN-NAME.COM
&#x5B;dmadmin@cs-0 logs]$
</pre></div>


<p>The Repository logs will also show the trace_authentication details and the OTDS will also have a successful authentication attempt in its logs. So, all is well in a perfect world, right?</p>



<h2 class="wp-block-heading" id="h-ii-otds-synchronization-with-updated-configuration">II. OTDS Synchronization with updated configuration</h2>



<p>When working with an existing Repository that was initially setup with LDAP Sync and Auth, you might have a &#8220;simple&#8221; configuration that defined that the user_login_name would be the cn/sAMAccountName attribute from the Active Directory. In this case, you probably don&#8217;t want to change anything after the integration of the OTDS… After all, the OTDS is supposed to simplify the configuration and not complexify it. Therefore, you would setup the OTDS to integrate (Synchronized Partition or Non-Synchronized one) with your AD / LDAP and then create a Resource that would replicate and match the exact details of your existing users. Even on a freshly installed Repository without previous LDAP integration, you might choose to login with &#8220;MYUSERID&#8221; (or &#8220;myuserid&#8221;) instead of &#8220;MYUSERID@DOMAIN-NAME.COM&#8221;. The OTDS will allows you to configure that, so users can be synchronized to Documentum however you want.</p>



<p>To achieve that, you would need to change a bit the User Mapping configuration to keep your previous login information / avoid messing with the existing dm_user details. For example, you might want to change the client_capability, user_login_name, user_name and some other things. Here is an example of configuration that allows you to synchronize the users with the cn/sAMAccountName from your AD / LDAP, in lowercase, please note the changes with a wildcard (*):</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; highlight: [1]; title: ; notranslate">
    Resource Attribute            &amp;gt;&amp;gt; OTDS Attribute          &amp;gt;&amp;gt; Format
    __NAME__                      &amp;gt;&amp;gt; cn                      &amp;gt;&amp;gt; %l (*)
    AccountDisabled               &amp;gt;&amp;gt; ds-pwp-account-disabled &amp;gt;&amp;gt; %s
    client_capability             &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; 2 (*)
    create_default_cabinet        &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; F
    user_address                  &amp;gt;&amp;gt; mail                    &amp;gt;&amp;gt; %s
    user_global_unique_id         &amp;gt;&amp;gt; oTObjectGUID            &amp;gt;&amp;gt; %s
    user_login_name               &amp;gt;&amp;gt; cn (*)                  &amp;gt;&amp;gt; %l (*)
    user_name                     &amp;gt;&amp;gt; displayName (*)         &amp;gt;&amp;gt; %s
    user_privileges               &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; 0
    user_rename_enabled           &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; T (*)
    user_rename_unlock_locked_obj &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; T
    user_type                     &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; dm_user
    user_xprivileges              &amp;gt;&amp;gt;                         &amp;gt;&amp;gt; 32 (*)
</pre></div>


<p>The documentation mention in some places to have the same value for both _NAME_ and for user_name but I&#8217;m not sure if that&#8217;s really required, as I have some customers with different values, and it works anyway. It&#8217;s pretty common for customers to have the same value for cn and sAMAccountName and to store the displayName into, well, the displayName attribute… On Documentum side, some customers will use cn as the user_name, but some others will use displayName instead. The user_name is, after all, a kind of displayName so I don&#8217;t really understand why OTDS would require both _NAME_ and user_name to be the same. It should instead rely on the user_login_name, no?</p>



<p>After consolidating the OTDS Resource, you should be able to see the correct user_login_name as it was before (with the LDAP Sync job). What&#8217;s the purpose of this blog then? Well, the OTDS allows you to change the mapping as you see fit, so that you can replicate exactly what you used to have with an LDAP Sync. But you cannot login anymore…</p>



<p>After the modification of the OTDS Resource User Mapping and its consolidation, here I&#8217;m trying to login again (with &#8220;myuserid&#8221; instead of &#8220;MYUSERID@DOMAIN-NAME.COM&#8221;) to show the difference in behavior:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [3,4,20,22,27,44]; title: ; notranslate">
&#x5B;dmadmin@cs-0 logs]$ iapi REPO_NAME -Udmadmin -Pxxx &lt;&lt; EOC
&gt; retrieve,c,dm_user where upper(user_login_name) like &#039;MYUSERID%&#039;
&gt; get,c,l,user_name
&gt; get,c,l,user_login_name
&gt; EOC

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

Connecting to Server using docbase REPO_NAME
&#x5B;DM_SESSION_I_SESSION_START]info:  &quot;Session 011234568006fe48 started for user dmadmin.&quot;

Connected to OpenText Documentum Server running Release 20.2.00013.0135  Linux64.Oracle
Session id is s0
API&gt; ...
1112345680001d00
API&gt; ...
LastName (Ext) FirstName
API&gt; ...
myuserid
API&gt; Bye
&#x5B;dmadmin@cs-0 logs]$
&#x5B;dmadmin@cs-0 logs]$ iapi REPO_NAME -Udmadmin -Pxxx &lt;&lt; EOC
&gt; apply,c,NULL,SET_OPTIONS,OPTION,S,trace_authentication,VALUE,B,T
&gt; connect,REPO_NAME,myuserid,dm_otds_password=${ad_passwd}
&gt; apply,c,NULL,SET_OPTIONS,OPTION,S,trace_authentication,VALUE,B,F
&gt; EOC

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

Connecting to Server using docbase REPO_NAME
&#x5B;DM_SESSION_I_SESSION_START]info:  &quot;Session 011234568006fe4f started for user dmadmin.&quot;

Connected to OpenText Documentum Server running Release 20.2.00013.0135  Linux64.Oracle
Session id is s0
API&gt; ...
q0
API&gt; ...
&#x5B;DM_SESSION_E_AUTH_FAIL]error:  &quot;Authentication failed for user myuserid with docbase REPO_NAME.&quot;


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


<p>This time the authentication fails. If you look at the Repository logs, you can see the user is detected properly, and the Repository start the authentication with the OTDS (1st line below). But when the result comes back (2nd and 3rd lines below), it says that it failed:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
2025-01-01T13:46:16.446426      188808&#x5B;188808]  011234568006fe50        &#x5B;AUTH]  Start-AuthenticateUserByOTDSPassword:UserLoginName(myuserid)
2025-01-01T13:46:16.815111      188808&#x5B;188808]  011234568006fe50        &#x5B;AUTH]  otds_password_authentication = false:
2025-01-01T13:46:16.815159      188808&#x5B;188808]  011234568006fe50        &#x5B;AUTH]  End-AuthenticateUserByOTDSPassword: 0
2025-01-01T13:46:17.174676      188808&#x5B;188808]  011234568006fe50        &#x5B;AUTH]  Final Auth Result=F, LOGON_NAME=myuserid, ...
</pre></div>


<p>The JMS otdsauth.log file will have a similar content, it will start the OTDS communications (1st line below) but the result returned (2nd line below) is not the user_login_name of Documentum. Instead, it&#8217;s the value of oTExternalID3 and then the JMS says that it failed (3rd line below):</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; highlight: [2,3]; title: ; notranslate">
2025-01-01 13:46:16,671 UTC DEBUG &#x5B;root] (default task-6) In com.documentum.cs.otds.OTDSAuthenticationServlet
2025-01-01 13:46:16,813 UTC DEBUG &#x5B;root] (default task-6) userId: MYUSERID@DOMAIN-NAME.COM
2025-01-01 13:46:16,814 UTC DEBUG &#x5B;root] (default task-6) Password Auth Failed: myuserid
</pre></div>


<p>On the OTDS side, no problems, the authentication was successful when it was received (in the directory-access.log):</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; title: ; notranslate">
2025-01-01 13:46:16.777|INFO  ||0|0|Authentication Service|Success Access|27,Initial authentication successful|172.0.0.10|&quot;&quot;|OTDS-PARTITION-NAME|&quot;MYUSERID@DOMAIN-NAME.COM&quot;|&quot;Authentication success: MYUSERID@DOMAIN-NAME.COM using authentication handler OTDS-PARTITION-NAME for resource __OTDS_AS__&quot;
</pre></div>


<p>If you look at the exact timestamp of the messages, you see the exact flow of how things went. In short, the OTDS says that it&#8217;s OK and it sends back some information to the JMS. But because the information returned is oTExternalID3, there is a mismatch with the value of the user_login_name and the JMS/Repository then concludes that the authentication failed, which isn&#8217;t true…</p>



<p>Therefore, using any user_login_name value other than oTExternalID3 isn&#8217;t a problem from a synchronization point of view, but you still cannot login anyway.</p>



<h2 class="wp-block-heading" id="h-iii-workaround">III. Workaround</h2>



<p>As mentioned in the introduction of this blog, there is a workaround, which is to set the parameter &#8220;<strong>synced_user_login_name=sAMAccountName</strong>&#8221; in the <strong>otdsauth.properties</strong> file that configures how the JMS talks to the OTDS (another workaround might be to change the value of &#8220;AD/LDAP attribute&#8221; in the Partition as mentioned earlier in this blog, but that will apply to the full OTDS configuration and not just for this repository). I looked at all the OTDS and Documentum documentations, for several versions, as well as KBs, but I couldn&#8217;t find this workaround mentioned anywhere. Maybe I&#8217;m the one that doesn&#8217;t know how to search (don&#8217;t blame the search from OT Support website :D). The one and only reference to this parameter is in the <a href="https://webapp.opentext.com/piroot/edccs/v240400/edccs-agd/en/html/jsframe.htm?opentext-directory-services-integ" target="_blank" rel="noreferrer noopener">Documentum Server Admin &amp; Config doc</a>, but it tells you that it&#8217;s optional and it&#8217;s only for OTDS token-based authentication. Here, we are doing a password-based auth, we don&#8217;t have any OTDS oAuth Client ID/Secret, so this section shouldn&#8217;t be required at all. You don&#8217;t need the other parameters from this section, but you DO need &#8220;synced_user_login_name&#8221;, if you would like to login with the cn/sAMAccountName/oTExternalID1/oTSAMAccountName parameter.</p>



<p>However, there is an additional catch… The parameter was apparently only introduced in 20.3. For any older Documentum Server, you will need to check with OT if they have a fix available. I know there is one for 20.2, but it&#8217;s only for Windows (c.f. <a href="https://support.opentext.com/csm?id=kb_article_view&amp;sysparm_article=KB0783327" target="_blank" rel="noreferrer noopener">here</a>). Now, you know that you can also use this parameter for that purpose.</p>



<p></p>
<p>L’article <a href="https://www.dbi-services.com/blog/documentum-login-through-otds-without-otexternalid3/">Documentum &#8211; Login through OTDS without oTExternalID3</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/documentum-login-through-otds-without-otexternalid3/feed/</wfw:commentRss>
			<slash:comments>3</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-04-14 15:21:54 by W3 Total Cache
-->