<?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 Administration - ETL administration console</title>
	<atom:link href="https://eac.cidwe.com/docs-category/administration/feed/" rel="self" type="application/rss+xml" />
	<link>https://eac.cidwe.com/docs-category/administration/</link>
	<description>L’application essentielle pour le déploiement et le monitoring de vos flux ETL Talend.</description>
	<lastBuildDate>Tue, 30 Dec 2025 14:08:34 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://eac.cidwe.com/wp-content/uploads/2022/10/cropped-logo-G-32x32.png</url>
	<title>Archives des Administration - ETL administration console</title>
	<link>https://eac.cidwe.com/docs-category/administration/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Execution servers</title>
		<link>https://eac.cidwe.com/docs/execution-servers/</link>
					<comments>https://eac.cidwe.com/docs/execution-servers/#respond</comments>
		
		<dc:creator><![CDATA[Adile EL HADDIK]]></dc:creator>
		<pubDate>Mon, 18 Aug 2025 14:33:44 +0000</pubDate>
				<guid isPermaLink="false">https://eac.cidwe.com/?post_type=docs&#038;p=1180</guid>

					<description><![CDATA[<p>You need at least one active execution server to run tasks. In this page License models In both cases, tasks only run on nodes flagged Is Execution Server. Quick start MONO license (single node) MULTI license (control + slaves) Server pages Create/Edit: field reference Field Purpose Rules / Tips Server display name Human-readable label (shown [&#8230;]</p>
<p>L’article <a href="https://eac.cidwe.com/docs/execution-servers/">Execution servers</a> est apparu en premier sur <a href="https://eac.cidwe.com">ETL administration console</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>You need <strong>at least one active execution server</strong> to run tasks.</p>
</blockquote>



<p><strong>In this page</strong></p>



<ul class="wp-block-list">
<li><a href="#license-models">License models</a></li>



<li><a href="#quick-start">Quick start</a></li>



<li><a href="#server-pages">Server pages</a></li>



<li><a href="#createedit-field-reference">Create/Edit: field reference</a></li>



<li><a href="#operational-checks">Operational checks</a></li>



<li><a href="#multi-server-notes-load-balancing">Multi-servers notes (load balancing)</a></li>



<li><a href="#troubleshooting">Troubleshooting</a></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size" id="license-models">License models</h2>



<ul class="wp-block-list">
<li><strong>MONO</strong> — single node (control + execution).
<ul class="wp-block-list">
<li>See: <a href="https://eac.cidwe.com/docs/multi-servers-installation/">Mono-server installation</a></li>
</ul>
</li>



<li><strong>MULTI</strong> — one control node (<strong>Main server</strong>) and one or more <strong>Execution servers</strong> (slaves) for load balancing and redundancy.
<ul class="wp-block-list">
<li>See: <a href="https://eac.cidwe.com/docs/multi-servers-installation/">Multi-servers installation</a></li>
</ul>
</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>In both cases, tasks only run on nodes flagged <strong>Is Execution Server</strong>.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size" id="quick-start">Quick start</h2>



<h3 class="wp-block-heading has-medium-font-size">MONO license (single node)</h3>



<ol class="wp-block-list">
<li><strong>Install</strong> EAC on the host.</li>



<li>Set the server identity in the host config: <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">EAC_SERVER_CODE</mark></code> (e.g., <code>master</code>).</li>



<li>In <strong>Servers → New</strong>, register the node and tick <strong>Is Execution Server</strong> and <strong>Enabled</strong>.</li>



<li>Schedule:
<ul class="wp-block-list">
<li>Heartbeat (on this node by default):<br><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">* * * * * php bin/console eac:server-status &#8211;every=3</mark><br><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">30 1 * * * php bin/console eac:server-status:purge --days=4</mark></code></li>



<li>Scheduler loop (on this node by default):<br><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">* * * * * php bin/console eac:scheduler</mark></code> (and set <code>SCHEDULE_ENABLED=true</code>)</li>
</ul>
</li>
</ol>



<h3 class="wp-block-heading has-medium-font-size">MULTI license (control + slaves)</h3>



<ol class="wp-block-list">
<li><strong>Install</strong> EAC on <strong>each</strong> node.</li>



<li>On each node, set a unique <code><mark style="background-color:var(--ast-global-color-4);color:#000000" class="has-inline-color">EAC_SERVER_CODE</mark></code> (e.g., <code>master</code>, <code>slave-1</code>, <code>slave-2</code>).</li>



<li>Register every node in <strong>Servers</strong>. On the control node, tick <strong>Is Main Server</strong>. On nodes that will run jobs, tick <strong>Is Execution Server</strong>. Tick <strong>Enabled</strong> wherever applicable.</li>



<li>Schedule on <strong>every</strong> node:
<ul class="wp-block-list">
<li>Heartbeat:<br><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">* * * * * php bin/console eac:server-status --every=3</mark></code><br><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">30 1 * * * php bin/console eac:server-status:purge --days=4</mark></code></li>
</ul>
</li>



<li>Schedule the <strong>scheduler loop</strong> on the <strong>Main server</strong> (recommended):
<ul class="wp-block-list">
<li><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">* * * * * php bin/console eac:scheduler</mark></code> with <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">SCHEDULE_ENABLED=true</mark></code></li>



<li>(Optional HA) keep a standby scheduler on another node with <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">SCHEDULE_ENABLED=false</mark></code>, and flip it only if needed.</li>
</ul>
</li>



<li>Ensure job artifacts are available on all execution servers (see <strong>Replication checks</strong> in <a href="https://eac.cidwe.com/docs/useful-commands/">Useful commands</a> or:<br><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">* * * * * php bin/console eac:check-jobversion-deployment</mark></code><br><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">0 2 * * * php bin/console eac:check-jobversion-deployment --force</mark></code>)</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size" id="server-pages">Server pages</h2>



<ul class="wp-block-list">
<li><strong>List</strong> — high-level view: display name, code, role badges (<strong>Current</strong>, <strong>Master</strong>), enabled state, and quick actions.</li>



<li><strong>Show</strong> — server details + <strong>Last executions on this server</strong>. CPU/Memory graphs appear once heartbeats are flowing. If you see <strong>“No status available”</strong>, 
<ul class="wp-block-list">
<li>your heartbeat isn’t configured or isn’t reaching the app.</li>



<li>your last executions exceed time defined in fine last server status</li>
</ul>
</li>



<li><strong>Create/Edit</strong> — the registration form (also used for updates). This is where you define <strong>Main/Execution</strong> roles.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size" id="createedit-field-reference">Create/Edit: field reference</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Field</th><th>Purpose</th><th>Rules / Tips</th></tr></thead><tbody><tr><td><strong>Server display name</strong></td><td>Human-readable label (shown in UI).</td><td>e.g., <code>master</code>, <code>fr-par-01</code>, <code>etl-exec-02</code>.</td></tr><tr><td><strong>Code</strong></td><td>Unique technical identifier for this node.</td><td>Must <strong>match</strong> the node’s <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">EAC_SERVER_CODE</mark></code> (alphanumeric, hyphen, underscore). If they don’t match, heartbeats won’t attach to this entry.</td></tr><tr><td><strong>Host</strong></td><td>Base URL used by EAC to contact/identify the node.</td><td>Include scheme, e.g., <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">https://server-domain.com</mark></code></td></tr><tr><td><strong>Port</strong></td><td>Management/API/UI port for this node.</td><td>e.g., <code>443</code>.</td></tr><tr><td><strong>Is Main Server</strong></td><td>Marks the control node in MULTI setups.</td><td>Run the <strong>scheduler</strong> here.</td></tr><tr><td><strong>Enabled</strong></td><td>Toggles visibility/participation of this node.</td><td>If off, the node is ignored by orchestration.</td></tr><tr><td><strong>Is Execution Server</strong></td><td>Allows this node to <strong>run tasks</strong>.</td><td>At least one server must have this enabled, otherwise no executions can start.</td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>On the <strong>Show</strong> page you’ll also see: <strong>Active</strong> (heartbeat seen recently), <strong>EAC version</strong>, OS, and CPU/Memory charts.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size" id="operational-checks">Operational checks</h2>



<ul class="wp-block-list">
<li><strong>Heartbeat present?</strong> Status appears and updates every minute once <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">eac:server-status</mark></code> is scheduled.</li>



<li><strong>Execution capable?</strong> At least one server must be <strong>Enabled</strong> <strong>and</strong> <strong>Is Execution Server</strong>.</li>



<li><strong>Scheduler running?</strong> Ensure the scheduler loop is scheduled and <code>SCHEDULE_ENABLED=true</code> on the node where it runs.</li>



<li><strong>Artifacts available?</strong> In MULTI, verify replication on all execution servers (see replication checks above).</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size" id="multi-server-notes-load-balancing">Multi-server notes (load balancing)</h2>



<ul class="wp-block-list">
<li>With <strong>MULTI</strong>, tasks will run on any <strong>available Execution Server</strong>.</li>



<li>Keep <strong>replication</strong> healthy so the required job versions exist on all candidate nodes before triggers fire.</li>



<li>Use the Server <strong>Show</strong> page to see <strong>which server</strong> actually executed each run and to spot imbalances or capacity issues (CPU/Memory charts).</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size" id="troubleshooting">Troubleshooting</h2>



<ul class="wp-block-list">
<li><strong>“No status available”</strong> on Show page
<ul class="wp-block-list">
<li>Heartbeat cron missing or failing; wrong <strong>Code</strong> (doesn’t match <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">EAC_SERVER_CODE</mark></code>); firewall/TLS blocking <code>Host:Port</code>.</li>
</ul>
</li>



<li><strong>No tasks start</strong>
<ul class="wp-block-list">
<li>No server with <strong>Is Execution Server</strong> + <strong>Enabled</strong>; scheduler loop not running or <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">SCHEDULE_ENABLED=false</mark></code>; task blocked by <strong>Ack</strong>; schedule not in the look-ahead window (“Active now” false).</li>
</ul>
</li>



<li><strong>Executions always on one node</strong>
<ul class="wp-block-list">
<li>Other nodes not marked <strong>Is Execution Server</strong>, or their artifacts aren’t replicated.</li>
</ul>
</li>



<li><strong>Version mismatch</strong>
<ul class="wp-block-list">
<li>Different <strong>EAC version</strong> or missing job version on some nodes; run replication checks.</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>See also</strong></p>



<ul class="wp-block-list">
<li><a href="https://eac.cidwe.com/docs/useful-commands/">Useful commands &amp; operations</a></li>



<li><a href="https://eac.cidwe.com/docs/schedule-a-task/">Scheduler</a> · <a href="https://eac.cidwe.com/docs/good-use-of-contexts/">Good use of context</a> · <a href="https://eac.cidwe.com/docs/good-use-of-purges/">Purge</a> · <a href="https://eac.cidwe.com/docs/good-use-of-ack/">Ack</a></li>
</ul>
<p>L’article <a href="https://eac.cidwe.com/docs/execution-servers/">Execution servers</a> est apparu en premier sur <a href="https://eac.cidwe.com">ETL administration console</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://eac.cidwe.com/docs/execution-servers/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Settings</title>
		<link>https://eac.cidwe.com/docs/settings/</link>
					<comments>https://eac.cidwe.com/docs/settings/#respond</comments>
		
		<dc:creator><![CDATA[Adile EL HADDIK]]></dc:creator>
		<pubDate>Mon, 18 Aug 2025 14:33:10 +0000</pubDate>
				<guid isPermaLink="false">https://eac.cidwe.com/?post_type=docs&#038;p=1178</guid>

					<description><![CDATA[<p>take a look at what is possible to do on settings page Use the Settings page to configure scheduling, system paths, email, databases, and ETL logging. After saving, EAC writes the target server’s ./shared/.env.local (or equivalent) and refreshes configuration. Some changes (paths/scheduling) may require worker/cron reload. How to edit settings (UI) To remove an override, [&#8230;]</p>
<p>L’article <a href="https://eac.cidwe.com/docs/settings/">Settings</a> est apparu en premier sur <a href="https://eac.cidwe.com">ETL administration console</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>take a look at what is possible to do on settings page</p>



<ul class="wp-block-list">
<li><a href="https://eac.cidwe.com/docs/settings/#how-to-edit-settings">How to use settings</a></li>



<li><a href="https://eac.cidwe.com/docs/settings/#scheduling-and-system">Scheduling &amp; System</a></li>



<li><a href="https://eac.cidwe.com/docs/settings/#mail-settings">Mail settings</a></li>



<li><a href="https://eac.cidwe.com/docs/settings/#database">Database</a></li>



<li><a href="https://eac.cidwe.com/docs/settings/#etl-table-settings">ETL Table Settings</a></li>



<li><a href="https://eac.cidwe.com/docs/settings/#examples">Examples</a></li>
</ul>



<p>Use the <strong>Settings</strong> page to configure scheduling, system paths, email, databases, and ETL logging.</p>



<ul class="wp-block-list">
<li><strong>Scope &amp; precedence</strong>
<ul class="wp-block-list">
<li><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">.env</mark></code> = baseline (read-only in the UI).</li>



<li><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">.env.local</mark></code> = <strong>per-server overrides</strong> written by the UI. Anything set here overrides <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">.env</mark></code> on that server only.</li>
</ul>
</li>



<li><strong>Single-server:</strong> edits apply to the only node.</li>



<li><strong>Multi-server:</strong> you edit the <strong>current server</strong>. all changes are applied automatically to your servers.</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>After saving, EAC writes the target server’s <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">./shared/.env.local</mark></code> (or equivalent) and refreshes configuration. Some changes (paths/scheduling) may require worker/cron reload.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size" id="how-to-edit-settings">How to edit settings (UI)</h2>



<ol class="wp-block-list">
<li>Sign in as <strong>Admin</strong>.</li>



<li>Go to <strong>Settings</strong>.</li>



<li>For each section, change <strong>Updatable (.env.local)</strong> values. <strong>Present value (.env)</strong> is informational.</li>



<li><strong>Save</strong>. Confirm the success banner. If prompted, restart workers/cron.</li>
</ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>To <strong>remove</strong> an override, clear the field and save (the app falls back to <code>.env</code>).</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">Field reference (mapping → env keys)</h2>



<p>Below, the <strong>UI label</strong> is mapped to the <strong>environment variable</strong> actually written in <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">.env.local</mark></code>. Defaults are indicative—your build may ship different ones.</p>



<h3 class="wp-block-heading has-medium-font-size" id="scheduling-and-system">Scheduling &amp; System</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>UI label</th><th>Env var</th><th>Type / Example</th><th>Notes</th></tr></thead><tbody><tr><td>Enable scheduling</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_ENABLE_SCHEDULING</mark></code></td><td><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">true</mark></td><td><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">false</mark></td></tr><tr><td>Reschedule old task after x (min)</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_RESCHEDULE_AFTER_MIN</mark></code></td><td><code>10</code></td><td>Age in minutes before a stuck task is re-queued.</td></tr><tr><td>Check status with Git</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_CHECK_STATUS_WITH_GIT</mark></code></td><td><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">true</mark></td><td><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">false</mark></td></tr><tr><td>Cron user</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_CRON_USER</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">eac</mark></code></td><td>System user running cron/console.</td></tr><tr><td>Average executed task count</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_AVG_EXECUTED_TASK_COUNT</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">10</mark></code></td><td>Used by stats/ETA.</td></tr><tr><td>Display error on home</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_DISPLAY_ERROR_ON_HOME</mark></code></td><td><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">true</mark></td><td><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">false</mark></td></tr><tr><td>PHP command path</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_PHP_BIN</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">php</mark></code> or <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">/usr/bin/php</mark></code></td><td>CLI PHP binary.</td></tr><tr><td>Default application URI</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_BASE_URI</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">https://your_domain:443/</mark></code></td><td>Absolute base URL.</td></tr><tr><td>Task logs type</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_TASK_LOG_TYPE</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">file</mark></code> or <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">db</mark></code></td><td>Storage for execution logs. (lien page dediée)</td></tr><tr><td>Java home path</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">JAVA_HOME</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">/usr/lib/jvm/java-17</mark></code></td><td>Needed if jobs spawn Java.</td></tr><tr><td>Console command</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_CONSOLE_CMD</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">/var/www/html/var/eac/bin/console</mark></code></td><td>Symfony console path.</td></tr><tr><td>Local directory</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_LOCAL_DIR</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">/var/www/html/var/eac/</mark></code></td><td>Base local working dir.</td></tr><tr><td>Deployment directory</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_DEPLOY_DIR</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">/var/www/html/var/eac/deploy/</mark></code></td><td>Where jobs/packages deploy.</td></tr><tr><td>Execution extension</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_EXEC_EXTENSION</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">sh</mark></code> (linux) / <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">bat</mark></code> (win)</td><td>Script extension to execute.</td></tr><tr><td>Scanned partitions</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_SCANNED_PARTITIONS</mark></code></td><td><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color"><code>/</code> or <code>/</code></mark><code>,<mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">/data</mark></code></td><td>CSV list used by scanners.</td></tr><tr><td>Temporary directory</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_TMP_DIR</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">/var/www/html/var/eac/tmp/</mark></code></td><td>Scratch space.</td></tr><tr><td>Upload directory</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_UPLOAD_DIR</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">/var/www/html/var/eac/uploads/</mark></code></td><td>User uploads.</td></tr><tr><td>JWT Passphrase</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">JWT_PASSPHRASE</mark></code></td><td>(secret)</td><td>Used to sign JWTs.</td></tr></tbody></table></figure>



<p><strong>Permissions tip:</strong> ensure the service user (e.g., <code>eac:www-data</code>) owns these paths and they exist.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading has-medium-font-size" id="mail-settings">Mail settings</h3>



<p>You can either fill the discrete fields or paste a full DSN (advanced). The UI composes <code>MAILER_DSN</code> from individual fields.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>UI label</th><th>Env var</th><th>Example</th></tr></thead><tbody><tr><td>Default sender email</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_MAILER_SENDER</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">eac@cidwe.com</mark></code></td></tr><tr><td>Mailer default recipients</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_MAILER_DEFAULT_RECIPIENTS</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">ops@acme.com</mark>,<mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">data@acme.com</mark></code></td></tr><tr><td>Enable task mailer</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_ENABLE_TASK_MAILER</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">true</mark></code></td></tr><tr><td>Mailer protocol</td><td>—</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">smtp</mark></code></td></tr><tr><td>Mailer user</td><td>—</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">mylogin@acme.com</mark></code> (URL-encode)</td></tr><tr><td>Mailer password</td><td>—</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">My:Pass</mark></code> (URL-encode)</td></tr><tr><td>Mailer host</td><td>—</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">smtp.acme.com</mark></code></td></tr><tr><td>Mailer port</td><td>—</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">587</mark></code></td></tr><tr><td>Mailer options</td><td>—</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">encryption=tls&amp;auth_mode=login&amp;timeout=30</mark></code></td></tr></tbody></table></figure>



<p><strong>Resulting DSN written:</strong></p>



<pre class="wp-block-code"><code>MAILER_DSN="smtp://&lt;user&gt;:&lt;pass&gt;@&lt;host&gt;:&lt;port&gt;?&lt;options&gt;"
# Example
MAILER_DSN="smtp://mylogin%40acme.com:My%3APass@smtp.acme.com:587?encryption=tls&amp;auth_mode=login"
</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Percent-encoding for credentials in URLs</p>



<p>Only encode the <strong>username</strong> and <strong>password</strong> parts of the URL (not the whole URL).</p>



<p>Format reminder:</p>



<pre class="wp-block-code"><code>scheme://USERNAME:PASSWORD@HOST:PORT/DB?options
</code></pre>



<h3 class="wp-block-heading has-medium-font-size">Reserved characters (what they mean &amp; why to encode)</h3>



<ul class="wp-block-list">
<li><code>@</code> → <code>%40</code><br><strong>Meaning in URL:</strong> separates <code>USERNAME:PASSWORD</code> from <code>HOST</code>.<br><strong>Encode when:</strong> <code>@</code> appears inside your username or password, otherwise it will be read as the end of credentials.</li>



<li><code>:</code> → <code>%3A</code><br><strong>Meaning in URL:</strong> separates <code>USERNAME</code> and <code>PASSWORD</code>.<br><strong>Encode when:</strong> <code>:</code> is part of the username or password value, or it will split the field.</li>



<li><code>/</code> → <code>%2F</code><br><strong>Meaning in URL:</strong> path separator after the host.<br><strong>Encode when:</strong> <code>/</code> appears inside credentials, or it will be mistaken for a path delimiter.</li>



<li><code>&amp;</code> → <code>%26</code><br><strong>Meaning in URL:</strong> separates query parameters (after <code>?</code>).<br><strong>Encode when:</strong> <code>&amp;</code> appears in credentials, or it’ll be parsed as a new option.</li>



<li><code>%</code> → <code>%25</code><br><strong>Meaning in URL:</strong> introduces a percent-encoded byte.<br><strong>Encode when:</strong> <code>%</code> appears literally in credentials—<strong>encode it first</strong> to avoid corrupting other encodings.</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Other common ones you might hit: <code>+</code> → <code>%2B</code>, <code>#</code> → <code>%23</code>, <code>?</code> → <code>%3F</code>.</p>
</blockquote>



<h3 class="wp-block-heading has-medium-font-size">Do &amp; Don’t</h3>



<ul class="wp-block-list">
<li>Encode <strong>only</strong> the username/password segments.</li>



<li>Keep separators (<code>://</code>, <code>@</code>, <code>/</code>, <code>?</code>, <code>&amp;</code>) unencoded <strong>outside</strong> credentials.</li>



<li>Don’t double-encode (e.g., don’t turn <code>%40</code> into <code>%2540</code>).</li>
</ul>



<h2 class="wp-block-heading has-large-font-size">Examples</h2>



<h3 class="wp-block-heading has-medium-font-size">Database URL (PostgreSQL)</h3>



<p>Password contains <code>pa:ss@/word&amp;%</code></p>



<pre class="wp-block-code"><code>postgresql://eac_usr:pa%3Ass%40%2Fword%26%25@db:5432/eac_db?serverVersion=16&amp;charset=utf8
</code></pre>



<h3 class="wp-block-heading has-medium-font-size">Mailer DSN (SMTP)</h3>



<p>Username <code>alerts@company.com</code>, password <code>P@ss:W/rd&amp;2025</code></p>



<pre class="wp-block-code"><code>smtp://alerts%40company.com:P%40ss%3AW%2Frd%262025@mail.example.com:587?encryption=tls
</code></pre>



<p><strong>Quick checklist:</strong> If your credential has <code>@ : / &amp; % + # ?</code> → encode those characters before placing it in the URL.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading has-medium-font-size" id="database">Database (application)</h3>



<p>The form composes <code>DATABASE_URL</code>.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>UI label</th><th>Env var</th><th>Example</th></tr></thead><tbody><tr><td>Database driver</td><td>—</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">postgresql</mark></code> (also <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">mysql</mark></code>, <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">mssql</mark></code>, <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">sqlite</mark></code>)</td></tr><tr><td>Database host / port</td><td>—</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">db.acme.local</mark></code> / <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">5432</mark></code></td></tr><tr><td>Database name</td><td>—</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">eac_db</mark></code></td></tr><tr><td>Database user / password</td><td>—</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">eac_usr</mark></code> / <code>••••</code></td></tr><tr><td>Database options</td><td>—</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">serverVersion=16&amp;charset=utf8</mark></code></td></tr></tbody></table></figure>



<p><strong>Resulting URL:</strong></p>



<pre class="wp-block-code"><code>DATABASE_URL="postgresql://eac_usr:pass@db.acme.local:5432/eac_db?serverVersion=16&amp;charset=utf8"</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading has-medium-font-size" id="etl-table-settings">ETL Table Settings (optional: stats &amp; metrics)</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>UI label</th><th>Env var</th><th>Example</th></tr></thead><tbody><tr><td>Enable ETL logs</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">APP_ENABLE_ETL_LOGS</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">true</mark></code></td></tr><tr><td>ETL statistics table name</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">ETL_STAT_TABLE_NAME</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">talend_stat</mark></code></td></tr><tr><td>ETL metrics table name</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">ETL_MET_TABLE_NAME</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">talend_met</mark></code></td></tr><tr><td>ETL logs table name</td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">ETL_LOG_TABLE_NAME</mark></code></td><td><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">talend_log</mark></code></td></tr><tr><td>ETL logs database driver/host/port/name/user/password/options</td><td>—</td><td>(same fields as DB above)</td></tr></tbody></table></figure>



<p><strong>Resulting URL:</strong></p>



<pre class="wp-block-code"><code>DATABASE_URL_ETL_LOG="postgresql://eac_usr:pass@eac_master-postres:5432/eac_db?charset=utf8&amp;serverVersion=16.0.0"</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size" id="examples">Examples</h2>



<p><strong>Single-server, basic mail + Postgres</strong></p>



<pre class="wp-block-code"><code>APP_ENABLE_SCHEDULING=true
APP_BASE_URI="https://eac.local:4443/"

MAILER_DSN="smtp://eac%40cidwe.com:My%3APassword@mail.acme.com:587?encryption=tls&amp;auth_mode=login"
APP_MAILER_SENDER="eac@cidwe.com"
APP_MAILER_DEFAULT_RECIPIENTS="teameac@cidwe.com"
APP_ENABLE_TASK_MAILER=true

DATABASE_URL="postgresql://eac_usr:pass@db:5432/eac_db?serverVersion=16&amp;charset=utf8"</code></pre>



<p><strong>Multi-server, ETL logs on separate DB</strong></p>



<pre class="wp-block-code"><code>APP_ENABLE_ETL_LOGS=true
ETL_STAT_TABLE_NAME=talend_stat
ETL_MET_TABLE_NAME=talend_met
ETL_LOG_TABLE_NAME=talend_log
DATABASE_URL_ETL_LOG="postgresql://etl_ro:pass@etl-db:5432/etl_logs?serverVersion=16&amp;charset=utf8"</code></pre>
<p>L’article <a href="https://eac.cidwe.com/docs/settings/">Settings</a> est apparu en premier sur <a href="https://eac.cidwe.com">ETL administration console</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://eac.cidwe.com/docs/settings/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Licenses</title>
		<link>https://eac.cidwe.com/docs/licenses/</link>
					<comments>https://eac.cidwe.com/docs/licenses/#respond</comments>
		
		<dc:creator><![CDATA[Adile EL HADDIK]]></dc:creator>
		<pubDate>Mon, 18 Aug 2025 14:32:29 +0000</pubDate>
				<guid isPermaLink="false">https://eac.cidwe.com/?post_type=docs&#038;p=1176</guid>

					<description><![CDATA[<p>EAC is licensed per edition and billing cycle: Edition Scope Typical use case Billing cycles Single-Server One EAC server instance Simple/standard deployments on a single host Monthly or Annual Multi-Server Multiple EAC server instances in the same cluster/environment High availability, scale-out, or multi-node orchestration Monthly or Annual Note: “Server” refers to one running EAC application [&#8230;]</p>
<p>L’article <a href="https://eac.cidwe.com/docs/licenses/">Licenses</a> est apparu en premier sur <a href="https://eac.cidwe.com">ETL administration console</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>EAC is licensed per <strong>edition</strong> and <strong>billing cycle</strong>:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Edition</th><th>Scope</th><th>Typical use case</th><th>Billing cycles</th></tr></thead><tbody><tr><td><strong>Single-Server</strong></td><td>One EAC server instance</td><td>Simple/standard deployments on a single host</td><td><strong>Monthly</strong> or <strong>Annual</strong></td></tr><tr><td><strong>Multi-Server</strong></td><td>Multiple EAC server instances in the same cluster/environment</td><td>High availability, scale-out, or multi-node orchestration</td><td><strong>Monthly</strong> or <strong>Annual</strong></td></tr></tbody></table></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Note:</strong> “Server” refers to one running EAC application instance. If you deploy multiple nodes (e.g., behind a load balancer), you need a <strong>Multi-Server</strong> license.</p>
</blockquote>



<h2 class="wp-block-heading">Entering a license in the UI</h2>



<ol class="wp-block-list">
<li>Sign in with an <strong>Admin</strong> account.</li>



<li>Go to <strong>Admin → Settings → License</strong> (menu label may be <strong>System → License</strong> depending on version).</li>



<li>Choose one of:
<ul class="wp-block-list">
<li><strong>Paste license key</strong>: paste the full text.</li>



<li>Enter the company name attached to the license</li>



<li>Enter the license type code</li>



<li>finally select the license server mode (MONO, MULTI)</li>
</ul>
</li>



<li>Click <strong>Validate &amp; Save</strong>.</li>



<li>Confirm the beginning date and the expiration date.</li>
</ol>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="352" src="https://eac.cidwe.com/wp-content/uploads/2025/09/eac-licence-key-page-new-1024x352.avif" alt="eac licence key page new" class="wp-image-1617" srcset="https://eac.cidwe.com/wp-content/uploads/2025/09/eac-licence-key-page-new-1024x352.avif 1024w, https://eac.cidwe.com/wp-content/uploads/2025/09/eac-licence-key-page-new-300x103.avif 300w, https://eac.cidwe.com/wp-content/uploads/2025/09/eac-licence-key-page-new-768x264.avif 768w, https://eac.cidwe.com/wp-content/uploads/2025/09/eac-licence-key-page-new-1536x528.avif 1536w, https://eac.cidwe.com/wp-content/uploads/2025/09/eac-licence-key-page-new.avif 1892w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>If validation fails, <a href="https://eac.cidwe.com/contact/">contact us</a>.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h2 class="wp-block-heading">Renewals and switching plans</h2>



<ul class="wp-block-list">
<li><strong>Monthly → Annual</strong> (or reverse): enter the new license key the same way and <strong>Validate &amp; Save</strong>. The UI will update the edition/cycle immediately.</li>



<li><strong>Single-Server → Multi-Server</strong>: apply the new key, then restart additional nodes as needed.</li>



<li><strong>Expired license</strong>: apply the renewed key; the status will switch back to <strong>Valid</strong> once saved.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity" />



<h2 class="wp-block-heading">Troubleshooting</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Symptom / Message</th><th>What it means</th><th>How to fix</th></tr></thead><tbody><tr><td><strong>Invalid signature</strong></td><td>The key was altered or pasted incompletely</td><td>Re-copy the full key. Avoid extra spaces or line breaks</td></tr><tr><td><strong>Edition mismatch</strong></td><td>You’re using a Single-Server key on a multi-node deployment</td><td>Apply a <strong>Multi-Server</strong> license or reduce to one running node</td></tr><tr><td><strong>License expired</strong></td><td>End date reached</td><td>Renew your license and apply the new key</td></tr><tr><td><strong>Wrong product / version</strong></td><td>Key not issued for this product or major version</td><td>Request a correct key from support</td></tr><tr><td><strong>Cannot contact license service</strong> (if your build checks online)</td><td>Network/proxy blocks validation</td><td>Allow outbound access or request an <strong>offline</strong> license key</td></tr></tbody></table></figure>



<p><strong>Tips</strong></p>



<ul class="wp-block-list">
<li>If you use copy/paste, ensure there are <strong>no hidden characters</strong> (paste into a plain-text editor first).</li>



<li>For file upload, verify the file name and extension are unchanged.</li>
</ul>
<p>L’article <a href="https://eac.cidwe.com/docs/licenses/">Licenses</a> est apparu en premier sur <a href="https://eac.cidwe.com">ETL administration console</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://eac.cidwe.com/docs/licenses/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Users rights management</title>
		<link>https://eac.cidwe.com/docs/users-rights-management/</link>
					<comments>https://eac.cidwe.com/docs/users-rights-management/#respond</comments>
		
		<dc:creator><![CDATA[Adile EL HADDIK]]></dc:creator>
		<pubDate>Mon, 18 Aug 2025 14:31:56 +0000</pubDate>
				<guid isPermaLink="false">https://eac.cidwe.com/?post_type=docs&#038;p=1174</guid>

					<description><![CDATA[<p>Creating a Dedicated EAC User When you install your web server (Apache or Nginx), the default service user is usually www-data.For better security and maintainability, it is recommended to create a dedicated user named eac, with www-data as its default group.This user will be responsible for deploying, executing, and managing the EAC application. Default application [&#8230;]</p>
<p>L’article <a href="https://eac.cidwe.com/docs/users-rights-management/">Users rights management</a> est apparu en premier sur <a href="https://eac.cidwe.com">ETL administration console</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading has-large-font-size">Creating a Dedicated EAC User</h2>



<p>When you install your web server (Apache or Nginx), the default service user is usually <strong><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">www-data</mark></code></strong>.<br>For better security and maintainability, it is recommended to create a dedicated user named <strong><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">eac</mark></code></strong>, with <strong><code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">www-data</mark></code></strong> as its default group.<br>This user will be responsible for deploying, executing, and managing the EAC application.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">Default application login (EAC UI)</h2>



<p>When EAC is installed, a default application user exists:</p>



<pre class="wp-block-code"><code>login: eac@cidwe.com
password: eac</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Important:</strong> This account is for initial access only. <strong>Change the password immediately</strong> or <strong>disable/remove</strong> the user after creating your own admin account.</p>
</blockquote>



<p><strong>Suggested actions</strong></p>



<ul class="wp-block-list">
<li>Change password from the UI right after first login</li>



<li>Create a new admin user, verify access, then disable or delete <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">eac@cidwe.com</mark></code>.</li>
</ul>



<p>It is strongly recommended to remove or disable this user or at least to change its password for security reason.</p>



<h4 class="wp-block-heading">1. Create the <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">eac</mark></code> user</h4>



<pre class="wp-block-code"><code>sudo useradd -m -g www-data -s /bin/bash eac</code></pre>



<h4 class="wp-block-heading">2. Set a password for the <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">eac</mark></code> user</h4>



<pre class="wp-block-code"><code>sudo passwd eac</code></pre>



<h4 class="wp-block-heading">3. Verify the user creation</h4>



<pre class="wp-block-code"><code>id eac</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">Creating users from the UI</h2>



<ol class="wp-block-list">
<li>Go to<strong> Users</strong>.</li>



<li>Click <strong>Add</strong>. <img decoding="async" width="76" height="44" class="wp-image-1381" style="width: 76px;" src="https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-20-162536.png" alt="add user button"></li>



<li>Fill the form:
<ul class="wp-block-list">
<li><strong>Email</strong> (required)</li>



<li><strong>First name</strong>, <strong>Last name</strong> (optional but recommended)</li>



<li><strong>Password</strong> and <strong>Repeat Password</strong></li>



<li><strong>Roles</strong> (multi-select ctrl+click to select more than one):
<ul class="wp-block-list">
<li><strong>Admin</strong> – full access to the UI and settings</li>



<li><strong>API</strong> – programmatic/API access (use for integrations)</li>
</ul>
</li>



<li><strong>Is active</strong> – must be checked for the account to be usable</li>
</ul>
</li>



<li>Click <strong>Save</strong>.</li>
</ol>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="454" src="https://eac.cidwe.com/wp-content/uploads/2025/08/image-16-1024x454.png" alt="user form interface" class="wp-image-1377" srcset="https://eac.cidwe.com/wp-content/uploads/2025/08/image-16-1024x454.png 1024w, https://eac.cidwe.com/wp-content/uploads/2025/08/image-16-300x133.png 300w, https://eac.cidwe.com/wp-content/uploads/2025/08/image-16-768x341.png 768w, https://eac.cidwe.com/wp-content/uploads/2025/08/image-16-1536x681.png 1536w, https://eac.cidwe.com/wp-content/uploads/2025/08/image-16.png 1628w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Configure Default Permissions</h3>



<p>To ensure proper file and folder ownership (replace <code><mark style="background-color:var(--ast-global-color-4)" class="has-inline-color">/var/www/html</mark></code> with your actual installation path):</p>



<pre class="wp-block-code"><code>sudo chown -R eac:www-data /var/www/html
sudo find /var/www/html -type d -exec chmod g+rwx,g+s {} \; -o -type f -exec chmod g+rw {} \;
sudo find /var/www/html -type d -exec chmod 2775 {} \;
sudo find /var/www/html -type f -name "*.sh" -exec chmod 774 {} \;</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading has-large-font-size">Notes</h3>



<p>You can re-run the above four commands at any time if you accidentally change permissions or encounter issues.</p>
<p>L’article <a href="https://eac.cidwe.com/docs/users-rights-management/">Users rights management</a> est apparu en premier sur <a href="https://eac.cidwe.com">ETL administration console</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://eac.cidwe.com/docs/users-rights-management/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Monitoring</title>
		<link>https://eac.cidwe.com/docs/monitoring/</link>
					<comments>https://eac.cidwe.com/docs/monitoring/#respond</comments>
		
		<dc:creator><![CDATA[Adile EL HADDIK]]></dc:creator>
		<pubDate>Mon, 18 Aug 2025 14:30:37 +0000</pubDate>
				<guid isPermaLink="false">https://eac.cidwe.com/?post_type=docs&#038;p=1172</guid>

					<description><![CDATA[<p>Access to EAC provides two kinds of runtime visibility: more info on cpu per ping click on the graph a modal will appear with detail Permissions: You need the Admin role to configure monitoring. System monitoring (nodes &#38; KPIs) What you see How heartbeats work Each node periodically sends a status sample (heartbeat) using the [&#8230;]</p>
<p>L’article <a href="https://eac.cidwe.com/docs/monitoring/">Monitoring</a> est apparu en premier sur <a href="https://eac.cidwe.com">ETL administration console</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Access to EAC provides two kinds of runtime visibility:</p>



<ol class="wp-block-list">
<li><strong>System monitoring</strong> — health of your EAC nodes (CPU %, memory %, last heartbeat) and quick KPIs (error executions per day/week/month).
<ul class="wp-block-list">
<li><img loading="lazy" decoding="async" width="1150" height="531" class="wp-image-1432" style="width: 1150px;" src="https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-21-113314.png" alt="monitoring" srcset="https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-21-113314.png 1579w, https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-21-113314-300x139.png 300w, https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-21-113314-1024x473.png 1024w, https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-21-113314-768x355.png 768w, https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-21-113314-1536x709.png 1536w" sizes="(max-width: 1150px) 100vw, 1150px" /></li>
</ul>
</li>



<li><strong>Job monitoring</strong> — per-execution logs (<strong>Execution logs</strong> tab) and optional <strong>ETL logs</strong> (stats/metrics) collected from your ETL logging database.
<ul class="wp-block-list">
<li><img loading="lazy" decoding="async" width="1150" height="288" class="wp-image-1433" style="width: 1150px;" src="https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-21-113517.png" alt="monitoring" srcset="https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-21-113517.png 1626w, https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-21-113517-300x75.png 300w, https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-21-113517-1024x256.png 1024w, https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-21-113517-768x192.png 768w, https://eac.cidwe.com/wp-content/uploads/2025/08/Capture-decran-2025-08-21-113517-1536x384.png 1536w" sizes="(max-width: 1150px) 100vw, 1150px" /></li>
</ul>
</li>
</ol>



<p>more info on cpu per ping click on the graph a modal will appear with detail</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="842" height="445" src="https://eac.cidwe.com/wp-content/uploads/2025/08/image-19.png" alt="" class="wp-image-1434" srcset="https://eac.cidwe.com/wp-content/uploads/2025/08/image-19.png 842w, https://eac.cidwe.com/wp-content/uploads/2025/08/image-19-300x159.png 300w, https://eac.cidwe.com/wp-content/uploads/2025/08/image-19-768x406.png 768w" sizes="(max-width: 842px) 100vw, 842px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Permissions:</strong> You need the <strong>Admin</strong> role to configure monitoring.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">System monitoring (nodes &amp; KPIs)</h2>



<h3 class="wp-block-heading has-medium-font-size">What you see</h3>



<ul class="wp-block-list">
<li><strong>Dashboard</strong>: one card per node (master/slaves) with <strong>CPU %</strong> and <strong>memory %</strong> sparklines, plus <strong>Error Executions</strong> gauges (day/week/month).</li>



<li><strong>Server detail</strong>: node status (Active ✓ / Not an execution server), EAC version, and time-series of CPU/memory.</li>
</ul>



<h3 class="wp-block-heading has-medium-font-size">How heartbeats work</h3>



<p>Each node periodically sends a status sample (heartbeat) using the console command:</p>



<pre class="wp-block-code"><code>php bin/console eac:server-status --every=3
</code></pre>



<p>Schedule it <strong>on every EAC node</strong>.</p>



<h4 class="wp-block-heading has-medium-font-size">Cron example (bare metal / VM)</h4>



<p>Run every minute (samples every 3s for ~1 minute):</p>



<pre class="wp-block-code"><code>* * * * * cd /var/www/html/eac &amp;&amp; /usr/bin/php bin/console eac:server-status --every=3 --env=prod &gt;/dev/null 2&gt;&amp;1
</code></pre>



<h3 class="wp-block-heading has-medium-font-size">Troubleshooting (system monitoring)</h3>



<ul class="wp-block-list">
<li><strong>“Last status received … hours ago”</strong><br>Cron/timer not running or wrong working directory/PHP path. Run once manually: <code>php bin/console eac:server-status --every=3 --env=prod -vv</code></li>



<li><strong>Graphs flat at 0%</strong><br>The command runs but sampling interval too short. Use <code>--every=3</code> (or higher).</li>



<li><strong>Time drift / weird “ago” labels</strong><br>Synchronize time (NTP) and verify server timezones.</li>



<li><strong>Permission denied writing logs</strong><br>Ensure the app dir is owned by your service user/group (see “Server hardening” section of the docs).</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">Job monitoring — Execution logs</h2>



<p>Every task shows a <strong>Execution logs</strong> tab with the full runtime output (enqueue → shell/script path → PID → console lines → success/error).<br>Use it to:</p>



<ul class="wp-block-list">
<li>confirm the script invoked (<code>*_run.sh</code> path)</li>



<li>check the <strong>PID</strong> and parameter values</li>



<li>see final status (“Task completed successfully” or errors)</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="467" src="https://eac.cidwe.com/wp-content/uploads/2025/09/eac-execution-task-logs-page-new-1024x467.png" alt="eac execution task logs page new" class="wp-image-1605" srcset="https://eac.cidwe.com/wp-content/uploads/2025/09/eac-execution-task-logs-page-new-1024x467.png 1024w, https://eac.cidwe.com/wp-content/uploads/2025/09/eac-execution-task-logs-page-new-300x137.png 300w, https://eac.cidwe.com/wp-content/uploads/2025/09/eac-execution-task-logs-page-new-768x350.png 768w, https://eac.cidwe.com/wp-content/uploads/2025/09/eac-execution-task-logs-page-new-1536x701.png 1536w, https://eac.cidwe.com/wp-content/uploads/2025/09/eac-execution-task-logs-page-new.png 1872w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Copy/paste the relevant block when opening support tickets.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">Job monitoring — ETL logs (stats &amp; metrics)</h2>



<p>EAC can display ETL-level <strong>stats and metrics</strong> (duration, rows, components, etc.) if your ETL tool writes logs to a database (Talend standard tables supported).</p>



<h3 class="wp-block-heading has-medium-font-size">Enable ETL logs</h3>



<ol class="wp-block-list">
<li><strong>Enable logging in your ETL studio</strong><br>Example (Talend): <em>File → Project Settings → Job parameters → “Stats and logs”</em> and select <strong>database</strong> as target.</li>



<li><strong>Enable ETL logs in EAC</strong><br>In <code>./shared/.env.local</code>: <code>APP_ENABLE_ETL_LOGS=true</code></li>



<li><strong>Point EAC to the ETL log database</strong> <code># MySQL example DATABASE_URL_ETL_LOG="mysql://user:pass@db-host:3306/etl_logs?charset=utf8mb4" # PostgreSQL example # DATABASE_URL_ETL_LOG="postgresql://user:pass@db-host:5432/etl_logs"</code></li>



<li><strong>Declare the table names</strong> (adapt to your ETL logging schema): <code>ETL_STAT_TABLE_NAME=etl_stat ETL_MET_TABLE_NAME=etl_meter ETL_LOG_TABLE_NAME=etl_log</code></li>



<li><strong>Link ETL execution to the EAC task</strong><br>In your main ETL job, print the root PID marker once (Java example; use any component that writes to stdout): <code>System.out.println("@@eac@@root_pid=" + rootPid);</code> EAC uses this marker to correlate the ETL run with the task execution.</li>
</ol>



<h3 class="wp-block-heading has-medium-font-size">Viewing ETL logs</h3>



<p>Open a task → <strong>ETL logs</strong> tab. You’ll see the structured stats/metrics pulled from your ETL log DB alongside the task run.</p>



<h3 class="wp-block-heading has-medium-font-size">Troubleshooting (ETL logs)</h3>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="476" src="https://eac.cidwe.com/wp-content/uploads/2025/09/eac-execution-task-ETL-logs-list-page-new-1024x476.png" alt="eac execution task ETL logs list page new" class="wp-image-1602" srcset="https://eac.cidwe.com/wp-content/uploads/2025/09/eac-execution-task-ETL-logs-list-page-new-1024x476.png 1024w, https://eac.cidwe.com/wp-content/uploads/2025/09/eac-execution-task-ETL-logs-list-page-new-300x140.png 300w, https://eac.cidwe.com/wp-content/uploads/2025/09/eac-execution-task-ETL-logs-list-page-new-768x357.png 768w, https://eac.cidwe.com/wp-content/uploads/2025/09/eac-execution-task-ETL-logs-list-page-new-1536x715.png 1536w, https://eac.cidwe.com/wp-content/uploads/2025/09/eac-execution-task-ETL-logs-list-page-new.png 1885w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ul class="wp-block-list">
<li><strong>No data in ETL tab</strong>
<ul class="wp-block-list">
<li><code>APP_ENABLE_ETL_LOGS</code> not <code>true</code>, or missing <code>DATABASE_URL_ETL_LOG</code>.</li>



<li>Wrong table names; verify <code>ETL_*_TABLE_NAME</code> values.</li>



<li>ETL studio still writing logs to files, not DB.</li>
</ul>
</li>



<li><strong>Can’t connect to ETL DB</strong>
<ul class="wp-block-list">
<li>Check credentials/host/firewall.</li>



<li>Test with a quick CLI: <code>php -r 'new PDO(getenv("DATABASE_URL_ETL_LOG")); echo "OK\n";'</code></li>
</ul>
</li>



<li><strong>Runs aren’t correlated</strong>
<ul class="wp-block-list">
<li>Ensure the <code>@@eac@@root_pid=</code> line prints once per run and reaches stdout (not swallowed by log frameworks).</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">Operational tips</h2>



<p>Rotate and archive ETL log tables regularly to keep dashboards snappy.application logs and ETL logs</p>



<p>Keep <strong>one heartbeat per node</strong> (even non-execution nodes) for complete visibility.</p>



<p>In multi-server setups, verify the <strong>master</strong> and all <strong>slaves</strong> show recent heartbeats before troubleshooting ETL.</p>



<p>Use <strong>separate credentials</strong> for the ETL logs database (read-only if possible).</p>
<p>L’article <a href="https://eac.cidwe.com/docs/monitoring/">Monitoring</a> est apparu en premier sur <a href="https://eac.cidwe.com">ETL administration console</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://eac.cidwe.com/docs/monitoring/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Useful commands</title>
		<link>https://eac.cidwe.com/docs/useful-commands/</link>
					<comments>https://eac.cidwe.com/docs/useful-commands/#respond</comments>
		
		<dc:creator><![CDATA[Adile EL HADDIK]]></dc:creator>
		<pubDate>Mon, 18 Aug 2025 14:29:23 +0000</pubDate>
				<guid isPermaLink="false">https://eac.cidwe.com/?post_type=docs&#038;p=1168</guid>

					<description><![CDATA[<p>Requirements &#38; quick checks Check PHP CLI timezone Per-server identity (required in multi-server)In each server’s .env.local: Multi-server health &#38; replication Crontab (on every server) Job version replication checks What they do Scheduler (EAC built-in) Resolution: supports sub-minute plans (down to seconds), unlike system crontab.Activation: a plan can be switched on/off from the UI or bounded [&#8230;]</p>
<p>L’article <a href="https://eac.cidwe.com/docs/useful-commands/">Useful commands</a> est apparu en premier sur <a href="https://eac.cidwe.com">ETL administration console</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading has-large-font-size">Requirements &amp; quick checks</h2>



<p><strong>Check PHP CLI timezone</strong> </p>



<pre class="wp-block-code"><code><code>php -r "echo date_default_timezone_get(), PHP_EOL;"</code></code></pre>



<p><strong>Per-server identity (required in multi-server)</strong><br>In each server’s <code>.env.local</code>: </p>



<pre class="wp-block-code"><code><code>APP_SERVER_NAME=web-1 # e.g. web-1, worker-a, fr-par-02</code></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">Multi-server health &amp; replication</h2>



<h3 class="wp-block-heading has-medium-font-size">Crontab (on <strong>every</strong> server)</h3>



<pre class="wp-block-code"><code># Report this server's status every minute (internally every 3 min)
* * * * * php /path/to/app/bin/console eac:server-status --every=3

# Daily purge of old server statuses (keep last 4 days)
30 1 * * * php /path/to/app/bin/console eac:server-status:purge --days=4
</code></pre>



<h3 class="wp-block-heading has-medium-font-size">Job version replication checks</h3>



<pre class="wp-block-code"><code># Incremental check (new/different only) — runs every minute
* * * * * php /path/to/app/bin/console eac:check-jobversion-deployment

# Full comparison once per day (force a full pass)
0 2 * * * php /path/to/app/bin/console eac:check-jobversion-deployment --force
</code></pre>



<p><strong>What they do</strong></p>



<ul class="wp-block-list">
<li><code>eac:server-status</code>: pushes a heartbeat for each node so the UI can display live server health.</li>



<li><code>eac:server-status:purge</code>: cleans old heartbeats.</li>



<li><code>eac:check-jobversion-deployment</code>: verifies that ETL packages are replicated on all slave servers (incremental or full with <code>--force</code>).</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">Scheduler (EAC built-in)</h2>



<p><strong>Resolution:</strong> supports sub-minute plans (down to seconds), unlike system crontab.<br><strong>Activation:</strong> a plan can be switched on/off from the UI or bounded by start/end dates.</p>



<h3 class="wp-block-heading has-medium-font-size">Run the scheduler loop</h3>



<pre class="wp-block-code"><code># Launch the scheduler engine every minute
* * * * * php /path/to/app/bin/console eac:scheduler
</code></pre>



<h3 class="wp-block-heading has-medium-font-size">Gate via environment variable</h3>



<ul class="wp-block-list">
<li>Tasks are triggered <strong>only if</strong>: <code>SCHEDULE_ENABLED=true</code></li>



<li>The <strong>Start/Stop Scheduler</strong> button in the UI flips this variable instantly (no redeploy, no crontab change).</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Tip: In the task list, the <strong>Active now</strong> indicator turns true only when a run is due within the look-ahead window. A future schedule (e.g., Friday) will show <code>false</code> until the due time approaches.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">Background process hygiene</h2>



<ul class="wp-block-list">
<li><strong>Check &amp; clean background tasks</strong> <code># Example: sanity check every 5 minutes */5 * * * * php /path/to/app/bin/console eac:check-background-task</code> Kills stale background jobs when necessary.</li>



<li><strong>Upgrade helper (1.6 → 1.7)</strong> <code>php bin/console eac:clean-jobversion</code></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">ETL logs, stats &amp; metrics</h2>



<h3 class="wp-block-heading has-medium-font-size">Configure your ETL studio</h3>



<pre class="wp-block-code"><code>File &gt; Change project properties &gt; Job parameters &gt; Stat and logs
</code></pre>



<p>Choose “save logs in database”.</p>



<h3 class="wp-block-heading has-medium-font-size">Enable logs in EAC</h3>



<p>In <code>.env.local</code>:</p>



<pre class="wp-block-code"><code>APP_ENABLE_ETL_LOGS=true

# Connection string to the ETL logs database (MySQL, Postgres, Oracle, SQLite, MariaDB supported)
# Examples:
# DATABASE_URL_ETL_LOG="mysql://user:pass@127.0.0.1:3306/etl_logs?charset=utf8mb4"
# DATABASE_URL_ETL_LOG="postgresql://user:pass@127.0.0.1:5432/etl_logs"
DATABASE_URL_ETL_LOG="postgresql://user:pass@host:5432/etl_logs"

# Table names
ETL_STAT_TABLE_NAME=etl_stats
ETL_MET_TABLE_NAME=etl_metrics
ETL_LOG_TABLE_NAME=etl_logs
</code></pre>



<h3 class="wp-block-heading has-medium-font-size">Emit the root PID from your ETL job</h3>



<p>In your main job (e.g., a <code>tJava</code>):</p>



<pre class="wp-block-code"><code>System.out.println("@@eac@@root_pid=" + rootPid);
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">ETL log purging (keep storage &amp; UI fast)</h2>



<p>You can trigger purges <strong>manually</strong> in the task page or <strong>schedule</strong> them (Task details → <em>Cron scheduling</em> → <em>Add scheduler</em>, Task type = <strong>purge</strong>).</p>



<p><strong>Modes</strong></p>



<ul class="wp-block-list">
<li><strong>By date:</strong> delete logs before a fixed date (e.g., “&lt; 2025-07-01”).</li>



<li><strong>By history:</strong> keep only the last <em>X</em> runs (e.g., last 100).</li>



<li><strong>By duration:</strong> delete runs faster than <em>Y</em> seconds with status Success/Warning (e.g., <code>&lt; 30s</code>).</li>



<li><strong>Multiple purges</strong> can coexist (e.g., keep last 100 and also drop very short runs).</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading has-large-font-size">One-glance crontab template</h2>



<pre class="wp-block-code"><code># --- EAC core ---
* * * * * php /path/to/app/bin/console eac:scheduler
* * * * * php /path/to/app/bin/console eac:server-status --every=3
30 1 * * * php /path/to/app/bin/console eac:server-status:purge --days=4

# --- Replication checks ---
* * * * * php /path/to/app/bin/console eac:check-jobversion-deployment
0 2 * * * php /path/to/app/bin/console eac:check-jobversion-deployment --force

# --- Background hygiene ---
*/5 * * * * php /path/to/app/bin/console eac:check-background-task
</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Replace <code>/path/to/app</code> with your actual project root (the path that contains <code>bin/console</code>).</p>
</blockquote>



<p></p>
<p>L’article <a href="https://eac.cidwe.com/docs/useful-commands/">Useful commands</a> est apparu en premier sur <a href="https://eac.cidwe.com">ETL administration console</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://eac.cidwe.com/docs/useful-commands/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
