Skip to content

Dynamics GP SQL Database Structure: A Map for Migration Planning

A practical SQL table reference for Dynamics GP migration — covering GL, AP, AR, Inventory, SOP, POP, Payroll, DEX_ROW_ID traps, and cross-company extraction.

Raaj Raaj · · 16 min read
Dynamics GP SQL Database Structure: A Map for Migration Planning
TALK TO AN ENGINEER

Planning a migration?

Get a free 30-min call with our engineers. We'll review your setup and map out a custom migration plan — no obligation.

Schedule a free call
  • 1,500+ migrations completed
  • Zero downtime guaranteed
  • Transparent, fixed pricing
  • Project success responsibility
  • Post-migration support included

Dynamics GP stores data across hundreds of SQL Server tables following naming conventions designed in the late 1980s. If you are planning a migration to Business Central, NetSuite, Acumatica, or Sage Intacct, the first thing you need is a reliable map of where the data actually lives. This post is that map.

GP's SQL database has no foreign key constraints at the database level — all referential integrity is enforced by the Dexterity application layer. Table names are cryptic alphanumeric codes like GL20000, RM00101, and PM00200. There are no ER diagrams shipped with the product that a standard DBA can open in SSMS. Data is split across a system database and one or more company databases, making multi-entity extraction non-trivial.

With Microsoft ending new perpetual license sales by April 2025 and mainstream support ending December 31, 2029, IT directors and migration consultants are under pressure to map and extract decades of historical data. For the full timeline, see Dynamics GP End of Life: 2025–2031 Timeline & Migration Plan.

If you treat a GP migration as a simple CSV export-and-import, your general ledger will not balance, your segment-based reports will break, and your finance team will spend weeks reconciling. You need to understand how GP stores master data, subledger details, and historical records to extract them with relational integrity intact.

Decoding Dynamics GP Table Naming Conventions

Every GP table name has two parts: a letter prefix identifying the module and a five-digit number identifying the table type and lifecycle stage. (learn.microsoft.com)

Module prefixes you will encounter during migration:

Prefix Module
GL General Ledger
PM Payables Management (AP)
RM Receivables Management (AR)
SOP Sales Order Processing
POP Purchase Order Processing
IV Inventory
UPR Payroll (US)
CM Cash Management (Bank Reconciliation)
SY System
FA Fixed Assets

Numeric ranges define the table type:

Range Type What It Holds
00000 Master Standing data: accounts, customers, vendors, items
10000 Work Unposted transactions sitting in batches
20000 Open Posted transactions for the current (open) year
30000 History Posted transactions from closed years
40000 Setup Module configuration and posting settings
50000 Temp Temporary processing tables
60000 Cross-Reference Data spanning multiple modules
70000 Report Options Saved report option configurations
80000 Posting Journal Reprint Data for reprinting posting journals

So GL20000 is General Ledger, Open Year Posted Transactions. PM00200 is Payables Management, Vendor Master. SOP30300 is Sales Order Processing, Historical Line Detail. Once you internalize this pattern, you can navigate GP's SQL database without memorizing every table name.

Info

"Open" does not mean "unposted." In General Ledger, open tables hold posted transactions for years that have not been closed. In Payables, open tables hold posted transactions that are not fully applied or paid. Unposted transactions live in the Work (10000) tables. (learn.microsoft.com)

One pattern that catches people: GP often splits a logical object into header and detail tables. GL10000 is the work header, GL10001 is the work detail. SOP10100 is the SOP header, SOP10200 is the line detail. If you only extract headers, you get documents without accounting or item lines. If you only extract detail, you lose customer, vendor, batch, and posting context. (victoriayudin.com)

Warning

This naming convention is followed by Microsoft's GP developers but not consistently by third-party ISV products. ISV tables may use entirely different prefixes and numbering. Before extracting data, audit all third-party tables in your database — see How to Audit Dynamics GP Customizations Before Migration. If a custom or ISV window hides its backing table, GP's Tools > Resource Descriptions > Tables is one of the fastest ways to identify it during discovery. (learn.microsoft.com)

General Ledger Tables (GL): The Financial Core

The GL tables are the most critical extraction target for any migration. Every subledger (AP, AR, Sales, Purchasing) posts into the GL, so this is where your trial balance lives.

Chart of Accounts:

  • GL00100 — Account Master. Contains the account index (ACTINDX), account description (ACTDESCR), account type (ACCTTYPE: 1 = Posting, 2 = Unit), account category (ACCATNUM), and individual segment fields (ACTNUMBR_1 through ACTNUMBR_5).
  • GL00105 — Account Index Master. Contains the concatenated, human-readable account number string (ACTNUMST). This is the table you join to when you need the full account number from any transaction table.
  • GL00102 — Account Category Master. Links account categories to descriptions.

Transactions:

  • GL10000 / GL10001 — Work (Unposted). GL10000 is the header; GL10001 is the line detail. These hold transactions sitting in unposted batches. Header carries fields like JRNENTRY, TRXDATE, BACHNUMB, SOURCDOC, CURNCYID, and USWHPSTD. Detail carries ACTINDX, DEBITAMT, CRDTAMNT, DSCRIPTN.
  • GL20000 — Open Year Posted Transactions. All posted journal entries for years that have not been closed. Key fields: JRNENTRY (journal entry number), ACTINDX (account index), DEBITAMT, CRDTAMNT, TRXDATE, SOURCDOC, OPENYEAR, REFRENCE, USWHPSTD (user who posted).
  • GL30000 — Historical Year Transactions. Same structure as GL20000 but for years that have been closed through year-end processing. Uses HSTYEAR instead of OPENYEAR.

Summary tables:

  • GL10110 — Open Year Summary Master (period balances for open years)
  • GL10111 — Historical Year Summary Master
Warning

ACTINDX is the universal join key across GP. It is a numeric surrogate for the account number string. Every transaction table stores ACTINDX, not the actual account number. To resolve it to a readable account, always join to GL00105 on ACTINDX. If you export GL transactions without resolving ACTINDX, your target system will receive meaningless integers.

Here is how to extract all posted GL transactions with resolved account numbers:

SELECT
  gl.JRNENTRY,
  gl.TRXDATE,
  a.ACTNUMST AS AccountNumber,
  m.ACTDESCR AS AccountDescription,
  gl.DEBITAMT,
  gl.CRDTAMNT,
  gl.SOURCDOC,
  gl.REFRENCE,
  gl.ORTRXTYP,
  gl.USWHPSTD
FROM GL20000 gl
INNER JOIN GL00105 a ON gl.ACTINDX = a.ACTINDX
INNER JOIN GL00100 m ON gl.ACTINDX = m.ACTINDX
WHERE m.ACCTTYPE = 1  -- Posting accounts only

Replace GL20000 with GL30000 and OPENYEAR with HSTYEAR to pull historical years. For a complete trial balance or historical ledger, your extraction must UNION ALL the GL20000 and GL30000 tables. Include GL10000/GL10001 only if you are intentionally carrying unposted work into the target.

If a target ERP needs a segmented chart rather than a concatenated account string, extract both the individual segment columns from GL00100 and the concatenated value from GL00105. (victoriayudin.com)

Accounts Receivable Tables (RM): Customer Data

  • RM00101 — Customer Master. The primary customer record: CUSTNMBR (customer ID), CUSTNAME, CUSTCLAS (class), STMTNAME, CRLMTAMT (credit limit), BALNCTYP, PRCLEVEL (price level).
  • RM00102 — Customer Address Master. Multiple addresses per customer, keyed on CUSTNMBR + ADRSCODE. The customer master uses PRSTADCD to point to the primary shipping address. Contains addressable data you need to rebuild customers: contact name, street lines, city, state, ZIP, country, phone numbers, tax schedule, site, salesperson, and territory.
  • RM00103 — Customer Master Summary.
  • RM20101 — Open Transactions. Outstanding (unpaid) invoices, debit memos, and credits. Key field: CURTRXAM (current transaction amount — the outstanding balance).
  • RM30101 — Historical Transactions. Paid and closed receivables.
  • RM20201 — Open Apply records. Tracks how payments are applied to open documents.
  • RM30201 — Historical Apply records.

Join RM20101 back to RM00101 on CUSTNMBR to get the customer name alongside open balances. For migration, the open receivables in RM20101 are what you need to bring forward as outstanding AR.

Be careful with summary tables. RM00103 and RM00104 are useful for validation but should not be your sole source of truth for reconstructed subledger history — sales totals can vary with setup options. Use transaction tables instead. (victoriayudin.com)

Accounts Payable Tables (PM): Vendor Data

This is an area where bad table lists cause real trouble.

  • PM00200 — Vendor Master. The primary vendor record: VENDORID, VENDNAME, VNDCLSID (vendor class), PYMTRMID (payment terms), TAXSCHID (tax schedule).
  • PM00201 — Vendor Master Summary. Not vendor addresses. (victoriayudin.com)
  • PM00300 — Vendor Address Master. Multiple addresses per vendor (Primary, Remit-To, Purchase). Join on VENDORID. (victoriayudin.com)
  • PM00204 — 1099 Period Detail.
  • PM10000 — Work transactions (unposted payables).
  • PM20000 — Open Payables. Outstanding AP documents. Key field: CURTRXAM.
  • PM30200 — Historical Transactions. Paid and voided payables.
  • PM30300 — Apply History. Tracks payment application to invoices.
Warning

Common mistake: Many GP table references incorrectly list PM00201 as vendor addresses. Vendor addresses live in PM00300. PM00201 is the vendor master summary table. Getting this wrong means your vendor address extraction returns summary data instead of actual mailing and remittance addresses. (victoriayudin.com)

For vendor extraction, start with VENDORID, VENDNAME, address records from PM00300, and transaction identifiers like DOCTYPE, DOCDATE, VCHRNMBR, DOCNUMBR, PSTGDATE, DOCAMNT, TRXSORCE, and CURNCYID.

Inventory Tables (IV): Items and Quantities

  • IV00101 — Item Master. Contains ITEMNMBR (item number), ITEMDESC, ITEMTYPE, ITMCLSCD (item class), UOMSCHDL (unit of measure schedule). Also carries account index fields like IVIVINDX (inventory on hand), IVCOGSIX (cost of goods sold), and IVSLSIDX (sales).
  • IV00102 — Item Quantity Master. On-hand quantities by location: QTYONHND, QTYINSVC, QTYRTRND, APTS (location code). Note: RCRDTYPE = 1 is the overall quantity record and RCRDTYPE = 2 is the site-level record — this matters if you are rebuilding per-location balances. (victoriayudin.com)
  • IV00103 — Item Vendor Master. Links items to vendor sourcing.
  • IV10200 — Inventory Transaction Amounts Work.
  • IV30300 — Inventory Transaction Amounts History.

When extracting inventory for migration, join IV00101 to IV00102 on ITEMNMBR to get item details with quantity-by-site.

Sales Order Processing Tables (SOP)

There is a strict distinction between SOP and RM in Dynamics GP. SOP handles inventory allocation, quoting, and invoice generation. RM handles the financial side: AR aging, cash receipts, and customer balances. When a SOP document is posted, the SOP record moves to History (SOP30200/SOP30300), and the financial impact creates a new open receivable in RM20101.

  • SOP10100 — Work transactions (header). Unposted sales orders, quotes, invoices. Key fields: SOPNUMBE (document number), SOPTYPE (1=Quote, 2=Order, 3=Invoice, 4=Return, 5=Back Order, 6=Fulfillment Order), CUSTNMBR, DOCDATE, GLPOSTDT, CSTPONBR, BACHNUMB, LOCNCODE.
  • SOP10200 — Work transactions (line detail). One row per line item. Joined to header on SOPTYPE + SOPNUMBE, with LNITMSEQ controlling line order. Key line fields: ITEMNMBR, ITEMDESC, QUANTITY, QTYREMAI, UNITPRCE, UNITCOST.
  • SOP30200 — Historical transactions (header). Posted invoices and returns.
  • SOP30300 — Historical transactions (line detail).
  • SOP60100 — SOP-POP Link. Tracks which PO lines are linked to which sales order lines. If your business uses SOP-POP links for fulfillment or procurement flow, include this table — otherwise, item demand and supply history will look disconnected across modules.
Tip

There is no direct foreign key linking SOP history rows to RM rows. You must match on SOPNUMBE / DOCNUMBR and SOPTYPE / RMDTYPAL and validate against CUSTNMBR. A frequent GP mistake is assuming SOP10100 holds posted orders — it does not. SOP10100 only holds unposted work. (victoriayudin.com)

Purchase Order Processing Tables (POP)

  • POP10100 — PO Work (header). Open and in-process purchase orders: PONUMBER, VENDORID, POTYPE (1=Standard, 2=Drop-Ship, 3=Blanket, 4=Drop-Ship Blanket), POSTATUS.
  • POP10110 — PO Line items. Not POP10200 — this is a common mistake in GP table references. (victoriayudin.com)
  • POP30100 — Historical receipts (header).
  • POP30110 — Historical receipts (line detail).
  • POP30300 — Historical POs (header).
  • POP30310 — Historical PO line items.

If you need actual account numbers from PO lines, follow the line table's account index fields (like INVINDX) back to GL00105.ACTINDX.

Payroll Tables (UPR): Employee and Pay History

  • UPR00100 — Employee Master. Core employee record: EMPLOYID, FRSTNAME, LASTNAME, SOCESSION (SSN — handle with extreme care), DEPRTMNT, JOBTITLE.
  • UPR00102 — Employee Address Master.
  • UPR30100 — Check History. One record per payroll check issued.
  • UPR30300 — Transaction History. Detailed payroll transaction records per pay code per check.
  • UPR30301 — Transaction History Header.
  • UPR30200 — Tax Liability History. Used in quarter-end and 941 reporting.
  • UPR30400 / UPR30401 — Distribution History (GL posting distributions for payroll).

Do not treat UPR30100 alone as complete payroll history. You usually need both check-level and transaction-level tables to preserve auditable payroll detail. (victoriayudin.com)

Payroll data is the most sensitive data in GP. SSNs, salary history, tax withholdings, and garnishment records all live in UPR tables. Any migration that touches payroll must account for encryption, access controls, and compliance with regulations like GDPR and CCPA. See Payroll Data Migration Security & Compliance for the full framework.

System Database (DYNAMICS) vs. Company Databases

This is where many migration consultants get tripped up. GP does not store everything in one database.

The DYNAMICS system database (sometimes given a custom name) holds:

  • SY01500 — Company Master (list of all companies and their database names)
  • SY01400 — Users Master
  • SY60100 — User-Company Access
  • SY09000 / SY09100 / SY09200 — Security tasks, roles, and alternate permissions
  • MC40000 — Multicurrency setup
  • Intercompany relationship configurations
  • Exchange rate tables

Each company database holds its own complete set of GL, PM, RM, SOP, POP, IV, UPR, and setup tables. If your GP installation has five companies, you have five separate SQL databases — each containing its own GL20000, RM00101, PM00200, and so on. They do not natively share transactional data. Company databases are typically named with brief alphanumeric codes (e.g., TWO, PROD1, UK01). The SY01500 table maps these cryptic database names (INTERID) to the actual legal entity names (CMPNYNAM). (learn.microsoft.com)

When migrating to a modern cloud ERP like Business Central or NetSuite — which typically use a single database with a dimension or subsidiary structure — you must extract and consolidate data across all GP company databases.

Querying Across Multiple Companies

Start every multi-company extraction by inventorying the estate:

SELECT INTERID, CMPNYNAM
FROM DYNAMICS..SY01500
WHERE INTERID NOT LIKE '%TEST%'
ORDER BY INTERID

INTERID is the company database name. Then for each company database, run your extraction queries against that specific database:

SELECT 'CompanyA' AS SourceCompany, a.ACTNUMST, m.ACTDESCR, m.ACCTTYPE
FROM CompanyA..GL00105 a
INNER JOIN CompanyA..GL00100 m ON a.ACTINDX = m.ACTINDX
 
UNION ALL
 
SELECT 'CompanyB' AS SourceCompany, a.ACTNUMST, m.ACTDESCR, m.ACCTTYPE
FROM CompanyB..GL00105 a
INNER JOIN CompanyB..GL00100 m ON a.ACTINDX = m.ACTINDX

For organizations with 10+ companies, generate these cross-database queries dynamically using SY01500 as the driver, appending a company code column to maintain data lineage.

Keep company separation visible in your staging layer until entity mapping is final. Merging companies too early is how teams lose source-system provenance, intercompany trails, and per-company accounting differences. For the detailed BC migration path, see Dynamics GP to Business Central: Migrating 20 Years of History. For global organizations managing multiple entities with different currencies, see Multi-Entity, Multi-Currency ERP Migration: Where Global Companies Fail.

The DEX_ROW_ID Trap

Every Dexterity-created table in GP has a column named DEX_ROW_ID — an INT IDENTITY column with a maximum value of 2,147,483,647. It was added when GP transitioned from ISAM (Btrieve/Ctree) to SQL Server to provide a unique row identifier and support Dexterity's Optimistic Concurrency Control (OCC). (willoware.com)

Many migration scripts and integration tools use DEX_ROW_ID as a primary key or a high-water mark for delta extractions. Do not do this. Here is what you need to know:

  1. It is unique within a single table at any point in time. SQL Server enforces this as an identity column. It is not unique across the GP database estate. (community.dynamics.com)
  2. It is NOT persistent across upgrades or maintenance. When GP upgrades a table, or when an administrator runs the "Check Links" utility, GP copies data to a temp table, drops and recreates the original table, then inserts the data back. The INSERT does not include DEX_ROW_ID, so all rows get new values renumbered from 1.
  3. High-volume tables can overflow. The identity column increments on insert and does not shrink when rows are deleted. GP installations with large payroll or inventory transaction volumes can approach the INT max, causing an arithmetic overflow error that blocks all inserts to the table.
  4. Delta syncs built on DEX_ROW_ID break silently. If you build an integration that tracks "last migrated DEX_ROW_ID" to detect new records, your sync will break the next time that table is rebuilt during a service pack or version upgrade — every record will appear new, causing massive duplication in your target ERP.
Danger

For any migration or integration, use the table's natural business key: JRNENTRY for GL transactions, CUSTNMBR for customers, VENDORID for vendors, SOPNUMBE + SOPTYPE for sales documents, VCHRNMBR + DOCTYPE for payables. Never DEX_ROW_ID.

No Foreign Keys: What This Means for Extraction

GP's SQL database has zero foreign key constraints at the database level. All referential integrity is enforced by the Dexterity runtime. This means:

  • You cannot use SSMS database diagrams to discover table relationships.
  • Orphaned records are possible and more common than you would expect, especially in installations with years of customization and direct SQL manipulation.
  • Before extracting, run validation queries to confirm referential integrity.

For example, verify every ACTINDX in GL20000 exists in GL00100:

SELECT DISTINCT gl.ACTINDX
FROM GL20000 gl
LEFT JOIN GL00100 m ON gl.ACTINDX = m.ACTINDX
WHERE m.ACTINDX IS NULL

If this returns rows, you have orphaned GL transactions pointing to deleted accounts. These must be resolved before migration — every target system that enforces referential integrity (which is all of them) will reject these records on import.

GP Data Extraction Methods Compared

Approach Best For Limitations
Microsoft Cloud Migration Tool GP → Business Central only Limited to tables Microsoft has mapped; does not handle ISV tables or heavily customized schemas
KingswaySoft SSIS Toolkit Teams with SSIS expertise Requires Visual Studio and SSIS pipeline development; steep learning curve for non-SSIS shops
eOne SmartConnect Daily transactional syncing Designed for transactional integration, not bulk historical migration; severe performance degradation on millions of rows
Direct SQL extraction Any target system; full control Requires deep GP table knowledge; no guardrails against extracting corrupt or orphaned data without validation

Microsoft Cloud Migration Tool (Azure Data Factory): The native GP-to-BC path. It relies on Azure Data Factory with a self-hosted Integration Runtime for on-prem SQL Server and requires SQL Server 2016 or later at compatibility level 130 or higher. Microsoft documents migration support for customers, vendors, items, historical data, outstanding receivables and payables, 1099 data from 2024 onward, and open purchase orders based on remaining quantities. (learn.microsoft.com)

The tool handles standard GP tables and maps them into Business Central's data model, but it will not pick up ISV tables, custom fields added directly to SQL, or Analytical Accounting data structures (the AAG series) without custom table mapping. If you rely on 3rd-party modules like Mekorma, Binary Stream, or eOne, those custom SQL tables get skipped entirely. For more on auditing these limitations, see How to Audit Dynamics GP Customizations Before Migration.

KingswaySoft SSIS Toolkit: Provides SSIS connectors that abstract GP's table structure into named entities. Understands GP's eConnect endpoints and handles data validation cleanly. Because it often routes through eConnect for certain operations, extracting 20 years of historical ledger data can bottleneck and take days. Useful if your team already works in the SSIS ecosystem, but for migrations to non-Microsoft targets, you are building the transformation logic yourself. (kingswaysoft.com)

eOne SmartConnect: The standard integration tool used by most GP partners. Code-free mapping interface, reliable for daily transactional syncing between GP and external CRMs like Salesforce. Not designed for bulk historical data migration — using SmartConnect to move millions of GL30000 rows will result in severe performance degradation and timeouts.

Direct SQL extraction gives you full control and works for any destination. This is what ClonePartner uses.

Quick Reference: Migration-Critical Tables by Module

Module Master Tables Work (Unposted) Open (Posted) History (Closed)
GL GL00100, GL00105 GL10000, GL10001 GL20000 GL30000
AR RM00101, RM00102 RM10301 RM20101 RM30101
AP PM00200, PM00300 PM10000 PM20000 PM30200
Inventory IV00101, IV00102 IV10200 IV30300
Sales SOP10100, SOP10200 SOP30200, SOP30300
Purchasing POP10100, POP10110 POP30100, POP30300
Payroll UPR00100, UPR00102 UPR30100, UPR30300
Info

Three table corrections worth bookmarking: GL20000 is open-year posted GL (not closed-year history), PM00300 is vendor addresses (not PM00201), and POP10110 is PO line work (not POP10200). Small details with big migration consequences. (victoriayudin.com)

How ClonePartner Handles GP Database Extraction

Our migration team works directly with GP's SQL database structure. Here is how we approach it:

  1. Discovery: We connect to your SQL Server (read-only) and profile every company database — table counts, row counts, date ranges, and ISV footprint.
  2. Pre-built extraction queries: We do not start from scratch. We have tested extraction queries for GL, AP, AR, Inventory, Sales, Purchasing, and Payroll that resolve ACTINDX values, handle the Work/Open/History split, and validate referential integrity before a single record is exported.
  3. Cross-company consolidation: For multi-entity GP installations, we dynamically generate extraction scripts across all company databases, tagging each record with its source company for clean mapping into a unified target.
  4. Segment-to-dimension mapping: We map GP's segmented account strings into modern dimensional structures, ensuring that your trial balance matches to the penny on day one.
  5. ISV inclusion: If your GP environment is heavily customized with ISV tables, we audit the schema and include those custom SQL tables in the extraction payload.
  6. Zero downtime: We extract from a read-only SQL replica or snapshot. Your GP users never know we are there. No batch holds, no locked tables, no disrupted posting.

What to Do Next

A solid GP migration plan starts with four decisions: which company databases exist, which tables are the true system of record for each object, which history stays detailed versus summarized, and which join keys survive in the target. If you cannot answer those four questions for GL, customers, vendors, inventory, open orders, and payroll, you are not ready to script extraction yet.

If you are early in planning, start by running SELECT COUNT(*) FROM [table] against the key tables listed above in each company database. This gives you a volume baseline — critical for estimating extraction time, transformation complexity, and load duration in your target system.

For teams moving to Business Central, the Microsoft Cloud Migration Tool handles a portion of this mapping, but you need to understand what it covers and what it skips. For the full path, see Dynamics GP to Business Central: Migrating 20 Years of History.

For teams moving to NetSuite, Acumatica, or Sage Intacct, there is no automated tool. You are doing direct SQL extraction and building the transformation layer. That is the work ClonePartner specializes in.

Frequently Asked Questions

What is the Dynamics GP table naming convention?
GP tables use a 2-3 letter module prefix (GL, PM, RM, SOP, POP, IV, UPR) followed by a 5-digit number. The first digit indicates the table type: 0 = Master data, 1 = Work (unposted), 2 = Open (posted current year), 3 = History (closed years), 4 = Setup. For example, GL20000 means General Ledger, Open Year Posted Transactions.
Can I use DEX_ROW_ID as a primary key for GP data migration?
No. DEX_ROW_ID is an INT IDENTITY column that gets renumbered from 1 whenever GP rebuilds a table during upgrades, service packs, or Check Links maintenance. It is not persistent and should never be used for delta syncs, relational mapping, or as a join key. Use the table's natural business key instead — JRNENTRY for GL, CUSTNMBR for customers, VENDORID for vendors, SOPNUMBE + SOPTYPE for sales documents.
What is the difference between the DYNAMICS database and GP company databases?
The DYNAMICS system database stores system-wide settings: user security (SY01400), the company master list (SY01500), intercompany configurations, and exchange rates. Each GP company has its own separate SQL database containing all transactional data — GL, AP, AR, inventory, sales, purchasing, and payroll tables. Multi-entity GP installations have one DYNAMICS database and multiple company databases.
Where are vendor addresses stored in Dynamics GP?
Vendor addresses are stored in PM00300, not PM00201. PM00200 is the vendor master and PM00201 is the vendor master summary table. This is a common mistake in GP table references that causes vendor address extractions to return summary data instead of actual mailing and remittance addresses.
Where are GL transactions stored in Dynamics GP SQL?
Unposted GL transactions are in GL10000 (header) and GL10001 (line detail). Posted transactions for open (current) years are in GL20000. Posted transactions for closed historical years are in GL30000. All three table groups use the ACTINDX field to reference accounts, which must be joined to GL00105 to resolve to readable account numbers.

More from our Blog