# Infor M3 MDBREADMI and Custom List API Design Worksheet

> Source: https://netray.co/tools/infor-m3-mdbreadmi-custom-list-api-design-worksheet
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Free Tools

## Short answer

Plan each custom M3 read API row by row: which API type, which table and index, which output fields, who calls it and how often, with a warning above 10 output fields.

## Category

developer

## Erp

Infor M3

## Audience

- M3 developer
- Integration architect
- M3 technical consultant

## Tool

**Kind:** worksheet

**Mode:** editable

**Columns:**

#### Need

**Key:** need

**Type:** text

#### API type

**Key:** api_type

**Type:** select

**Options:**

- MDBREADMI
- CMS100MI custom list
- EXPORTMI

#### Table

**Key:** table

**Type:** text

#### Index used

**Key:** index

**Type:** text

#### Key fields

**Key:** keys

**Type:** text

#### Output fields

**Key:** outputs

**Type:** text

#### Output field count

**Key:** out_count

**Type:** number

**Format:** integer

#### Over 10 fields (1 = yes)

**Key:** over

**Type:** number

**Expr:** gt(out_count, 10)

**Format:** integer

#### Transaction name

**Key:** trans

**Type:** text

#### Consumers

**Key:** consumers

**Type:** text

#### Calls per day

**Key:** volume

**Type:** number

**Format:** integer

#### Notes

**Key:** notes

**Type:** text

**Rows:**

**Need:** Item status and description by item number

**Api type:** MDBREADMI

**Table:** MITMAS

**Index:** 00

**Keys:** MMCONO, MMITNO

**Outputs:** MMITNO, MMITDS, MMSTAT, MMUNMS, MMITGR

**Out count:** 5

**Trans:** GetMITMAS00

**Consumers:** Web shop

**Volume:** 20000

**Notes:** Get type, one record

**Need:** Items by item group for a catalogue sync

**Api type:** MDBREADMI

**Table:** MITMAS

**Index:** 00

**Keys:** MMCONO, MMITNO

**Outputs:** MMITNO, MMITDS, MMITGR, MMSTAT

**Out count:** 4

**Trans:** LstMITMAS00

**Consumers:** PIM

**Volume:** 24

**Notes:** Check whether an index with item group fits better

**Need:** Balance per item and warehouse

**Api type:** MDBREADMI

**Table:** MITBAL

**Index:** 00

**Keys:** MBCONO, MBWHLO, MBITNO

**Outputs:** MBWHLO, MBITNO, MBSTQT, MBALQT

**Out count:** 4

**Trans:** LstMITBAL00

**Consumers:** Planning dashboard

**Volume:** 500

**Notes:** Confirm index 00 key order in your metadata

**Need:** Open order lines with customer name

**Api type:** CMS100MI custom list

**Table:** OOLINE + OCUSMA

**Keys:** Order number

**Outputs:** OBORNO, OBPONR, OBITNO, OBORQT, OKCUNM

**Out count:** 5

**Trans:** Defined in CMS015

**Consumers:** Customer service portal

**Volume:** 2000

**Notes:** Join needs a custom list, not MDBREADMI

**Need:** One-off extract of item master for migration check

**Api type:** EXPORTMI

**Table:** MITMAS

**Index:** 00

**Keys:** MMITNO (key-range paging)

**Outputs:** MMITNO, MMITDS, MMSTAT, MMITTY, MMITGR, MMITCL, MMRESP, MMUNMS, MMDCCD, MMBUAR, MMPRGP, MMCFI1

**Out count:** 12

**Trans:** Select

**Consumers:** Migration team

**Volume:** 1

**Notes:** Over 10 fields: acceptable for a one-off, not for frequent calls

**Need:** Customer basic data lookup

**Api type:** MDBREADMI

**Table:** OCUSMA

**Index:** 00

**Keys:** OKCONO, OKCUNO

**Outputs:** OKCUNO, OKCUNM, OKSTAT, OKCUCD

**Out count:** 4

**Trans:** GetOCUSMA00

**Consumers:** CRM

**Volume:** 3000

**Notes:** Check first whether a standard CRS610MI Get covers it

**Totals:**

#### Total calls per day

**Key:** volume

**Agg:** sum

**Format:** integer

#### APIs over 10 output fields

**Key:** over

**Agg:** sum

**Format:** integer

**Summary:**

#### Average output fields

**Key:** avg_fields

**Expr:** sum_out_count / count

**Format:** decimal

**Notes:** MDBREADMI transactions are added in the MI repository: open MDBREADMI in MRS001 (MI Repository. Open), add the transaction in MRS002 (MI Transaction. Open) and set its input and output fields in MRS003 (MI Transaction. Layout). Each reads one table through an existing index, as Get (one record) or Lst (many records). Names follow type + table + sorting option + optional suffix, for example LstMITMAS00. CMS100MI custom lists are defined in CMS015 on an Information Browser category (CMS010) or ad-hoc report (AHS100) query and can combine tables. EXPORTMI and CMS100MI return at most 10,000 records per call. Keep output fields to about 10 or fewer. Confirm index key order in your M3 metadata.

## Content

**Intro:** This worksheet designs custom read APIs for M3 13.x before anyone opens MRS001 or CMS015. One row per need records the API type, table and index, keys, output fields, transaction name, consumers and daily volume, and flags designs with more than 10 output fields.

**Sections:**

#### How to use it

**Body:** Start with the need in business words, then check whether a standard MI transaction already covers it: a custom API is only worth maintaining when none does. Choose the API type, the table and the index whose keys match how the caller will search. List the output fields and count them; the over-10 column flags designs to trim. Name the transaction, list who calls it and estimate calls per day. Export the sheet and review it with whoever owns M3 performance before building.

**Bullets:**

- Prefer standard MI transactions when they exist
- Match the index to the caller's search keys
- Treat high daily volume as a reason to trim outputs

#### Choosing between MDBREADMI, CMS100MI and EXPORTMI

**Body:** MDBREADMI is the API Infor recommends when no standard API exists and data comes from a single table: you add Get or Lst transactions on an existing index to MDBREADMI through MRS001, MRS002 and MRS003 (MI Transaction. Layout for the input and output fields), and they are fast because they read by key. CMS100MI custom lists, defined in CMS015, can bring in related tables when you need a join. EXPORTMI runs SQL-like selects on one table and suits ad hoc or low-frequency extracts. EXPORTMI and CMS100MI return at most 10,000 records per call, so large lists need paging by key.

#### Worked example and naming

**Body:** A web shop needs item status 20,000 times a day. That is a Get on MITMAS through index 00, keys company and item number, five output fields, named GetMITMAS00 following the type, table, sorting option pattern. Open order lines with the customer name need OOLINE and OCUSMA together, which MDBREADMI cannot do, so that row becomes a custom list. The one-off migration extract has 12 fields; acceptable once, but the worksheet flags it so nobody copies it into a frequent integration.

#### Gotchas

**Body:** MDBREADMI reads only one table, through one index. After creating or changing a transaction, check it in the API browser and refresh any tool that caches API metadata before callers rely on it. If no index matches the caller's keys, a list transaction reads far more than needed; work with your M3 administrator on a suitable sorting option rather than accepting a slow API. Document each transaction's index, inputs and outputs so it can be recreated identically in test and production, and keep the worksheet as the inventory of what exists and who depends on it.

**Cta:** If you would rather let users ask M3 data questions in plain English without a new API for each one, we can set up a private assistant on your own servers.

**Faq:**

#### How do I create a custom list API in Infor M3?

**Answer:** For a single table, add an MDBREADMI transaction on an existing index: open MDBREADMI in MRS001, add the transaction in MRS002 and set inputs and outputs in MRS003. For data from several tables, define a CMS100MI custom list in CMS015, simulate it, then activate it with Update MI Repository.

#### What is MDBREADMI in M3?

**Answer:** MDBREADMI is the MI program that holds user-defined read transactions on single M3 tables. Each transaction reads through one index and is of type Get (one record) or Lst (a list). Infor recommends it when no standard API exists and data from one table is needed.

#### How many output fields should an M3 custom API return?

**Answer:** Infor's guidance is preferably fewer than 10 output fields for MDBREADMI and EXPORTMI, because each extra field adds work on every call. High-volume APIs benefit most from trimming. Ask each consumer which fields they actually use.

#### What is the record limit for CMS100MI and EXPORTMI?

**Answer:** Both return at most 10,000 records per call; EXPORTMI can exceed it only when you specify an index with filter values that match it. For larger result sets, page by key: request records greater than the last key you received until a page comes back short.

## Search terms

infor m3 custom list apis, api integration in infor m3, MDBREADMI, MDBREADMI add transaction MRS002, CMS100MI custom list, m3 user defined api transaction, m3 custom api design

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
