# Use of external IDs

## Using External IDs in NetSuite for Data Migration

#### **What is an External ID in NetSuite?**

In NetSuite, an **External ID** is a unique identifier that creates a reference to a corresponding record in an external system. It acts as a link between NetSuite and other systems, ensuring that records can be easily matched and tracked across platforms.

This makes **External IDs** highly useful for data migrations. If you have a unique reference number for a record in another system, you can use it to load or update records in NetSuite. External IDs allow you to match and update data in future imports, making them invaluable in maintaining data integrity during migration.

***

### **Why External IDs are Ideal for Migrations**

During migrations, having a unique reference to the corresponding record in your legacy system means that you can easily update data in NetSuite if needed. Instead of relying on NetSuite's **Internal ID** (which only exists after data is loaded), External IDs allow you to match records consistently across systems.

For example:

* If you import customers from a CRM into NetSuite, the External ID will let you **update** customer data in future imports without creating duplicate records.
* It simplifies the process of syncing data between NetSuite and other systems, such as an ERP, CRM, or Ecommerce platform.

However, when using External IDs for migration, there are important considerations based on the **type of record**.

***

### **Considerations by Record Type:**

#### **1. Vendors / Customers / Items**

In many cases, External IDs for these records are already being used by other systems, such as a CRM or Ecommerce platform. This could cause conflicts if NetSuite is integrated with those platforms, as the External ID might already be in use to link the two systems.

**What to Watch For:**

* **Pre-existing integrations:** If an integration with another system (like a CRM) already uses the External ID, it could overwrite or conflict with your migration data.

**Best Practice:**

* Instead of using the External ID field, consider using a **custom field** to store your external system's unique identifier during the migration.
* This approach ensures that existing integrations won’t be disrupted, especially if you plan to test those integrations before go-live.

**Tip:**

* Even if you don’t use the External ID field, it’s essential to maintain a **mapping table**. This table should map the **target system’s internal IDs** (the ones generated by NetSuite after data import) to the corresponding **external database key** from the source system. This helps with reconciliation and future updates.

***

### **2. Loading Opening Balances (AR/AP Transactions)**

When loading **opening balances** and **AR/AP transactions**, using the **Internal ID** or **database key** from the source system as the **External ID** is common. This works well in most cases, as each transaction typically posts a single line to AR/AP.

However, there are some cases where **journals** or other multi-line transactions are used to post data to AR/AP. In these situations, using the **Internal ID** may not be sufficient.

**Best Practice:**

* Use the **Line Unique Key** when loading multi-line transactions. This ensures that each line on the transaction is tracked individually and avoids issues during reconciliation.

**Why It’s Important:**

* Using the **Line Unique Key** makes reconciliation faster and more accurate, especially when dealing with journal entries or transactions that span multiple lines in AR/AP.

***

### **Summary of Key Points:**

* External IDs create a direct link between NetSuite and external systems, making them ideal for migrations and future updates.
* For **Vendors, Customers, and Items**, avoid using External IDs if they are already in use by other system integrations. Instead, use a **custom field** to store the unique identifier during migration.
* Maintain a **mapping table** between NetSuite’s internal IDs and the source system’s external keys for easy reconciliation.
* When loading **AR/AP transactions**, use the **Line Unique Key** for multi-line transactions to avoid issues and make reconciliation smoother.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://netsuite-data-migration-guide.fowlersconsulting.co.uk/best-practices/use-of-external-ids.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
