Infor M3 MDBREADMI and Custom List API Design Worksheet
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.
| Need | API type | Table | Index used | Key fields | Output fields | Output field count | Over 10 fields (1 = yes) | Transaction name | Consumers | Calls per day | Notes | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | ||||||||||||
0 | ||||||||||||
0 | ||||||||||||
0 | ||||||||||||
1 | ||||||||||||
0 |
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.
Get your API designs reviewed
Send the completed worksheet and we will check index choice, output fields and volume against your M3 13.x environment before you build.
Optional. The tool and every export work without this. No spam.
How to use it
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.
- 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
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
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
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.
Frequently Asked Questions
How do I create a custom list API in Infor M3?
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?
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?
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?
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.
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.
Related Tools
Infor M3 EXPORTMI Select Query Generator
Fill in table, columns and filter to get a working EXPORTMI Select call for M3 13.x on-prem, plus a Python loop that pages by key range past the 10,000 record cap.
Developer ToolsInfor M3 CSV to MI API Bulk Loader Script Generator
Generate a Python loader that reads a CSV, maps columns to MI fields, calls one M3 transaction per row and writes a result file with the M3 message for every failed row.
Developer ToolsInfor M3 ION API Gateway OAuth 2.0 Python Client Generator
Generate a Python script that loads your .ionapi credentials file, gets and reuses an OAuth 2.0 token, and calls an M3 MI transaction through the on-prem ION API Gateway.
Infor M3 & CloudSuiteInfor M3 Interface and Integration Inventory Worksheet
Inventory all M3 interfaces with method, direction, frequency and a built-in effort score so integration scope is visible before design starts.
More Developer Tools tools
See all- Infor M3 H5 Script TypeScript Template Generator
- Infor M3 EXPORTMI Extraction Call Volume Calculator
- SAP Sales Order ABAP SELECT Generator (VBAK, VBAP, VBFA)
- SAP Sales Order Create BAPI ABAP Generator (BAPI_SALESORDER_CREATEFROMDAT2)
- SAP ABAP Open Items SELECT Generator
- SAP ACDOCA SQL Query Generator
- SAP QM Inspection Lot ABAP SELECT Generator
- SAP Quality Notification Pareto SQL Query Generator
- SAP QM Usage Decision BAPI Skeleton
Keep exploring
Free tools
- Infor M3 CSV to MI API Bulk Loader Script GeneratorGenerate a Python loader that reads a CSV, maps columns to MI fields, calls one M3 transaction per row and writes a result file with the M3 message for every failed row.
- Infor M3 MEC Mapping Design TemplateA fill-in design document for an M3 Enterprise Collaborator mapping, from partner and flow to field rules and error handling.
- Infor M3 Private AI Layer Blueprint GeneratorFill in your Infor M3 environment and get a ready-to-share architecture plan for a private, on-prem AI assistant.
ERP fixes and how-tos
- Infor M3 Export to Excel: Lists, Report Output and the API RouteHow to export Infor M3 list and panel data and report output to Excel using the client export, the Excel add-in or the MI API, plus common limits and pitfalls.
- Pick Line vs Wave Line in Infor M3Pick line versus wave line in Infor M3: what each represents in warehouse picking, how waves group work, and how to decide which applies in your setup.
- Infor M3 SDK, MI APIs and REST API Documentation GuideDeveloper map of the Infor M3 SDK: MI programs, the REST API through ION API, authentication, example calls, and where to find the official documentation.
Runs with your ERP
- Infor M3 Scheduling Workbench and M3: finite scheduling explainedHow Infor M3 Scheduling Workbench schedules against capacity and materials and writes orders back to M3 via PSMI, with setup, pitfalls and AI help.
- Infor EDI Managed Service and Infor M3 over IONHow Infor's EDI managed service connects to Infor M3 through ION with pre-built trading partner links: data flows, setup steps, pitfalls and a private AI layer.
- TrueCommerce EDI and Infor M3TrueCommerce managed EDI for Infor M3 (also VISUAL and other Infor ERPs): documents, data flows, setup steps, pitfalls, alternatives and where AI helps.
Guides
- Infor M3 Quality Management System Configuration GuideHow Infor M3 supports quality management, product traceability and compliance in regulated manufacturing: inspection plans, lot status, non-conformance, CAPA.
- Infor M3 Warehouse Management: Setup and Daily FlowHow the Infor M3 warehouse management system works: warehouses, locations, balance IDs, picking, replenishment and cycle counts. A practical setup guide.
- Infor M3 Pricing and Discount Structure ConfigurationConfigure complex pricing and discount structures in Infor M3 including price lists, tiered discounts, promotions, rebates, and customer-specific agreements.
AI on your ERP
- Infor M3 Supply Chain Planning With AI That Explains the MRP OutputAI for Infor M3 supply chain planning: explain MRP action messages, review planned orders, and trace shortages through MITBAL and MITMAS on private infrastructure.
- Infor M3 AI: A Practical Path from MI Programs to a Private AssistantInfor M3 AI explained: grounded natural-language answers over MI programs and MEC, agents for distribution and manufacturing, on-prem or EU private cloud.
Integrations
- How to use ChatGPT with Infor M3How to use ChatGPT with Infor M3: exports, custom GPT actions over the M3 API or ION, enterprise data controls, and when a private model is the safer choice.
- How to add an AI chatbot to Infor M3How to add an AI chatbot to Infor M3 for staff and customers: grounded in M3 data via the API, embedded in a portal or Teams, and able to run fully on-prem.