> ## Documentation Index
> Fetch the complete documentation index at: https://support.lilt.com/llms.txt
> Use this file to discover all available pages before exploring further.

# AEM

LILT's connector for [Adobe Experience Manager](https://www.adobe.io/apis/experiencecloud/aem.html) (AEM) enables companies to automatically push and pull web content between AEM and LILT for translation. The connector supports both **AEM 6.5 (on-premise)** and **AEM as a Cloud Service (AEMaaCS)**.

Once installed, content authors can create translation submissions directly from the **Lilt Translations** app within AEM — selecting pages, assets, tags, and target languages — and the connector handles sending content to LILT and importing completed translations back into AEM.

As of connector version 1.8, repositories can operate in one of two modes: **JCR Properties** (the standard page, content fragment, and property/metadata flow) or **DAM Asset Content** (translating binary document files directly). See [Translating DAM Asset Content](https://support.lilt.com/kb/aem#translating-dam-asset-content) for details.

## Supported Content Types

| Content Type                                    | AEM 6.5 | AEMaaCS     |
| ----------------------------------------------- | ------- | ----------- |
| Content Pages                                   | ✅       | ✅           |
| Experience Fragments                            | ✅       | ✅           |
| Experience Fragment Variants                    | ✅       | ✅           |
| Content Fragments                               | ✅       | ✅           |
| Content Fragment Variants                       | ❌       | ✅ (v1.5.0+) |
| Assets Metadata                                 | ✅       | ✅           |
| Tags                                            | ✅       | ✅           |
| DAM Asset Content (html, txt, docx, pptx, xlsx) | ❌       | ✅ (v1.8.0+) |

<Note>
  **Assets Metadata** and **DAM Asset Content** are different things. *Assets Metadata* translates the JCR properties attached to an asset (title, description, etc.). *DAM Asset Content* translates the binary file itself (`.docx`, `.xlsx`, `.pptx`, `.txt`, `.html`) and is configured on a dedicated DAM Asset Content repository.
</Note>

## Installation

Installation methods depend on your AEM environment. In both cases, contact your LILT account team to obtain the connector package and the appropriate version for your environment.

<Note>
  Check with your LILT account team for the latest connector version.
</Note>

### AEM as a Cloud Service

For AEMaaCS, the connector package must be deployed through your source code repository. AEM Cloud Service only allows one repository to be deployed at a time, so the LILT connector package must be embedded into your project's `all` package.

There are two deployment options:

**Option 1: Maven Dependency**

This method links your AEM project to the LILT connector repository via Maven. At a high level:

1. Create a GitHub Personal Access Token with `repo` and `write:packages` scopes.
2. Add a Maven settings file (`.cloudmanager/maven/settings.xml`) with your GitHub credentials.
3. Add the LILT connector repository and dependency to your root `pom.xml`.
4. Add the dependency and embedded package configuration to your `all/pom.xml`.
5. Deploy via Cloud Manager.

Your LILT account team will provide the specific repository URL, artifact coordinates, and version number to use.

**Option 2: Local Package File**

If you prefer not to connect to the Maven repository, you can deploy from a local copy of the connector package:

1. Obtain the connector `.zip` file from your LILT account team.
2. Create a `local-repo` directory in your AEM project and copy the package there.
3. Add a local repository reference to your root `pom.xml`.
4. Add the dependency and embedded package configuration to your `all/pom.xml`.
5. Commit the `local-repo` directory and deploy via Cloud Manager.

### AEM 6.5 (On-Premise)

For AEM 6.5, there are two installation methods:

**Option 1: Manual Package Upload (Quick Setup)**

1. Obtain the connector `.zip` file (e.g., `lilt-connector.all-<version>-6.5.zip`) from your LILT account team.
2. Log into your AEM Author instance and navigate to **Tools** > **Deployment** > **Packages** (or access Package Manager directly at `http://<your-aem-host>:<port>/crx/packmgr/index.jsp`).
3. Click **Upload Package**, select the `.zip` file, and click **OK**.
4. Locate the uploaded package in the list and click **Install**.
5. Keep the default installation settings and click **Install** to confirm.

<Note>
  The connector package installs 4 components. Verify all 4 are successfully installed. If upgrading, uninstall the previous version before uploading the new package.
</Note>

**Option 2: Maven Deployment**

Follow the same Maven approach as AEM Cloud Service Option 1, with two key differences:

* Use the `-6.5` version classifier (e.g., `1.5.0-6.5` instead of `1.5.0-cloud`).
* In `all/pom.xml`, use `<subpackages>` instead of `<embeddeds>` in the `filevault-package-maven-plugin` configuration.

### Verifying Installation

After installation completes on either environment:

1. Check that the package status shows as **Installed** in Package Manager.
2. Navigate to the AEM Apps view.
3. Verify that the **Lilt Translations** app appears in the apps list.

## Configuration

After installing the connector, you must complete configuration on both the LILT side (Connectors Builder) and the AEM side (Lilt Translations app) before you can submit content for translation.

### Step 1: Set Up the Connector in Connectors Builder

<Note>
  The AEM connector must be configured with support from LILT's technical support team using Connectors Admin and Connectors Builder — not through the AEM UI alone.
</Note>

1. Have your LILT technical point-of-contact generate a new API token for this connector in connectors admin and save it — you'll need it for the AEM configuration.
2. Give your LILT technical point-of-contact the list of languages (and models/data sources if applicable) you would like to use for translation. They will configure these in your LILT Connectors Builder.

### Step 2: Access the Lilt Translations App

1. Open your AEM instance.
2. Navigate to the **AEM Apps** view.
3. Click on the **Lilt Translations** app.

This is your main interface for configuring the connector. **Both the Configurations and Repositories sections must be set up before you can create any translation submissions.**

### Step 3: Configure General Settings

Navigate to **Configurations > General** and enter the following:

| Setting                               | Value                                                                                                                                                               |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Web Services URL**                  | `https://connectors-admin.lilt.com/api/v1.0`                                                                                                                        |
| **Lilt API Token**                    | The token you generated in Connectors Admin                                                                                                                         |
| **Scheduler Period (Minutes)**        | How often AEM should poll the LILT API for completed translations (e.g., `15`)                                                                                      |
| **Nested content fragment max depth** | How many levels deep the connector will follow content fragment references when "Translate nested content fragments" is enabled. Default: `5`. Allowed range: 1–20. |

You will also need to configure the **Translate Assets** setting, which controls how images, documents, and other digital assets are handled during translation. **This setting applies to JCR Properties repositories only** — it has no effect on DAM Asset Content repositories, where the file itself is always the translated output.

* **Clone asset to target language**: Creates a separate copy of each asset for every target language. Use this if you need different asset versions per language.
* **Append translatable fields to existing asset**: Keeps a single copy of each asset and adds translated metadata (title, description, etc.) for each language. Use this to manage all language versions in one place.

### Step 4: Configure Proxy Settings (Optional)

If your organization requires outgoing traffic to go through a proxy server, navigate to **Configurations > Proxy** and enter the proxy host, port, and credentials. Enable the proxy toggle to activate it. Most users can leave this section blank.

### Step 5: Configure Auto-Archiving (Optional)

Navigate to **Configurations > Auto-Archiving** to automatically archive old or completed translation jobs. You can set the frequency (Never, Weekly, or Monthly) and choose which job statuses should be archived (e.g., Completed, Failed, Canceled). This is especially helpful for teams with a high volume of translation jobs.

### Step 6: Configure Functionality

Depending on the version of AEM you are currently running, you will have access to a functionality tab which modifies the default views and functionalities available in repositories and job submission.

<Frame>
  <img src="https://mintcdn.com/lilt-db26f913/zo7y-DtZiKi-aIHI/images/Screenshot-2026-05-13-at-9.55.53-am.png?fit=max&auto=format&n=zo7y-DtZiKi-aIHI&q=85&s=da4a04d4476266d567c99a6648b77286" alt="Screenshot 2026 05 13 At 9 55 53 Am" width="833" height="530" data-path="images/Screenshot-2026-05-13-at-9.55.53-am.png" />
</Frame>

### Step 7: Create a Repository

A **repository** defines which content in AEM is available for translation and how it should be processed. You must create at least one repository before you can submit content for translation.

Navigate to **Repositories** and click **Create New Repository**.

#### Basics

* **Content Type**: Determines how the repository translates content — **JCR Properties** (default; pages, content fragments, and properties/metadata) or **DAM Asset Content** (binary document files). This is **locked after the repository is created** and cannot be changed later. See [Translating DAM Asset Content](https://support.lilt.com/kb/aem#translating-dam-asset-content).
* **Name**: A friendly name for your repository (e.g., "Main Site").
* **Path**: The root path in AEM where translatable content lives (e.g., `/content/wknd`). Only content under this path will be available for translation through this repository. *For DAM Asset Content repositories, this path is constrained to* `/content/dam`*.*
* **Default Submission Status**: The initial status for new submissions — `NOT_READY` (requires review before sending) or `READY` (can be sent immediately).
* **Submission Name Pattern**: A template for how submission names are generated (see [Submission Pattern Name](#submission-pattern-name) below).

#### Translation Rules

**Transformation Rules** define how source content paths and languages map to target locations. These paths are **<u>case sensitive</u>**. Each rule maps a source path to a target language and target path:

```text theme={null}
/content/site/en > de:/content/site/de
/content/site/en > fr:/content/site/fr
/content/site/en > es:/content/site/es
```

##### **Transformation Rule Validation**

Starting with AEM Cloud connector version 1.7.0, the connector can validate your transformation rules at key points in the workflow — when saving a repository and when starting a submission — so configuration issues are caught before content is sent for translation. To enable this functionality, you will need to toggle on the following functionalities in the configurations modal.

* Validate submission transformation rules
* Validate content path
* Restrict rule languages to domain
* New design experience

##### **What Gets Validated**

* **When saving a repository**, the connector checks that your transformation rules are well-formed and that source paths map to valid target language and path combinations.
  <Frame>
    <img src="https://mintcdn.com/lilt-db26f913/zo7y-DtZiKi-aIHI/images/Screenshot-2026-05-11-at-3.28.36-pm.png?fit=max&auto=format&n=zo7y-DtZiKi-aIHI&q=85&s=412de7651bf7d7904cdee10cead686a4" alt="Screenshot 2026 05 11 At 3 28 36 Pm" width="726" height="435" data-path="images/Screenshot-2026-05-11-at-3.28.36-pm.png" />
  </Frame>
  * **When starting a submission**, the connector checks that every content path in the submission has a matching transformation rule for each selected target language. If a target language is missing a rule, the connector will flag the issue and suggest how to resolve it — for example, by adding the missing language mapping to your repository's transformation rules.
    <Frame>
      <img src="https://mintcdn.com/lilt-db26f913/zo7y-DtZiKi-aIHI/images/Screenshot-2026-05-11-at-3.36.23-pm.png?fit=max&auto=format&n=zo7y-DtZiKi-aIHI&q=85&s=21490dc600c721d2979dc4b8a13becc4" alt="Screenshot 2026 05 11 At 3 36 23 Pm" width="713" height="434" data-path="images/Screenshot-2026-05-11-at-3.36.23-pm.png" />
    </Frame>

##### **Redesigned Transformation Rules Editor**

Alongside validation, cloud version 1.7.0 includes a redesigned transformation rules editor in the repository configuration. The new editor provides a clearer view of your source-to-target path mappings, making it easier to spot gaps and configure rules correctly.

##### **Disabling Validation**

If your setup uses custom content structures that don't follow standard path conventions, you can disable path validation in the 'Configurations> Functionality'. In most cases, we recommend keeping validation enabled.

**Link Rewriting Rules** (optional) control how internal links are rewritten during translation to point to the correct target-language pages:

```text theme={null}
content@href="@html"@*
text@href="@html"@*
```

**Translate Properties** specify which AEM properties (like `jcr:title`, `jcr:description`, etc.) should be included for translation. You can also set optional character limits:

```text theme={null}
jcr:title@*
jcr:description@*@50
text@*
```

**Do Not Translate Properties** lets you exclude specific content paths or resources from translation:

```text theme={null}
/content/site/en/secret-page
/content/site/en/drafts/*
```

<Note>
  On **DAM Asset Content** repositories, **Link Rewriting Rules**, **Translate Properties**, and **Translate Content Fragment Variations** are hidden, because they only apply to property-based content. **Transformation Rules** still apply and determine where translated files are delivered.
</Note>

#### Automation (Optional)

If you want translation submissions to be created automatically on a schedule, configure the automation time, frequency (daily or weekly), and other submission parameters. Select "Don't send automatically" to disable this feature.

<Note>
  Automation is **not available for DAM Asset Content repositories** — the Automation tab is hidden for them. DAM submissions must be started manually, even when the default submission status is `READY`.
</Note>

## Submitting Content for Translation

Once configuration is complete, you can create translation submissions from the **Lilt Translations** app in AEM.

### Creating a Submission

Navigate to **Submissions** and click **Create New Submission**. The submission wizard has three steps:

<Frame>
  <img src="https://mintcdn.com/lilt-db26f913/zo7y-DtZiKi-aIHI/images/Screenshot-2026-05-11-at-5.14.45-pm.png?fit=max&auto=format&n=zo7y-DtZiKi-aIHI&q=85&s=336be0a3222193a2d3af4946cc955ef3" alt="Screenshot 2026 05 11 At 5 14 45 Pm" width="552" height="809" data-path="images/Screenshot-2026-05-11-at-5.14.45-pm.png" />
</Frame>

**1. Job Setup**

* **Submission Name**: A name to identify this submission in the list.
* **Repository**: Select which repository to use (determines available content and rules).
* **Project Name**: Select the domain from your LILT organization.
* **Source Language**: The language of the original content (filtered by the selected domain).
* **Target Languages**: One or more languages to translate into (filtered by domain and source language with Cloud 1.7).
* **Due Date** (optional): Set a deadline for the translation.
* **Purchase Order / JIRA Ticket** (optional): Add tracking or billing information.
* Choose whether to translate **assets** and **tags** alongside pages. *(These options apply to JCR Properties repositories. On DAM Asset Content repositories, the **Translate Asset Metadata** and **Translate Tags** options are hidden, since only the file itself is translated, and the content picker is rooted under* `/content/dam `*and limited to supported file types.)*

### Translating Nested Content Fragments

Available in v1.9+. This option automatically discovers and includes referenced content fragments when you create a submission.

To use it, check **Translate nested content fragments** in the Job Setup step of the submission wizard.

When enabled:

* Select a Sites page or parent content fragment as usual in the Content step.
* The connector automatically adds any linked content fragments to the submission.
* Discovered fragments appear in the content table grouped under the item that references them, so you can see which fragments were pulled in from which path.
* Removing a seed path also removes its auto-discovered nested fragments.

Discovery runs when you advance from the Content step (and again at submit), and discovered fragments are included in transformation rule validation, the send pipeline, and the Review step.

**Configuring nesting depth**

Administrators can set the maximum reference depth at **Configurations > General > Nested content fragment max depth** (default: 5, range: 1–20). This limit applies consistently across the wizard, path validation, and the send pipeline.

**Requirements and limitations**

* Available for JCR Properties repositories only — not shown for DAM Asset Content repositories.
* Transformation rules must cover every discovered fragment path and target language. If a nested fragment has no matching rule, validation will flag it the same way as any other unmatched path.
* The option is off by default and must be enabled per submission.

**2. Content Selection**

* **Content Paths**: Choose the path(s) to send for translation.
* **Include Children** (optional): Include all subpages under the chosen path, so you can translate an entire section at once.

**3. Review**

* Review all selections — job details, content, and settings.
* Go back to previous steps if changes are needed.
* Click **Save Submission** to create the submission.

### Starting a Submission

After saving, the submission appears in the submissions list. To send it for translation:

1. Click the submission to view its details.
2. Review the selected content, languages, and settings.
3. Click **Start Submission** to send the job to LILT.
4. The status will update as the job progresses: `SENDING` → `IN_PROGRESS` → `COMPLETE`.

### Importing Translated Content

Once the translation is complete, import the results back into AEM:

1. When the submission status shows **Import Complete**, the **Reimport Content** button becomes available in the submission detail view.
2. Click **Reimport Content** to bring the translated pages, assets, and tags into your AEM instance.
3. The connector places translations according to your repository's transformation rules.

## FAQ / Troubleshooting

<AccordionGroup>
  <Accordion title="The Lilt Translations app is not visible after installation">
    * Verify the package was installed successfully in Package Manager and that all 4 components are present.
    * Check that the package status shows as **Installed**.
    * Restart AEM and check again.
    * Review AEM error logs for installation issues.
  </Accordion>

  <Accordion title="Cannot connect to the LILT API">
    * Verify the Web Services URL is exactly: `https://connectors-admin.lilt.com/api/v1.0`
    * Check that the API token is correct and has no extra spaces.
    * Confirm the token was generated in Connectors Builder for this specific connector.
    * Test network connectivity from your AEM instance to `connectors-admin.lilt.com`.
    * Check that firewall rules allow outbound HTTPS traffic.
    * If using a proxy, verify the proxy settings in the connector configuration are correct.
  </Accordion>

  <Accordion title="My submission is stuck in SENDING or IN_PROGRESS status">
    This may indicate a sync issue between AEM and LILT. Contact your LILT account team for support, or submit a request through the [LILT Help Center](https://lilt.atlassian.net/servicedesk/customer/portal/3).
  </Accordion>

  <Accordion title="Translated content appears in the wrong location">
    Check your repository's **Transformation Rules**. Ensure the source path and target language codes match your AEM content structure. For example, if your English content is at `/content/site/en`, verify the rules correctly map to the expected target paths like `/content/site/de` or `/content/site/fr`.
  </Accordion>

  <Accordion title="Source text appears in the translated output">
    * Verify your **Translate Properties** configuration includes all the properties that need translation.
    * Check that the content you submitted is under the correct source language path defined in your transformation rules.
  </Accordion>

  <Accordion title="I need to cancel a translation job">
    Contact your LILT account team immediately for cancellations. They can cancel the job in LILT and help you clean up the submission in AEM.
  </Accordion>

  <Accordion title="Source content was updated after submission">
    Notify your LILT account team of any source changes. They will work with you to ensure the correct content is translated and returned.
  </Accordion>

  <Accordion title="We do quality reviews outside of LILT and have corrections to apply">
    Contact your LILT account team. If a delivered project requires changes, they will walk you through the process to cancel the submission in AEM so that LILT can redeliver the files after implementing your modifications.
  </Accordion>

  <Accordion title="Launch Spaces and Projects">
    LILT's connector intentionally does not natively work with Launch Spaces and Projects, in favour of sending content directly to the target language for a more seamless translation experience.  Suitable solutions for those working with launch spaces are available and additional functionality would need to be a customization. 
  </Accordion>

  <Accordion title="Submission Retention Policy">
    LILT runs weekly cleanup jobs in the LILT + AEM connector and removes projects older than 45 days. This is built to address an AEM limitation where an item in the JCR can have no more than 10k child nodes.
  </Accordion>
</AccordionGroup>

<Accordion title="The 'selected' and 'sent/imported' counts don't match (e.g. 'See all 44' vs '24/24')">
  This is expected, not an error. **"See all (Y)"** counts the AEM content paths a user selects; the imported count only considers the translatable content imported into LILT which likely differs from all content selected. (files × target languages, after bundling and filtering). The connector consolidates asset metadata into single files (Append mode), bundles all tags into one file, and skips paths with no translatable content. A completed **X/X** means the submission finished successfully — no content was dropped silently. If you believe specific content is genuinely missing, contact your LILT account team to review that submission.
</Accordion>

## Submission Pattern Name

When you create or edit a repository, you can create or modify the naming conventions of the submission name.

You can add the following variables to the submission name, making sure they are surrounded by curly brackets:

* **today** — Today's date, formatted as YYYY-MM-DD.
* **filename** — The name of the current file being uploaded.
* **project\_prefix** — The `project_prefix` value provided in the configuration.
* **project\_name** — The `project_name` value assigned to the file in the code.
* **connector\_id** — The Connector ID.
* **connector\_type** — The Connector Type (e.g., "aem").
* **path\_names\[index]** — Specifies the name of the directory at the given level above the file being uploaded. The index corresponds to the directory level, starting from 0 for the file itself. For example, given the filename `en-US/fr-FR/file.txt` and the template option `path_names[2]`, the result will be `en-US`, as it is the second-level parent directory above the file.

## Translating DAM Asset Content

Starting with **AEM Cloud connector version 1.8**, the connector can translate **assets** stored in the AEM Digital Asset Manager (DAM) — Word, Excel, PowerPoint, plain text, and HTML files — by sending the original file to LILT and writing the translated file back into AEM.

This is a separate pipeline from the standard page/property translation flow. It is intended for customers who want to translate document assets directly, rather than pages, content fragments, or asset metadata.

<Note>
  DAM Asset Content translation is configured at the repository level using a new Content Type setting. A single repository is either a JCR Properties repository (the existing flow) or a DAM Asset Content repository — not both.
</Note>

### Supported File Types

DAM Asset Content repositories support the following binary file types:

| File Type  | Extension |
| :--------- | :-------- |
| Word       | `.docx`   |
| Excel      | `.xlsx`   |
| PowerPoint | `.pptx`   |
| Plain text | `.txt`    |
| HTML       | `.html`   |

The content path picker only allows selection of these supported file types. Other asset types (images, PDFs, etc.) are not selectable in a DAM Asset Content submission.

### Setting the Content Type on a Repository

When you create a repository, the repository wizard now includes a **Content Type** field with two options:

* **JCR Properties** (default) — the existing page, content fragment, and property-based translation pipeline.
* **DAM Asset Content** — the new pipeline for translating document assets.

<Note>
  The Content Type is locked after the repository is created and cannot be changed when editing the repository. If you need to switch a repository between modes, create a new repository with the desired Content Type.
</Note>

When **DAM Asset Content** is selected, the repository configuration changes in the following ways:

* The repository **path is constrained to** `/content/dam` — only assets under the DAM root can be translated.
* The **Automation** tab is hidden. Scheduled/automatic submissions are not supported for this mode (see note below).
* **Link Rewriting Rules**, **Translate Properties**, and **Translate Content Fragment Variations** are hidden, because these only apply to property-based content and have no effect on these files.

You still configure **Transformation Rules** as normal — they determine where translated files are delivered (`source > lang:target` format).

<Note>
  Scheduled submissions (Automation) are not available for DAM Asset Content repositories. On AEM as a Cloud Service this mode relies on Sling jobs, so submissions must always be started manually — even for repositories with a default status of READY.
</Note>

### Global "Translate Assets" Setting

The global **Translate Assets** option under **Configurations → General** applies to **JCR Properties repositories only**. It has no effect on DAM Asset Content repositories, where the file itself is always the translated content.

### Submitting DAM Asset Content for Translation

Creating a submission from a DAM Asset Content repository follows the same overall flow as a standard submission, with a few differences:

* DAM Asset Content repositories are clearly flagged in the repository picker so you can tell them apart from JCR Properties repositories.
* The **content path picker is rooted under** `/content/dam` and only shows the supported file types listed above.
* The **Translate Asset Metadata** and **Translate Tags** options are hidden, because these are JCR-only features. For DAM Asset Content, only the file is sent — no metadata, tags, or properties are translated.

Once content is selected, save and start the submission as usual. As with all submissions, click **Start Submission** to send the job to LILT.

<Warning>
  When submitting an asset for translation, the delivery locations **must be different** to the source location. Each language must have a unique delivery location. If this is not followed, the delivery file will overwrite the source file
</Warning>

### How Translated Files Are Imported

When a DAM Asset Content job is complete, the connector imports the translated files back into AEM:

1. If the target asset does not already exist, the connector **deep-copies the source asset** to the target path, preserving metadata and rendition structure.
2. It then **replaces only the original file content** of the asset with the translated version.
3. It triggers **full asset reprocessing** so that PDF previews, thumbnails, and other web renditions are regenerated to reflect the translated content.

Target paths are derived from your repository's **Transformation Rules** (`source > lang:target` format).

<Note>
  After import, the file content is translated immediately, but AEM regenerates its renditions (the thumbnail and preview representations AEM uses to display an asset) asynchronously. This reprocessing can take a few minutes. If the preview or PDF viewer still shows the source language right after import, it is usually just the rendition being regenerated — the underlying file is already translated.
</Note>

Import failures are recorded per file and surfaced on the **Documents** page with an error message. **Reimporting** a completed DAM Asset Content job is supported.

### Updating or Redelivering a File

If the source asset changes after a translation has been delivered, create a **new submission** for the updated file. The new delivery replaces the previous translated file at the target path; the connector does not keep the prior delivery, since the source it was based on has changed.

## Testing New Connector Versions

AEM is a highly customisable suite, and no two AEM instances are configured the same way. Language master structures, folder hierarchies, content fragment models, experience fragment templates, and workflow models all differ between customers — and sometimes between a customer's own staging and production environments. Connector behaviour that is perfect in LILT's testing environment, and even perfect in another customer's instance, can surface issues unique to your setup. For this reason, **customers are expected to test major connector releases in a staging or lower-level environment before deploying to production.** We strongly recommend giving the LILT team access to your staging environment during onboarding so we can observe your language master structure and content layout directly and validate behaviour against it.

When a new connector version is released, please:

1. Test the new feature or fix specifically — exercise the change in isolation against representative content.
2. Roundtrip-test every content type (content pages, content fragments, experience fragments, assets, tags, etc.) in **one** language first.
3. Roundtrip-test every content type in **all** target languages once single-language testing passes.

### Risks of Skipping Staging Testing

Deploying a new connector version directly to production carries real risk. Issues that staging testing typically catches include:

* **Content type regressions** — a release that handles content pages cleanly may mis-handle content fragments or experience fragments in your specific model configuration.
* **Language master / folder structure mismatches** — your language master layout may differ from the layouts the release was validated against, causing translations to land in the wrong path or fail to land at all.
* **Silent field omissions** — custom fields, metadata, or structured content fragment elements unique to your instance may not be picked up or returned as expected.
* **Workflow and status desynchronisation** — project or file statuses can fall out of sync between AEM and LILT, leaving in-flight work in an ambiguous state that is difficult to unwind in production.
* **Production rollback complexity** — issues discovered in production after live content has been sent are significantly harder to recover from than the same issues caught in staging, and may require manual re-translation, re-publication, or content surgery in AEM.
* **Translator and reviewer time wasted** — translation work performed against a misconfigured connector may need to be redone after the underlying issue is fixed.

If you don't have a staging environment available, contact your LILT Account team before upgrading — we'll help you scope a safe rollout plan.
