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

# Alation Connector | Official Documentation

> Connect Alation to Collate seamlessly with our comprehensive connector guide. Learn setup, configuration, and metadata synchronization steps.

export const MetadataIngestionUi = ({connector, selectServicePath, addNewServicePath, serviceConnectionPath}) => {
  return <>
   <p>
      To ingest metadata from your sources, you need to create a service connection.
      The service connects your source system with Collate. Once you create
      a service, you can use it to configure your ingestion workflows.<br />
      <br />
      To create a service connection and ingest your metadata, follow the steps below:
  </p>
  <Steps>
    <Step title="Select the Service">
    <ol>
          <li>
            On the left navigation bar, click <strong>Settings</strong>.
          </li>
          <li>
            On the next page, click <strong>Services</strong>, and then select the service.
            <img src="/public/images/connectors/visit-services-page.png" alt="Visit Services Page" />
          </li>
    </ol>
   </Step>


   <Step title="Create a New Service">
      
       To add a new service connection, click <strong>Add New Service</strong>.
      <img src="/public/images/connectors/create-new-service.png" alt="Create a new Service" />


   </Step>


     <Step title="Select the Connector">
       Select <strong>{connector}</strong> as the service type and click <strong>Next</strong>.


       {selectServicePath && <img src={selectServicePath} alt="Select Service" />}
   </Step>


   <Step title="Name and Describe your Service">
       Enter a unique, descriptive <strong>Service Name</strong> and <strong>Description</strong>.
       <ul>
         <li><strong>Service Name</strong>: Collate identifies services by their service name. Enter a name that distinguishes this deployment from other services, including other {connector} services you are ingesting metadata from.</li>
       </ul>


       <Note>
           The service name cannot be changed after it is set.
       </Note>


       {addNewServicePath && <img src={addNewServicePath} alt="Add New Service" />}
   </Step>


   <Step title="Configure the Service Connection">
       Set up the connection settings required for {connector}. <br /><br />
      
       Configure the following connection options to set up the service and start ingesting metadata from your sources. The right-hand panel displays help documentation for the selected connection type in the product UI

       {serviceConnectionPath && <img src={serviceConnectionPath} alt="Configure Service connection" />}
   </Step>
   </Steps>
   </>;
};

export const ConnectorDetailsHeader = ({name, icon, stage, availableFeatures, unavailableFeatures = [], availableFeaturesCollate = []}) => {
  const showSubHeading = availableFeatures?.length > 0 || unavailableFeatures?.length > 0 || availableFeaturesCollate?.length > 0;
  const totalAvailableFeatures = [...availableFeatures || [], ...availableFeaturesCollate || []];
  return <div className="container">
      <div className="Heading">
        <div className="flex items-center gap-3">
          {icon && <div className="IconContainer">
              <img src={icon} alt={name} noZoom className="ConnectorIcon" />
            </div>}
          <h1 className="ConnectorName">{name}</h1>
          <span className={`StageBadge ${stage === 'PROD' ? 'prod' : 'beta'}`}>
            {stage}
          </span>
        </div>
      </div>
      {showSubHeading && <div className="SubHeading">
          <div className="FeaturesHeading">Feature List</div>
          <div className="FeaturesList">
            {totalAvailableFeatures.map(feature => <div className="FeatureTag AvailableFeature" key={feature}>
                ✓ {feature}
              </div>)}
            {unavailableFeatures.map(feature => <div className="FeatureTag UnavailableFeature" key={feature}>
                ✕ {feature}
              </div>)}
          </div>
        </div>}
    </div>;
};

<ConnectorDetailsHeader icon="/public/images/connectors/alation.webp" name="Alation" stage="PROD" availableFeatures={["Metadata"]} unavailableFeatures={[]} />

In this section, we provide guides and references to use the Alation connector.
Configure and schedule Alation metadata workflow from the Collate UI:

* [Requirements](#requirements)
* [Data Mapping and Assumptions](#data-mapping-and-assumptions)
* [Metadata Ingestion](#metadata-ingestion)
* [Troubleshooting](/connectors/metadata/alation/troubleshooting)

## How to Run the Connector Externally

To run the Ingestion via the UI you'll need to use the OpenMetadata Ingestion Container, which comes shipped with
custom Airflow plugins to handle the workflow deployment.

If, instead, you want to manage your workflows externally on your preferred orchestrator, you can check
the following docs to run the Ingestion Framework **anywhere**.

<Columns cols={2}>
  <Card title="External Schedulers" href="https://docs.open-metadata.org/v1.11.x/deployment/ingestion">
    Get more information about running the Ingestion Framework Externally
  </Card>
</Columns>

## Requirements

Follow the official documentation to generate an API Access Token from [here](https://developer.alation.com/dev/docs/authentication-into-alation-apis#create-an-api-access-token).

## Data Mapping and Assumptions

Following entities are supported and will be mapped to the OpenMetadata entities as shown below.

| Alation Entity               | OpenMetadata Entity       |
| :--------------------------- | :------------------------ |
| Data Source (OCF and Native) | Database Service          |
| Data Source (OCF and Native) | Database                  |
| Schema                       | Schema                    |
| Table                        | Table                     |
| Columns                      | Columns                   |
| Custom Fields                | Custom Properties         |
| Tags                         | Tags                      |
| BI Servers                   | Dashboard Services        |
| Dashboard DataSource         | Dashboard DataModel       |
| Folder                       | Dashboard                 |
| Report                       | Chart                     |
| Users/Groups                 | Users/Teams               |
| Domains/Subdomains           | Domains/Subdomains        |
| Knowledge Articles           | Knowledge Center Articles |

* Since Alation does not have a concept of a Service entity, the Data Sources (OCF and Native) will be mapped to Database Service and Database in OpenMetadata. Hence, for each Data Source in Alation, there will be one Database Service and one Database in OpenMetadata.
* Custom fields will have a 1:1 mapping for all the entities except for Columns since OpenMetadata does not support custom properties for columns.
* Alation has two fields for descriptions i.e. `descriptions` and `comments`. These fields will be combined under one field `description` in OpenMetadata for all the entities.
* Utilize the databaseFilterPattern (datasource in Alation), schemaFilterPattern, and tableFilterPattern to apply filters to Alation entities. Provide the `ids` of the datasource, schemas, and tables for the Alation entities in the respective fields.

## Metadata Ingestion

<MetadataIngestionUi connector={"Alation"} selectServicePath={"/public/images/connectors/alation/select-service.png"} addNewServicePath={"/public/images/connectors/alation/add-new-service.png"} serviceConnectionPath={"/public/images/connectors/alation/service-connection.png"} />

## Connection Options

<Steps>
  <Step title="Connection Options">
    **hostPort**: Host and port of the Alation instance.

    ```bash theme={null}
    host and port (https://xxxx.alationcloud.com:443)
    ```

    **authType**: Following authentication types are supported:

    1. **Basic Authentication**:
       We'll use the user credentials to generate the access token required to authenticate Alation APIs

    * **username**: Username of the user.
    * **password**: Password of the user.

    2. **Access Token Authentication**:
       The access token created using the steps mentioned [here](https://developer.alation.com/dev/docs/authentication-into-alation-apis#create-an-api-access-token) can directly be entered. We'll use that directly to authenticate the Alation APIs

    * **accessToken**: Generated access token

    #### For Alation backend database Connection:

    Alation APIs do not provide some of the metadata. We extract this metadata directly from Alation's backend database by querying the tables.
    Note that this is an optional configuration, and if it is not provided, primary metadata will still be ingested.
    Below is the metadata fetched from the Alation database:
    `1. User and Group Relationships`
    Choose either postgres or mysql connection depending on the db:

    1. Postgres Connection

    * **username**: Specify the user to connect to Postgres. Make sure the user has select privileges on the tables of the Alation schema.
      **password**: Password to connect to Postgres.
      **hostPort**: Enter the fully qualified hostname and port number for your Postgres deployment in the Host and Port field.
    * **database**: Initial Postgres database to connect to. Specify the name of the database associated with the Alation instance.

    1. MySQL Connection

    * **username**: Specify the user to connect to MySQL. Make sure the user has select privileges on the tables of the Alation schema.
      **password**: Password to connect to MySQL.
      **hostPort**: Enter the fully qualified hostname and port number for your MySQL deployment in the Host and Port field.
    * **databaseSchema**: Initial MySQL database to connect to. Specify the name of the database schema associated with the Alation instance.
      **projectName**: Project name can be anything, for example `Prod` or `Demo`. It will be used while creating the tokens.
      **paginationLimit**: Pagination limit used for Alation APIs pagination. By default is set to 10.
      **includeUndeployedDatasources**: Specifies if undeployed datasources should be included while ingesting. By default is set to `false`.
      **includeHiddenDatasources**: Specifies if hidden datasources should be included while ingesting. By default is set to `false`.
      **ingestUsersAndGroups**: Specifies if users and groups should be included while ingesting. By default is set to `true`.
      **ingestKnowledgeArticles**: Specifies if knowledge articles should be included while ingesting. By default is set to `true`.
      **ingestDatasources**: Specifies if databases, schemas and tables should be included while ingesting. By default is set to `true`.
      **ingestDomains**: Specifies if domains and subdomains should be included while ingesting. By default is set to `true`.
      **ingestDashboards**: Specifies if BI sources and dashboards should be included while ingesting. By default is set to `true`.
      **alationTagClassificationName**: Specify the classification name under which the tags from Alation will be created in OpenMetadata. By default, it is set to `alationTags`.
      **connectionArguments**: These are additional parameters for Alation. If not specified the ingestion will use the predefined pagination logic.
      The following arguments are intended to be used in conjunction and are specifically for Alation DataSource APIs:
    * skip: This parameter determines the count of records to bypass at the start of the dataset. When set to 0, as in this case, it means that no records will be bypassed. If set to 10, it will bypass the first 10 records.
    * limit: This argument specifies the maximum number of records to return. Here, it's set to 10, meaning only the first 10 records will be returned.
      To perform incremental ingestion, these arguments should be used together. For instance, if there are a total of 30 datasources in Alation, the ingestion can be configured to execute three times, with each execution ingesting 10 datasources.
    * 1st execution: `{"skip": 0, "limit": 10}`
    * 2nd execution: `{"skip": 10, "limit": 10}`
    * 3rd execution: `{"skip": 20, "limit": 10}`
  </Step>

  <Step title="Advanced Configuration">
    Database Services have an Advanced Configuration section, where you can pass extra arguments to the connector
    and, if needed, change the connection Scheme.

    This would only be required to handle advanced connectivity scenarios or customizations.

    * **Connection Options (Optional)**: Enter the details for any additional connection options that can be sent to database during the connection. These details must be added as Key-Value pairs.
    * **Connection Arguments (Optional)**: Enter the details for any additional connection arguments such as security or protocol configs that can be sent during the connection. These details must be added as Key-Value pairs.

          <img src="https://mintcdn.com/collatedocs/lyQrThlmh8cYozqe/public/images/connectors/advanced-configuration.png?fit=max&auto=format&n=lyQrThlmh8cYozqe&q=85&s=5c8159f3c92aa4501c116c5f4f2139ae" alt="Advanced Configuration" width="1398" height="534" data-path="public/images/connectors/advanced-configuration.png" />
  </Step>

  <Step title="Test the Connection">
    Once the credentials have been added, click on *Test Connection* and *Save* the changes.

    <img src="https://mintcdn.com/collatedocs/L7psA65ao88vmcRI/public/images/connectors/test-connection.png?fit=max&auto=format&n=L7psA65ao88vmcRI&q=85&s=2133f0d65f18df1e57f69d2cc3bdeff4" alt="Test Connection" width="1494" height="310" data-path="public/images/connectors/test-connection.png" />
  </Step>

  <Step title="Configure Metadata Ingestion">
    In this step we will configure the metadata ingestion pipeline,
    Please follow the instructions below

    <img src="https://mintcdn.com/collatedocs/12mtkhFtvTP7FUxZ/public/images/connectors/configure-metadata-ingestion-metadata.png?fit=max&auto=format&n=12mtkhFtvTP7FUxZ&q=85&s=3fd9b0de7ea28278d8540c05d1c2f1b8" alt="Configure Metadata Ingestion" width="1514" height="770" data-path="public/images/connectors/configure-metadata-ingestion-metadata.png" />
  </Step>

  <Step title="Schedule the Ingestion and Deploy">
    Scheduling can be set up at an hourly, daily, weekly, or manual cadence. The
    timezone is in UTC. Select a Start Date to schedule for ingestion. It is
    optional to add an End Date.

    Review your configuration settings. If they match what you intended,
    click Deploy to create the service and schedule metadata ingestion.

    If something doesn't look right, click the Back button to return to the
    appropriate step and change the settings as needed.

    After configuring the workflow, you can click on Deploy to create the
    pipeline.

    <img src="https://mintcdn.com/collatedocs/piJyXg9wW6Ik1lg-/public/images/connectors/schedule.png?fit=max&auto=format&n=piJyXg9wW6Ik1lg-&q=85&s=f1add591824b44456f0e2ff259a21c6f" alt="Schedule the Workflow" width="2733" height="1083" data-path="public/images/connectors/schedule.png" />
  </Step>

  <Step title="View the Ingestion Pipeline">
    Once the workflow has been successfully deployed, you can view the
    Ingestion Pipeline running from the Service Page.

    <img src="https://mintcdn.com/collatedocs/cOe_QuHYxAbkMtTI/public/images/connectors/view-ingestion-pipeline.png?fit=max&auto=format&n=cOe_QuHYxAbkMtTI&q=85&s=8c754af74f99ee70e714f6f707b827e4" alt="View Ingestion Pipeline" width="2733" height="1271" data-path="public/images/connectors/view-ingestion-pipeline.png" />

    <Tip>
      If [AutoPilot](/how-to-guides/admin-guide/applications/autopilot) is enabled, workflows like usage tracking, data lineage, and similar tasks will be handled automatically. Users don’t need to set up or manage them - AutoPilot takes care of everything in the system.
    </Tip>
  </Step>
</Steps>

<Tip>
  When using a **Hybrid Ingestion Runner**, any sensitive credential fields—such as passwords, API keys, or private keys—must reference secrets using the following format:

  ```
  password: secret:/my/database/password
  ```

  This applies **only to fields marked as secrets** in the connection form (these typically mask input and show a visibility toggle icon).
  For a complete guide on managing secrets in hybrid setups, see the [Hybrid Ingestion Runner Secret Management Guide](https://docs.getcollate.io/getting-started/day-1/hybrid-saas/hybrid-ingestion-runner#3.-manage-secrets-securely).
</Tip>

## Troubleshooting

<Columns cols={2}>
  <Card title="Alation Troubleshooting" href="/connectors/metadata/alation/troubleshooting">
    Learn more about how to troubleshoot common Alation connector issues and resolve configuration or ingestion errors.
  </Card>
</Columns>
