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

# X12 Connector

> Configuration and usage guide for the CData Arc X12 connector.

export const SampleFilesTab = () => <>
    <p><em>サンプルファイルをアップロードすると、接続されているCSV Map またはXML Map コネクタでのマッピングが容易になります。</em></p>

    <p><strong>Sample Files</strong> タブを使用して、<a href="/26.3/cloud/ja/connectors/map">CSV Map</a> または<a href="/26.3/cloud/ja/connectors/xml-map/xml-map">XML Map</a> コネクタで使用するソースまたは宛先のXML テンプレートを生成します。<strong>Add Sample File</strong> をクリックします。</p>

    <p style={{
  paddingLeft: '1.5rem',
  marginTop: '0.25rem',
  marginBottom: '0.25rem'
}}>1. データの想定される形式と構造を反映したサンプルファイルが既にある場合は、<strong>File Upload</strong> を選択してファイルを参照します。あるいは、<strong>Manually Create</strong> を選択して、アプリケーション内で直接ファイルを作成します。<strong>Manually Create</strong> を選択した場合は、サンプルファイルに名前を付けます。<strong>Next</strong> をクリックします。</p>
    <p style={{
  paddingLeft: '1.5rem',
  marginTop: '0.25rem',
  marginBottom: '0.25rem'
}}>2. 既存のファイルを参照した場合、<strong>View File</strong> タブにその内容が表示されます。手動でファイルを作成することを選択した場合は、このタブにサンプルデータを入力します。<strong>Next</strong> をクリックします。</p>
    <p style={{
  paddingLeft: '1.5rem',
  marginTop: '0.25rem',
  marginBottom: '0.25rem'
}}>3. <strong>Translate and Preview</strong> タブには、XML に変換されたサンプルデータのプレビューが表示されます。サンプルに問題がなければ、<strong>Add</strong> をクリックします。</p>
  </>;

export const EdiPrintView = ({fileFormat = "EDI", customImage = "x12_print_preview.png"}) => <>
    <p>コネクタの<strong>Transactions</strong> タブで{fileFormat} ドキュメントを表示する場合、印刷プレビュー形式で表示するか、生データとして表示できます。デフォルトでは、次の画像に示すように、ドキュメントはプレビュー形式で表示されます。</p>
    <img src={`/public/images/${customImage}`} alt={`${fileFormat} print preview`} width="800" />
    <p>プレビュー形式では、データが読みやすいレイアウトで表示されます。右上隅の<strong>Raw View</strong> トグルを使用すると、書式設定されていないドキュメントを表示できます。</p>
  </>;

export const EdiUploadTestFile = ({fileFormat = "EDI", documentType}) => {
  const docLabel = documentType || fileFormat;
  return <>
      <p>入力ファイルのXML 表現を生成するには、次の手順を実行します。</p>
      <p style={{
    paddingLeft: '1.5rem',
    marginTop: '0.25rem',
    marginBottom: '0.25rem'
  }}>1. コネクタの<strong>Transactions</strong> タブで、<strong>More</strong> ドロップダウンをクリックし、<strong>Upload Test File</strong> をクリックします。</p>
      <p style={{
    paddingLeft: '1.5rem',
    marginTop: '0.25rem',
    marginBottom: '0.25rem'
  }}>2. XML としてモデル化したいディスク上のファイルに移動し、それを選択して<strong>OK</strong> をクリックします。</p>
      <p style={{
    paddingLeft: '1.5rem',
    marginTop: '0.25rem',
    marginBottom: '0.25rem'
  }}>3. フロー内で{fileFormat} コネクタをXML Map コネクタに接続します。この接続はいずれの方向でも可能です。XML Map コネクタへのインバウンド、またはXML Map コネクタからのアウトバウンドのいずれかです。</p>
      <p>XML Map コネクタは、テストファイルの構造を自動的に検出します。{fileFormat} コネクタを配置した場所に応じて、ファイルはXML Map コネクタの<strong>Source File</strong> または<strong>Destination File</strong> ドロップダウンメニューに表示されます。</p>
      <Note>XML Map コネクタにはソーステンプレートとデスティネーションテンプレートの両方が必要なため、残りのテンプレートは、データの元となる構造、または変換先となる構造に基づいて設定する必要があります。例えば、{docLabel} ドキュメントのデータをデータベースに挿入する必要がある場合、XML Map コネクタのもう一方のテンプレートはデータベース挿入のXML モデルになります。2 つのテンプレートファイル間のマッピングの作成について詳しくは、XML Map コネクタの<a href="/26.3/cloud/ja/connectors/xml-map/xml-map-designer">マッピングエディタの使用</a>を参照してください。</Note>
    </>;
};

export const EdiXmlMapIntro = ({fileFormat = "EDI"}) => <p>Arc の規約に従い、{fileFormat} コネクタは2 つのうちいずれかの動作を行います。XML 入力を受け取るか、XML 出力を生成するかのいずれかです。入力ファイルと出力ファイルが正しいXML 構造を持つようにするため、CData は、送信{fileFormat} ドキュメントを生成する際にはフロー内の前のステップとして、また受信{fileFormat} ドキュメントを受け取る際にはフロー内の次のステップとして、<a href="/26.3/cloud/ja/connectors/xml-map/xml-map">XML Map コネクタ</a>を使用することを強く推奨します。XML Map コネクタと{fileFormat} コネクタ間のやり取りは、以下で説明する<strong>Upload Test File</strong> 機能によって簡単になります。</p>;

export const DynamicallyProcessPartnersDetail = ({customImage1 = "edi_partners_tab.png", customImage2 = "edi_dynamically_process_partners_disabled.png"}) => <>
    <p>デフォルトでは、コネクタの<strong>Settings</strong> タブにある<strong>Dynamically process partners</strong> チェックボックスは有効になっています。これは、コネクタがEDI トランザクションからトレーディングパートナーとの関係を自動的に識別し追跡することを意味します。この場合、コネクタはライセンス上限までのすべてのパートナーを動的に管理し、上限に達したときに通知するため、手動でのパートナー設定は不要です。コネクタは処理するファイルに基づいて識別子を追跡するため、すべてのパートナーに対して単一のコネクタを使用できる可能性があります。</p>

    <img src="/public/images/edi_dynamically_process_partners.png" alt="Dynamically process partners setting" width="200" />

    <p><strong>EDI Partners</strong> タブは、Arc がパートナーを動的に処理している場合にのみ有効になります。このタブには、コネクタが識別した各関係のパートナー識別子およびローカル識別子と、そのパートナーのファイルの最終処理日が表示されます。<strong>EDI Partners</strong> タブでは、最終処理日が30 日以上前のパートナーを、パートナーにカーソルを合わせてゴミ箱アイコンをクリックすることで削除できます。</p>

    <img src={`/public/images/${customImage1}`} alt="EDI Partners tab" width="600" />

    <p>この設定を有効にすると、コネクタが識別したすべてのパートナーとの関係が、ライセンスの目的で自動的に追跡されます。これらは<strong>Settings &gt; License</strong> タブの<a href="/26.3/cloud/ja/getting-started/administration/settings/license-settings#connector-usage">Connector Usage</a> 部分に表示されます。ここでは、パートナー識別子およびローカル識別子、関連するコネクタ、日付情報を確認できます。</p>

    <img src="/public/images/edi_partner_licenses.png" alt="EDI partner licenses" width="800" />

    <p>この設定を無効にする場合は、次の画像に示すように、<strong>Settings</strong> タブの<strong>Partner Identifier</strong> および<strong>Personal Identifier</strong> フィールドでパートナーとの関係を明示的に設定する必要があります。</p>

    <img src={`/public/images/${customImage2}`} alt="Dynamically process partners disabled" width="700" />

    <p>手動で定義したパートナーとの関係も、<strong>Settings &gt; License</strong> タブの<a href="/26.3/cloud/ja/getting-started/administration/settings/license-settings#connector-usage">Connector Usage</a> 部分に表示されます。</p>
  </>;

export const CommonPendingAck = () => <p>確認応答（ACK）を必要とするEDI メッセージがその確認応答を受け取っていない場合、Pending-Timeout ヘッダーがメッセージに追加されます。メッセージはACK を待つ間、<em>Pending</em> ステータスになります。割り当てられた時間内にACK を受信しない場合、Pending-Timeout ヘッダーには、メッセージのステータスが<em>Error</em> に変わった日時が設定されます。ACK を受信してメッセージが<em>Success</em> に更新されると、空文字列の値を持つ新しいヘッダーが追加されます。</p>;

export const SlasTab = ({siteName = "CData Arc"}) => <>
    <p><em>サービスレベルアグリーメント（SLA）の設定に関する設定です。</em></p>
    <p>
      SLA を使用すると、フロー内のコネクタが送受信すると見込まれるボリュームを設定し、そのボリュームを達成すると見込まれる期間を設定できます。{siteName} は、SLA が達成されない場合にユーザーへ警告するメールを送信し、SLA を<em>At Risk</em> としてマークします。これは、SLA が間もなく達成されない場合に<em>Violated</em> としてマークされることを意味します。これにより、ユーザーは介入してSLA が達成されない理由を特定し、適切な対応を取る機会を得られます。At Risk 期間の終了時点でもSLA が達成されない場合、SLA はviolated としてマークされ、ユーザーに再度通知されます。
    </p>
    <p>
      SLA を定義するには、<strong>Expected Volume</strong> をオンに切り替え、<strong>Settings</strong> タブをクリックします。
    </p>
    <img src="/public/images/sla_empty.png" alt="SLA Empty" />
    <ul>
      <li>コネクタに送信と受信の個別のアクションがある場合は、ラジオボタンを使用してSLA がどちらの方向に適用されるかを指定します。</li>
      <li>ウィンドウの<strong>Expect at least</strong> 部分で、次を設定します。
        <ul>
          <li>処理を見込む最小トランザクション数（ボリューム）を設定します。</li>
          <li><strong>Every</strong> フィールドを使用して期間を指定します。</li>
          <li>SLA を有効にするタイミングを指定します。<strong>Starting on</strong> を選択した場合は、日付および時刻フィールドを入力します。</li>
          <li>SLA を有効にしたい曜日のチェックボックスをオンにします。必要に応じて、ドロップダウンで<strong>Everyday</strong> を選択します。</li>
        </ul>
      </li>
      <li>ウィンドウの<strong>Set status to 'At Risk'</strong> 部分で、SLA をAt Risk としてマークするタイミングを指定します。
        <ul>
          <li>デフォルトでは、SLA が違反状態になるまで通知は送信されません。これを変更するには、<strong>Send an 'At Risk' notification</strong> をオンにします。</li>
        </ul>
      </li>
    </ul>
    <p>
      次の例は、月曜日から金曜日まで毎日1000 件のファイルを受信すると見込むコネクタ向けに設定されたSLA を示しています。1000 件のファイルが受信されていない場合、期間の終了の1時間前にAt Risk 通知が送信されます。
    </p>
    <img src="/public/images/sla_defined.png" alt="SLA Configuration Example" />
    <Note>
      必要に応じてSLA アラートをオフにすることができます。これはメンテナンスウィンドウ中に役立ちます。navbar で<strong>Settings</strong> をクリックし、<strong>Alerts &gt; General Alerts</strong> に移動します。タブレットと鉛筆のアイコンをクリックして編集し、<strong>SLA Alerts</strong> 設定のチェックを外します。
    </Note>
  </>;

export const AlertsTab = ({siteNameShort = "Arc"}) => <>
    <p><em>アラートの設定に関する設定です。</em></p>
    <p>
      サービスレベルアグリーメント（SLA）を実行する前に、通知用のメールアラートをセットアップする必要があります。デフォルトでは、{siteNameShort} は<a href="/26.3/cloud/ja/getting-started/administration/settings/alerts">Alerts</a> タブのグローバル設定を使用します。このコネクタに別の設定を使用するには、<strong>Override global setting</strong> をオンに切り替えます。
    </p>
    <p>
      デフォルトではエラーアラートが有効になっており、エラーが発生するたびにメールが送信されます。これをオフにするには、<strong>Enable</strong> チェックボックスのチェックを外します。
    </p>
    <p>
      <strong>Subject</strong>（必須）を入力します。<strong>Allow {siteNameShort}Script in Subject</strong> をチェックすると、<strong>Subject</strong> フィールドで{siteNameShort}Script を使用できます。これを選択すると、<strong>{siteNameShort}Script エディタ</strong>ボタンが表示されます（<img src="/public/images/rest_arcscript_editor.png" alt="arcscript editor button" style={{
  display: 'inline',
  verticalAlign: 'middle',
  margin: 0
}} />）。
    </p>
    <p>
      必要に応じて<strong>Recipient</strong> のメールアドレスをカンマ区切りのリストで入力します。
    </p>
  </>;

export const MiscConnector = () => <>
    <p><em>Miscellaneous 設定は、特定のユースケース向けの設定です。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>説明</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>Other Settings</strong></td>
          <td>非表示のコネクタ設定をセミコロン区切りのリストで設定できます（例：<code>setting1=value1;setting2=value2</code>）。通常のコネクタのユースケースや機能では、これらの設定の使用は必要ありません。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const Logging = () => <>
    <p><em>ログの作成と保存を制御する設定です。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>説明</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>Log Level</strong></td>
          <td>コネクタが生成するログの詳細度です。サポートを依頼する際は、これを<strong>Debug</strong> に設定してください。</td>
        </tr>
        <tr>
          <td><strong>Log Subfolder Scheme</strong></td>
          <td>選択した間隔に従って、コネクタがLogs フォルダ内のファイルをグループ化するよう指示します。<strong>Weekly</strong> オプション（デフォルト）は、コネクタが毎週新しいサブフォルダを作成し、その週のすべてのログをそのフォルダに保存するよう指示します。この設定を空白のままにすると、コネクタはすべてのログをLogs フォルダに直接保存します。多数のトランザクションを処理するコネクタでは、サブフォルダを使用することでログを整理しやすくなり、パフォーマンスが向上します。</td>
        </tr>
        <tr>
          <td><strong>Log Messages</strong></td>
          <td>処理したファイルのログエントリにファイル自体のコピーを含めるには、これをオンにします。これを無効にすると、<strong>Transactions</strong> タブからファイルのコピーをダウンロードできなくなる場合があります。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const MacrosExamples = ({extraMacros = []}) => <>
    <p>
      %Ext% や %ShortDate% などの一部のマクロは引数を必要としませんが、引数を必要とするものもあります。
      引数を取るすべてのマクロは次の構文を使用します。<code>%Macro:argument%</code>
    </p>

    <p>引数を取るマクロの例を次に示します。</p>

    <ul>
      <li>%Header:headername%：<code>headername</code> はメッセージ上のヘッダーの名前です。</li>
      <li>%Header:mycustomheader% は、入力メッセージに設定された<code>mycustomheader</code> ヘッダーの値に解決されます。</li>
      <li>%Header:ponum% は、入力メッセージに設定された<code>ponum</code> ヘッダーの値に解決されます。</li>
      <li>%RegexFilename:pattern%：<code>pattern</code> は正規表現パターンです。例えば、<code>%RegexFilename:^([\w][A-Za-z]+)%</code> は、ファイル名の最初の単語にマッチしてそれに解決され、大文字・小文字を区別しません（<code>test_file.xml</code> は<code>test</code> に解決されます）。</li>
      <li>%Vault:vaultitem%：<code>vaultitem</code> は<a href="/26.3/cloud/ja/getting-started/administration/settings/global-settings-vault">Vault</a> 内のアイテムの名前です。例えば、<code>%Vault:companyname%</code> は、Vault に保存された<code>companyname</code> アイテムの値に解決されます。</li>
      <li>%DateFormat:format%：<code>format</code> は許容される日付形式です（詳細は<a href="/26.3/cloud/ja/scripting/value-formatters/date-formatters#sample-date-formats">日付形式のサンプル</a>を参照してください）。例えば、<code>%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%</code> は、ファイルの日付とタイムスタンプに解決されます。</li>
      {extraMacros.filter(item => item.example).map(item => <li key={`ex-${item.name}`}>{item.example}</li>)}
    </ul>

    <p>次の例に示すように、より高度なマクロを作成することもできます。</p>

    <ul>
      <li>1 つのファイル名で複数のマクロを組み合わせる：<code>%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT%</code></li>
      <li>マクロの外側にテキストを含める：<code>MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%</code></li>
      <li>マクロの内側にテキストを含める：<code>%DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%</code></li>
    </ul>
  </>;

export const MacrosTable = ({siteName = "CData Arc", extraMacros = []}) => <>
    <p>
      ファイル命名戦略でマクロを使用すると、データの整理効率と文脈の理解を高めることができます。
      ファイル名にマクロを組み込むことで、識別子、タイムスタンプ、ヘッダー情報などの関連情報を
      動的に含めることができ、各ファイルに有用な文脈を提供します。
    </p>

    <p>{siteName} は次のマクロをサポートしています。これらはすべて次の構文を使用します。<code>%Macro%</code></p>

    <table>
      <thead>
        <tr><th>マクロ</th><th>説明</th></tr>
      </thead>
      <tbody>
        <tr><td>ConnectorID</td><td>コネクタのConnectorID に評価されます。</td></tr>
        <tr><td>ConnectorName</td><td>コネクタの名前に評価されます。ファイル名やパスに接続名を含めることができます。例えば、どのデータベース接続が生成したかによってバックアップファイルにタグを付けるために使用できます。</td></tr>
        <tr><td>Ext</td><td>コネクタが現在処理しているファイルの拡張子に評価されます。</td></tr>
        <tr><td>Filename</td><td>コネクタが現在処理しているファイルのファイル名（拡張子を含む）に評価されます。</td></tr>
        <tr><td>FilenameNoExt</td><td>コネクタが現在処理しているファイルのファイル名（拡張子を除く）に評価されます。</td></tr>
        <tr><td>MessageId</td><td>コネクタが出力しているメッセージのMessageId に評価されます。</td></tr>
        <tr><td>RegexFilename:<em>pattern</em></td><td>コネクタが現在処理しているファイルのファイル名に正規表現パターンを適用します。</td></tr>
        <tr><td>Header:<em>headername</em></td><td>コネクタが現在処理しているメッセージ上の対象ヘッダー（<code>headername</code>）の値に評価されます。</td></tr>
        <tr><td>LongDate</td><td>システムの現在の日時を長い形式（例：Wednesday, January 24, 2024）で評価します。</td></tr>
        <tr><td>ShortDate</td><td>システムの現在の日時をyyyy-MM-dd 形式（例：2024-01-24）で評価します。</td></tr>
        <tr><td>DateFormat:<em>format</em></td><td>システムの現在の日時を指定された形式（<code>format</code>）で評価します。利用可能な日時形式については、<a href="/26.3/cloud/ja/scripting/value-formatters/date-formatters#date-formats-with-literal-characters">日付形式のサンプル</a>を参照してください。</td></tr>
        <tr><td>Vault:<em>vaultitem</em></td><td>指定されたVault アイテムの値に評価されます。</td></tr>
        {extraMacros.map(item => <tr key={item.name}>
            <td>{item.name}</td>
            <td>{item.description}</td>
          </tr>)}
      </tbody>
    </table>
  </>;

export const Performance = () => <>
    <p><em>コネクタへのリソースの割り当てに関する設定です。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>説明</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>Max Workers</strong></td>
          <td>このコネクタでファイルを処理するためにスレッドプールから消費されるワーカースレッドの最大数です。設定すると、<a href="/26.3/cloud/ja/getting-started/administration/settings/advanced-settings">Advanced Settings</a> ページの<a href="/26.3/cloud/ja/getting-started/administration/settings/performance-settings">Performance Settings</a> 部分にあるデフォルト設定が上書きされます。</td>
        </tr>
        <tr>
          <td><strong>Max Files</strong></td>
          <td>コネクタに割り当てられた各スレッドが送信するファイルの最大数です。設定すると、<a href="/26.3/cloud/ja/getting-started/administration/settings/advanced-settings">Advanced Settings</a> ページの<a href="/26.3/cloud/ja/getting-started/administration/settings/performance-settings">Performance Settings</a> 部分にあるデフォルト設定が上書きされます。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const companyName = "CData";

export const siteNameShort = "Arc";

export const siteName = "CData Arc";

export const fileFormat = "X12";
export const documentType = "X12";

X12 connectors support generating X12 files from XML and converting X12 files into XML.

## Key Capabilities

* Complete bidirectional EDI X12 to XML document processing with all transaction sets
* Interchange and functional group header validation and generation
* Support for 997/999 functional acknowledgments with automatic routing
* Advanced features like SNIP validation for HIPAA compliance

## Overview

When receiving X12 documents, X12 connectors validate X12 interchange headers and convert the X12 document into XML. This is useful as a staging step, because XML is the primary format that {siteNameShort} uses to manipulate data in a flow. The X12 connector automatically reads the input file to determine the appropriate X12 schema, then parses the document according to this schema.

When generating X12 documents, X12 connectors convert XML into X12 document syntax and apply the appropriate X12 interchange headers. This is useful as the final step for creating an X12 document, after the XML data has been fetched and transformed elsewhere in the flow.

<Note>Interchange header validation can be avoided by selecting *Test Data* in the **Usage Indicator** connector setting.</Note>

An X12 connector can also automatically generate acknowledgments for incoming X12 documents. For more information, see [Acknowledgments](#x12-acknowledgments).

## Prerequisites

Before you begin, make sure you have the correct schema installed for the document type you need to process. The X12 connector natively supports the following schema definitions: 00401, 00403 and 00501. You can find them in the `app_data/x12_schemas` directory of your {siteNameShort} installation. If you need different schemas, you can download the additional schema files from the [{companyName} website](https://arc.cdata.com/schemas/) for free.

After you download and extract the zip archive, place the entire folder into an appropriately named subdirectory of the `app_data/x12_schemas` directory.

## Connector Configuration

This section contains all of the configurable connector properties.

### Settings Tab

#### Translation Configuration

*Settings related to the core operation of the connector.*

| Setting                          | Description                                                                                                                                                                                                                                            |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Connector Id**                 | The static, unique identifier for the connector.                                                                                                                                                                                                       |
| **Connector Type**               | Displays the connector name and a description of what it does.                                                                                                                                                                                         |
| **Connector Description**        | An optional field to provide a free-form description of the connector and its role in the flow.                                                                                                                                                        |
| **Translation Type**             | Whether the connector is converting an X12 document into XML, or XML data into an X12 document.                                                                                                                                                        |
| **Dynamically process partners** | When enabled, the connector automatically identifies and tracks trading partner relationships from EDI transactions. When disabled, you must manually define the partner relationship. See [EDI Partners Tab](#edi-partners-tab) for more information. |

#### EDI Partner

| Setting                         | Description                                                                                                                                                                                              |
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Partner Identifier (ISA06)**  | Identifies the sending party in the X12 communication (when generating an X12 document, this should be your identifier). Only applicable when **Dynamically process partners** is unchecked.             |
| **Personal Identifier (ISA08)** | Identifies the receiving party in the X12 communication (when generating an X12 document, this should be your partner's identifier). Only applicable when **Dynamically process partners** is unchecked. |

#### Interchange Settings

*Settings related to the interchange headers of X12 documents. When generating documents, these settings are applied as interchange headers in the resulting document. When parsing documents, the interchange settings are used to validate the incoming document.*

| Setting                            | Description                                                                                                                                                         |
| ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Partner Id Qualifier (ISA05)**   | Qualifies the **Partner Identifier** by providing context to the value.                                                                                             |
| **Personal Id Qualifier (ISA07)**  | Qualifies the **Personal Identifier** by providing context to the value.                                                                                            |
| **Control Version Number (ISA12)** | Identifies the control version for the interchange.                                                                                                                 |
| **Usage Indicator (ISA15)**        | Whether the data exchanged represents test data, production data, or general information. When this is set to *Test Data*, interchange headers are *not* validated. |
| **Functional Group**               | Check this to automatically add the sender and receiver identifiers to the [Functional Group Settings](#functional-group-settings) on the **Advanced** tab.         |

#### Acknowledgments

*Settings related to generating and requesting acknowledgments.*

| Setting                 | Description                                                                                                                                                                                                                |
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **TA1 Acknowledgment**  | Whether to send TA1 interchange acknowledgments.                                                                                                                                                                           |
| **Functional ACK**      | Whether a functional ACK should be returned (when receiving) and requested (when sending). A functional acknowledgment serves as an indication of acceptance or rejection of the received interchange and transaction set. |
| **Functional ACK Type** | Check this to specify whether to use a 997 or 999 functional acknowledgment.                                                                                                                                               |

### Sample Files Tab

<SampleFilesTab />

### Advanced Tab

#### EDI Delimiters

*Settings that specify which characters separate elements, segments, and so on.*

| Setting                         | Description                                                                              |
| ------------------------------- | ---------------------------------------------------------------------------------------- |
| **Data Element Separator**      | The character that separates individual data elements in the document.                   |
| **Component Element Separator** | The character that separates elements within a composite data structure in the document. |
| **Segment Terminator**          | The character that indicates the end of a segment in the document.                       |
| **Suffix**                      | Appended to the **Segment Terminator** to distinguish segments.                          |

#### Interchange Settings

*Additional settings related to the X12 interchange headers.*

| Setting                                  | Description                                                                     |
| ---------------------------------------- | ------------------------------------------------------------------------------- |
| **Authorization Qualifier (ISA01)**      | Qualifies the **Authorization Id** setting by providing context for the value.  |
| **Authorization Id (ISA02)**             | Identifies the authorization level associated with the interchange.             |
| **Security Qualifier (ISA03)**           | Qualifies the **Security Password** setting by providing context for the value. |
| **Security Password (ISA04)**            | Represents security information about the interchange.                          |
| **Control Standards Identifier (ISA11)** | Identifies the X12 standard. The only valid value is *U*.                       |

#### Functional Group Settings

*Settings related to the functional group headers of X12 documents. These optional identifiers can help group similar interchanges or facilitate sub-addressing in an organization.*

| Setting                            | Description                                                        |
| ---------------------------------- | ------------------------------------------------------------------ |
| **Partner Identifier (GS02)**      | Identifies the sending party in the X12 communication.             |
| **Personal Identifier (GS03)**     | Identifies the receiving party in the X12 communication.           |
| **Date Format (GS04)**             | How the datestamp should be formatted.                             |
| **Time Format (GS05)**             | How the timestamp should be formatted.                             |
| **Responsible Agency Code (GS07)** | Identifies the issuer of the X12 standard.                         |
| **Identifier Code (GS08)**         | Identifies the version, release, and industry of the X12 standard. |

#### Advanced Settings

*Settings not included in the previous categories.*

| Setting                      | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Batch Transactions**       | An interchange can contain multiple transactions. When this is not checked, the connector creates a separate output file for each transaction in the interchange. When checked, the connector groups all transactions into a single output file. Only applicable when the **Translation Type** is X12 to XML.                                                                                                                                                                                                                                                                                                      |
| **Use Reference Id**         | When checked, when you are translating X12 into XML, reference Ids are used to name XML elements. Only applicable when the **Translation Type** is X12 to XML. For example: `<_143>value</_143>`. If this is unchecked, the Reference designator is used to name XML elements: `<BEG03>value</BEG03>`                                                                                                                                                                                                                                                                                                              |
| **Encoding**                 | Specifies the character encoding (such as ASCII or UTF-8).                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Expand Qualifier Values**  | When checked, XML elements containing an EDI qualifier include child elements containing the qualifier code and value. For example:<br /><code>\<N101></code><br />  <code>\<Code>ST\</Code></code><br />  <code>\<Value>Ship To\</Value></code><br /><code>\</N101></code>                                                                                                                                                                                                                                                                                                                                        |
| **Functional Acks**          | By default, all functional acknowledgments (997, 999) are routed to the connector selected in the flow diagram, and XML translations are not received in the **Transactions** tab. Check this to have the translated acknowledgment also be included in the **Transactions** tab. This allows functional acknowledgments to be integrated into a destination source in addition to new EDI documents.                                                                                                                                                                                                              |
| **Generate Description As**  | When translating X12 into XML, descriptions of the X12 segments and elements can be provided as context for the X12 data. Use this dropdown to choose whether to add this context as an XML comment or as XML attributes.                                                                                                                                                                                                                                                                                                                                                                                          |
| **HIPAA Schemas**            | When checked, the connector uses a separate set of EDI schemas with HIPAA constraints applied when translating and validating documents. This setting is ignored for EDI documents other than healthcare documents subject to HIPAA.                                                                                                                                                                                                                                                                                                                                                                               |
| **HIPAA 278**                | Two separate schemas can be used for 278 documents, depending on whether these should be interpreted as requests or responses. When checked, the request schema is used; otherwise the response schema is used.                                                                                                                                                                                                                                                                                                                                                                                                    |
| **Local File Scheme**        | A scheme for assigning filenames to messages that are output by the connector. You can use macros in your filenames dynamically to include information such as identifiers and timestamps. For more information, see [Macros](#macros).                                                                                                                                                                                                                                                                                                                                                                            |
| **Nest Loops**               | When checked, the connector detects EDI structures that have hierarchical relationships embedded in the EDI data, and generates XML with these hierarchical relationships represented as parent-child relationships. See [Master-Detail Hierarchy: Translating HLLoops](#master-detail-hierarchy-translating-hlloops) for more information.                                                                                                                                                                                                                                                                        |
| **Processing Delay**         | The amount of time (in seconds) by which the processing of files placed in the **Transactions** tab is delayed. This is a legacy setting. Best practice is to [use a File connector](../flows/designing-a-flow#ローカルファイルシステムとのやり取り) to manage local file systems instead of this setting.                                                                                                                                                                                                                                                                                                                           |
| **SNIP Validation**          | When enabled, the connector performs the first three levels of SNIP Validation for HIPAA compliance: (1) the syntactical integrity of the document, (2) the presence of required segments and appropriate repetitions for repeated segments, and (3) the correct mathematical relationship between claim line items and claim totals. Higher levels of SNIP Validation (4+) might require a [Validate](./validate) connector or custom script. Read <a href="https://arc.cdata.com/kb/articles/snip-validation.rst" target="_blank">this knowledgebase article</a> for more details on how to use SNIP Validation. |
| **Strict Schema Validation** | Whether the connector should Ignore, Warn, or Fail when the following are detected: repeat counts above the allowed number, missing required elements or segments, invalid qualifier and code values, disallowed element lengths, and invalid element values. Choosing Disable turns off the schema validation checks.                                                                                                                                                                                                                                                                                             |
| **Track ISA06**              | Whether to add ISA06 values as tracked headers to processed messages.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **Track ISA08**              | Whether to add ISA08 values as tracked headers to processed messages.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **Track Transaction Types**  | Whether to add transaction types as tracked headers to processed messages.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **Validate Identifiers**     | Check this to ensure that the identifiers in the translated document match the identifiers in the connector's configuration.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| **Duplicate File Action**    | How the connector should behave when it receives a message with a control number that the connector has seen before (a duplicate). When set to `Ignore`, the connector silently skips the duplicate and continues processing. When set to `Warn`, the connector processes the file but returns a warning. When set to `Fail`, the connector does not accept the file and returns an error.                                                                                                                                                                                                                         |
| **Upload Schema**            | Use this to upload a schema and install it in the connector's Schema folder. If a schema already exists, you are asked if you want to overwrite it.                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **Reset State**              | EDI connectors keep track of control numbers that have been used and increment that number to ensure that future runs do not duplicate data. Use this button to reset the counter to its initial state without changing any of the configured settings.                                                                                                                                                                                                                                                                                                                                                            |

#### Logging

<Logging />

#### Miscellaneous

<MiscConnector />

### EDI Partners Tab

<DynamicallyProcessPartnersDetail customImage1="edi_x12_partners_tab.png" customImage2="edi_x12_partner_config_disabled.png" />

### Automation Tab

#### Automation Settings

*Settings related to the automatic processing of files by the connector.*

| Setting                  | Description                                                                                                                                                                                                                                                                                                                                                                   |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Send**                 | A toggle that instructs the connector to automatically send files when they are ready.                                                                                                                                                                                                                                                                                        |
| **Resend Interval**      | The interval the connector waits before resending a file that received a negative ACK. For example, if a trading partner receives the file but something is wrong with it and they send back a negative ACK, this setting specifies how long to wait before sending the file again.                                                                                           |
| **Max Attempts (async)** | The maximum number of times the connector processes the input file when a functional ACK is requested. Success is based on the return of a functional ACK within the **Resend Interval**. If a successful functional ACK is not returned, the connector resends the file until **Max Attempts** is reached. If this is set to 0, the connector resends the file indefinitely. |

#### Performance

<Performance />

### Alerts Tab

<AlertsTab />

### SLAs Tab

<SlasTab />

## Converting Formats

The following sections detail the process of converting X12 to XML and vice versa.

### X12 to XML

Setting the **Translation Type** to *X12 to XML* instructs the connector to parse incoming X12 documents into XML. The connector first reads all of the header information for the Interchange and Functional Group sections of the document and validates them against the configured connector settings (unless **Usage Indicator** is set to *Test Data*). The connector then parses out the specific X12 schema used in the document and loads the schema from the `x12_schemas` folder on disk (additional schema files can be <a href="https://arc.cdata.com/schemas/" target="_blank">downloaded from our website</a> for free). Using the schema, the connector generates XML representing the X12 structure of the document, populates the XML with the values from the document, and provides context to each value either as XML comments or as attributes in the XML elements (based on the value of **Generate Descriptions As**).

To see this process with a set of test X12 documents, navigate to the **Transactions** tab of an X12 connector (with **Translation Type** set to *X12 to XML*) and select **More > Create Test Files**. X12 documents for an invoice, purchase order, purchase order acknowledgment, and shipping notice are automatically generated and placed in the **Transactions** directory. After these test files are processed by the connector, navigate to the **Transactions** tab to see the resulting XML.

Once X12 documents are converted to XML, the data can be transformed and manipulated in many ways. Commonly, X12 data needs to be stored in a database or other back-end application system. Since {siteNameShort} uses XML to represent `inserts` into these back-end systems, storing the X12 data becomes a matter of mapping one XML structure onto another. This is typically done with the visual designer-driven [XML Map connector](./xml-map/xml-map).

### XML to X12

Setting the **Translation Type** to *XML to X12* instructs the connector to generate an X12 document out of an XML representation of the document. After the connector has constructed the X12 message out of the data parsed from the XML, it adds functional group and interchange headers according to the configured connector settings.

To see this process with a set of test XML files, navigate to the **Transactions** tab of an X12 connector (with **Translation Type** set to *XML to X12*) and select **More > Create Test Files**. XML files representing an invoice, purchase order, purchase order acknowledgment, and shipping notice are automatically generated and placed in the **Transactions** directory. After these test files are processed by the connector, navigate to the **Transactions** tab to see the resulting X12 document.

### Print View

<EdiPrintView fileFormat={fileFormat} customImage="x12_print_preview.png" />

## Use With the XML Map Connector

<EdiXmlMapIntro fileFormat={fileFormat} />

### Upload Test File

<EdiUploadTestFile fileFormat={fileFormat} documentType={documentType} />

## X12 Acknowledgments

The following sections detail the three types of X12 acknowledgments (ACKs), and how {siteNameShort} expects, processes, and generates ACKs.

### Interchange ACKs, 997s, and 999s

A TA1 is the commonly accepted form of interchange acknowledgment. It is an indication that an interchange has taken place between the two parties, although not necessarily that any individual message has been exchanged. These serve as a receipt to the sender indicating that the EDI message was successfully received, but it does not specify whether there were any issues while processing the content of the message.

The 997 (Version 4010), 997 (Version 5010), or 999 acknowledgements are considered functional ACKs: acknowledgements that an individual message (such as an invoice or purchase order) has been accepted. These are generated in response to a bidirectional agreement by both parties.

### Expecting, Processing, and Generating Acknowledgments

#### Expecting Acknowledgements

X12 connectors, while operating in XML to X12 mode, can be configured so that both interchange and functional acknowledgments can be requested for an interchange. When **TA1 Acknowledgment** or **Functional ACK** is checked in the [Acknowledgments](#acknowledgments) section of the Settings tab, the connector maintains a Pending ACK status for a transmission until the appropriate ACKs have been returned and processed. This means that the connector status can be used to determine whether the recipient has confirmed that they received the interchange.

<CommonPendingAck />

The following diagram shows the logical flow involved when expecting an ACK from an invoice document:

<img src="https://mintcdn.com/cdata-arc/97fbscTC2p-cCdS3/public/images/x12-ack-receive.png?fit=max&auto=format&n=97fbscTC2p-cCdS3&q=85&s=aaa54394843458be9441cfc64ec89723" alt="Receive X12 ACK" width="640" height="408" data-path="public/images/x12-ack-receive.png" />

In the illustration above, an X12 connector operating in XML to X12 mode generates the document to be exchanged **(1)** and holds it in a Pending ACK state while the document is transmitted to the trading partner. The trading partner processes the transmission according to their business logic and creates acknowledgments in accordance with the configured exchange parameters **(2)**. When the acknowledgments are returned, they are processed according to the information in the next section **(3)**.

#### Processing Acknowledgments

In a typical flow, X12 ACKs arrive at an X12 connector operating in X12 to XML mode. This X12 connector can be configured to automatically route any received acknowledgments to the X12 connector that originally generated the document being acknowledged. Routing ACKs between X12 connectors is configured visually on the [Flows](../flows/flows) canvas by dragging the gray dot at the bottom of the X12 connector in X12 to XML mode onto the X12 connector that is in XML to X12 mode.

Once the X12 connector in XML to X12 mode receives the routed ACK, it pairs the ACK to the original message and changes its state from Pending ACK to Sent.

#### Generating Acknowledgements

When an X12 connector in X12 to XML mode receives a message and generates the corresponding XML, it can automatically generate acknowledgments for the received message. To accomplish this, check **TA1 Acknowledgment** and/or **Functional ACK expected** in the [Acknowledgments](#acknowledgments) section of the Settings tab. These acknowledgments must be routed to another X12 connector (in XML to X12 mode) to finalize the ACK. The connector to which the ACK is routed applies interchange headings and passes the ACK along to the next connector in the flow like any other X12 message. To route the ACK appropriately, drag the gray dot at the bottom edge of the X12 connector in X12 to XML mode onto the X12 connector that is in XML to X12 mode.

The following diagram shows the logical flow involved when creating an ACK for a received invoice document:

<img src="https://mintcdn.com/cdata-arc/97fbscTC2p-cCdS3/public/images/x12-ack-create.png?fit=max&auto=format&n=97fbscTC2p-cCdS3&q=85&s=b717429d2a0057d86256cfc50ff0f3db" alt="Create X12 ACK" width="640" height="408" data-path="public/images/x12-ack-create.png" />

As shown in the illustration above, after a trading partner sends a message expecting an acknowledgment **(1)**, the X12 connector in X12 to XML mode that parses the document automatically generates an ACK **(2)**. This ACK is an XML file containing the transactional information relevant for the transaction. Then, this XML acknowledgment is routed back to an X12 connector in XML to X12 mode **(3)** so that the interchange headers (and any other X12 party agreement settings) are applied before the ACK is sent back to the trading partner.

## Master-Detail Hierarchy: Translating HLLoops

In EDI documents, most hierarchical relationships are represented by the order of EDI segments. Some EDI structures, like HLLoops (which are found in *Advance Shipment Notifications*, or X12 856s), do not follow this convention and instead have the hierarchical relationships embedded in the EDI element data itself. This can make it difficult to preserve these hierarchical relationships when converting the EDI data to XML.

The X12 connector supports preserving hierarchical relationships in HLLoops via the **Nest Loops** setting in the [Advanced Settings](#advanced-settings) portion of the Advanced tab. When enabled, the connector parses the elements in the HLLoop segments to determine which segments "belong to" other segments in a hierarchical relationship. These hierarchical relationships are reflected in the output XML as parent-child relationships; in other words, this setting converts hierarchy implied by the EDI content into hierarchy represented by the XML structure.

This section explains how hierarchy is encoded in HLLoop data, and how this hierarchy is converted into XML when **Nest Loops** is enabled.

### HLLoop Hierarchy

All HL segments have two values that help establish hierarchy:

* an Id value, which identifies the current HL segment (this value is stored in HL01, or the first element in an HL segment)
* a parent-Id value, which identifies the current HL segment's hierarchical parent (this value is stored in HL02, or the second element in an HL segment)

For example, an HL segment has an Id value of '2'. If the next HL segment should "belong to" this prior segment in a hierarchical relationship, then the next HL segment's parent-Id should also be '2'.

If an HL segment's parent-Id is '0', the segment does not have a parent (it is at the top level of the hierarchy).

#### HLLoop Example

To further clarify the hierarchical relationships in HLLoop data, take the following EDI snippet as sample input (only the lines beginning with *HL* are relevant to determining the data hierarchy; the remaining segments are included to more closely represent actual EDI data):

```csharp theme={null}
HL*1*0*S      // First HL loop, the shipment loop
TD3*RR*SEAU*1234567
HL*2*1*O      // Second HL loop, the order loop
PRF*PO111111
HL*3*2*P      // Third HL loop, the first package loop
MAN*UC*PACKAGE1
HL*4*3*I      // Fourth HL loop, the first item loop
MAN*UC*ITEM_1
HL*5*3*I      // Fifth HL loop, the second item loop
MAN*UC*ITEM_2
HL*6*2*P      // Sixth HL loop, the second package loop
MAN*UC*PACKAGE_2
HL*7*6*I      // Seventh HL loop, the third item loop
MAN*UC*ITEM_1
HL*8*6*I      // Eighth HL loop, the fourth item loop
MAN*UC*ITEM_3
```

In this data, the second HL segment "belongs to" the first HL segment in a hierarchical relationship. This can be determined by looking at the HL01 and HL02 values for these segments:

* The HL01 (Id) value for the first HL segment is '1'
* The HL02 (parent-Id) value for the second HL segment is also '1'

The same process of matching parent-Id values to Id values can be used to determine all of the hierarchical relationships in the data.

### Converting HLLoop Hierarchy to XML

When **Nest Loops** is enabled, the X12 connector handles the conversion of HL hierarchy to XML hierarchy automatically. The connector parses the HL01 and HL02 element values from the EDI input and ensures that XML elements are appropriately nested (indented) inside the elements representing their parents.

To see how the HL hierarchy is converted into XML hierarchy, the following XML output is generated from the above sample HL data when **Nest Loops** is enabled:

```xml theme={null}
<HLLoop1_S>
  <HL><HL01>1</HL01><HL02>0</HL02><HL03>S</HL03></HL>
  <TD3><TD301>RR</TD301><TD302>SEAU</TD302><TD303>1234567</TD303></TD3>
  <HLLoop1_O>
    <HL><HL01>2</HL01><HL02>1</HL02><HL03>O</HL03></HL>
    <PRF><PRF01>PO111111</PRF01></PRF>
    <HLLoop1_P>
      <HL><HL01>3</HL01><HL02>2</HL02><HL03>P</HL03></HL>
      <MAN><MAN01>UC</MAN01><MAN02>PACKAGE1</MAN02></MAN>
      <HLLoop1_I>
        <HL><HL01>4</HL01><HL02>3</HL02><HL03>I</HL03></HL>
        <MAN><MAN01>UC</MAN01><MAN02>ITEM_1</MAN02></MAN>
      </HLLoop1_I>
      <HLLoop1_I>
        <HL><HL01>5</HL01><HL02>3</HL02><HL03>I</HL03></HL>
        <MAN><MAN01>UC</MAN01><MAN02>ITEM_2</MAN02></MAN>
      </HLLoop1_I>
    </HLLoop1_P>
    <HLLoop1_P>
      <HL><HL01>6</HL01><HL02>2</HL02><HL03>P</HL03></HL>
      <MAN><MAN01>UC</MAN01><MAN02>PACKAGE2</MAN02></MAN>
      <HLLoop1_I>
        <HL><HL01>7</HL01><HL02>6</HL02><HL03>I</HL03></HL>
        <MAN><MAN01>UC</MAN01><MAN02>ITEM_1</MAN02></MAN>
      </HLLoop1_I>
      <HLLoop1_I>
        <HL><HL01>8</HL01><HL02>6</HL02><HL03>I</HL03></HL>
        <MAN><MAN01>UC</MAN01><MAN02>ITEM_3</MAN02></MAN>
      </HLLoop1_I>
    </HLLoop1_P>
  </HLLoop1_O>
</HLLoop1_S>
```

## Macros

<MacrosTable />

### Examples

<MacrosExamples />

## X12 Operations

In addition to the [Operations](../scripting/operations/operations) provided with {siteNameShort}, connectors can provide operations that extend functionality into {siteNameShort}Script. These connector operations can be called just like any other {siteNameShort}Script operation, except that they must be called through the `connector.rsc` endpoint and must include an auth token.

Operations specific to the functionality of the X12 connector are listed below.

### x12Scan

Scans header values from the headers of an X12 document.

#### Required Parameters

* **file**: The path to the X12 file.

#### Optional Parameters

* **format**: The file format. The default value is 'X12'.

#### Output Attributes

* **InterchangeSenderIdQualifier**: The interchange qualifier of the sender Id (ISA05).
* **InterchangeSenderId**: The interchange sender Id (ISA06).
* **InterchangeReceiverIdQualifier**: The interchange qualifier of the receiver Id (ISA07).
* **InterchangeReceiverId**: The interchange receiver Id (ISA08).
* **InterchangeControlNumber**: The value that uniquely identifies the EDI interchange (ISA13).
* **FunctionalGroupSenderId**: The functional group sender Id (GS02).
* **FunctionalGroupReceiverId**: The functional group receiver Id (GS03).
* **DocumentType**: The document type or transaction set Identifier code (ST01).
* **StandardVersion**: The major version of the X12 Standard used in this interchange (e.g. 00401, 00501).

## Common Errors

Following is a list of common errors, their causes, and the recommended solution.

### Error: Schema file not found (\[schema major version] \[schema document type])

**Cause**

When {siteNameShort} parses an X12 file, it first scans the file for the EDI version and document type to determine which schema to use during parsing. The application includes an extensive set of X12 schemas in JSON format. They are stored in the `schemas` folder in the application directory (next to the `data` folder).

This error indicates that the application could not find a schema file matching the major version and document type reported by the file.

If the \[schema major version] value or \[schema document type] value are missing in the error message, the EDI document does not contain the major version or document type.

Otherwise, this error indicates that the appropriate document schema is not included in the set of schema definitions automatically included with {siteNameShort}.

**Resolution**

If the EDI file does not contain the schema major version or document type, contact the trading partner (or other source of the EDI document) and inform them that these values must be included in the message header.

Otherwise, find the appropriate schema version from our free download page. Download the schema folder and place it in one of the following locations:

1. Inside the schema folder on disk (for example, `<ConnectorDirectory>/Resources/Schemas/`)
2. If a schema is used by multiple connectors, CData recommends you use a folder structure like this: `<ApplicationDirectory>/schemas/<type>_schemas/<major version>`. In this example, `<type>` should be `x12`.

### Error: The segment at line \[line number] with tag \[segment name] is not in a valid position in the specified schema (\[schema major version] \[schema document type]). This may indicate that the input file contains segments that are out of order.

**Cause**

When {siteNameShort} parses an X12 file, it first scans the file for the EDI version and document type to determine which schema to use during parsing. The application includes an extensive set of X12 schemas in JSON format, stored in the `www\app_data` folder of the root installation directory.

This error indicates that the parser encountered an EDI segment in the file that does not match the order of segments defined in the relevant document schema. This can indicate a few different issues:

* The EDI file was generated incorrectly by the trading partner
* The EDI file was generated using a different schema version than what is indicated in the file
* The EDI file was generated using a custom schema

**Resolution**

If the EDI file was generated using a custom schema, place the custom schema file (in JSON format) in the folder where {siteNameShort} reads EDI schemas. The connector searches for schemas by checking the following locations in this order:

1. Inside its folder on disk (for example, `<ConnectorDirectory>/Resources/Schemas/`)
2. If a schema is used by multiple connectors, CData recommends you use a folder structure like this: `<ApplicationDirectory>/schemas/<type>_schemas/<major version>`. In this example, `<type>` should be `x12`.

If the EDI file was not generated using a custom schema, there are two approaches to resolving the discrepancy between the EDI file generated by the partner and the EDI schema used to parse it.

1. Manually edit the appropriate EDI schema file (found in the filepath above) to adjust the segment order so that it matches the partner's EDI files. The error message indicates the line in the file where the segments diverge from the schema definition. Trace through the JSON definition of segment order until the divergence is found, and re-order the segments in the JSON to match the file provided by the partner.
2. Contact the trading partner about the EDI file. Confirm that the file was generated according to the major version that is reported by the file, and explain that the order of the segments in the file is not recognized.

Which approach to use depends on your familiarity with EDI segments for the particular document type (to correctly edit the JSON schema according to the partner's file) and the partner's flexibility (to adjust the EDI file in response to informing them about the error).
