> For the complete documentation index, see [llms.txt](https://doc.duaer.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.duaer.com/build/process-sources.md).

# Add a process source in Duaer

A process source tells Duaer where to read the steps of your cases: a CSV or XLSX file, PostgreSQL, MySQL, Microsoft SQL, Oracle, a Feishu Base or Feishu approvals. The wizard takes you through columns, mapping, a preview of issues and a schedule; after you confirm, Duaer reads new rows on that schedule.
## Open the wizard

1. Open your project › Data tables › Duaer cases and select Process sources.
2. Select Add source. The wizard has six steps: Connect, Columns, Mapping, Preview, Schedule and audience, Confirm. Select a finished step to go back to it. Only owners and admins can add a source.

## Connect: where the data is

The source name is filled in from the file or table you choose; you can change it, using letters in any language, digits, spaces, dot, dash or underscore. Then pick the time zone of the times in the data from the list; it starts as your browser’s.

- CSV or XLSX file: upload a file of up to 20 MB; for XLSX, choose a sheet.
- PostgreSQL, MySQL, Microsoft SQL, Oracle: choose a credential of that kind in the project, or select New credential to create one; it is picked once saved. Then choose the table. In the next step every column is ticked; Duaer does not read the ones you untick. Joined tables lists tables of the same database that relate to this one: by the primary and foreign keys the database declares first, by names otherwise (for example both have the sample number); a table with several rows per row of this one (such as several retests per sample) is not suggested, so cases are not repeated; Add reads their columns too, such as the test result or the customer’s region, and Add another table joins one on two columns you pick, three at most. Under Changes when a row changes, tick every column that may change later, such as each step’s time: a row is read again when any of them is newer than the last read, so steps filled in later still arrive.
- Google Sheets, Excel (OneDrive / SharePoint): choose a Google Sheets or Microsoft Excel OAuth2 credential (or Google’s or Microsoft’s generic OAuth2 credential), paste the spreadsheet link, select Open and choose the sheet. For Google Sheets, use the link in the address bar; the sheet it points to is chosen for you. For Excel, select Share, then Copy link in OneDrive or SharePoint. The first row holds the headers; every read reads the whole sheet again, and steps already written are not written twice. The mapping comes next.
- Xero: choose a Xero OAuth2 credential, select Load organisations, then choose the Xero organisation and the documents: Sales invoices (order to cash) or Bills (purchase to pay). Each document’s issue, the steps in its history (created, approved, sent, voided and so on; edits, notes and attachments are left out), each payment and the full payment become steps; the mapping is fixed, so there are no columns to choose. Each read takes the documents changed since the last one, 100 at most, and keeps within Xero’s limits (60 calls a minute, 5,000 a day); a first read of many documents finishes over several runs.
- QuickBooks Online: choose a QuickBooks Online OAuth2 credential, select Load company to see the company it is connected to, then choose the documents: Invoices or Bills. QuickBooks does not give a document’s change history, so the steps come from the document and the documents linked to it: an invoice gives the estimate and its acceptance (from the linked estimate), created, issued, sent (when it was emailed), each payment and paid in full; a bill gives the purchase order, created, issued, each bill payment and paid in full. The mapping is fixed, so there are no columns to choose. Each read takes the documents changed since the last one, 100 at most.
- HubSpot: choose a HubSpot OAuth2 or private app token credential, select Load pipelines, then choose the object: Deals or Tickets (and one pipeline), or Contact lifecycle stage. Each stage a record enters becomes a step, named as in the pipeline; contacts’ names and emails are not read. The mapping is fixed, so there are no columns to choose. Each read takes the records changed since the last one, 100 at most.
- Salesforce: choose a Salesforce OAuth2 credential, select Load organisation to see the organisation it reaches, then choose the object: Opportunities, Cases or Leads. Each stage an opportunity enters is a step (changes to amount or dates alone are not); a case gives created and each status; a lead gives created, each status and converted. Case and lead status need field history tracking turned on in Salesforce. The mapping is fixed, so there are no columns to choose. Each read takes the records changed since the last one, 100 at most; when the day’s API requests run out, the next run goes on.
- Feishu Base, Feishu approval: choose the project’s Feishu credential, then the base or the approval definition. Each approval node’s finish time becomes a step.

## Mapping: what each row is

Rows of the table come in two shapes:

- One row per case, a time column per step: for example a samples table with received, test started, reviewed and report issued times. Choose the case id column, then name a step for each time column.
- One row per status change: for example an order status history. Choose the status column and the changed-at column; the value map can rename raw statuses into clearer step names. A status that comes back counts as rework.

Duaer also recognises the kind of business process: purchase to pay, order to cash, expense approval, lab testing, production order or service ticket, shown under Process kind with the reason; you can choose another or None. With a kind, steps take its usual names and order; findings judge waits against its usual limits (for example a lab sample is usually tested within five days), and cards in generated Watch and Execute workflows say it is the usual limit; Data description lists its key measures (cycle time, on time, completed, first pass) and the usual steps the data lacks.

A process often involves several kinds of object, such as orders and order lines. Read each kind with its own source and fill in Object type under Object levels (optional), for example Order line. For a lower level, choose the upper level’s source in Parent source and the column holding its id in Parent case id column. When the id is made of two columns, use Case id also uses: the order number with the line number gives SO-1001-10. When the table holds another source’s id column, Duaer suggests this; select Use. One id belongs to one kind of object: an id another kind already uses is not written, and the read says how many were left out.

Once levels are set, the upper level’s source card gains Cases by level (owners and admins only): View lists the 50 most recently active cases, each with its current step, how many lower-level cases it has and the longest any of them has been idle; open one to see where each lower-level case stands and for how many days, or find a case by its id. In the employee portal, a case’s timeline lists its lower-level cases; open one to see its own timeline, and Parent leads back. Only cases the person could already see are listed.

At the top of the Mapping step, Data description tells the table in business words once you select View: what one row is, what each column holds, how full it is and its common values, and which columns have problems. It also lists what the data can answer (such as how long cases wait between steps, where they get stuck, who is slow) and what it lacks (such as no person or owner email column), and follows the mapping as you change its columns. A source in use offers it on its card too.

Duaer first suggests a mapping from the column names and contents. It reads Chinese headers, pinyin initials (such as DDH, SHRQ) and common SAP, Kingdee and Yonyou fields (such as FBILLNO, FAPPROVEDATE), and gives time columns readable step names; a column for when the row was last written (such as updated_at) is never taken as a step. Under each choice it says how sure it is (Sure, Fairly sure, Unsure) and why, and marks the uncertain ones; check each field. With AI reads category values on under Features, the AI also sees the values of status and category columns, to read statuses and fill the value map; ids, people, emails and amounts are never shown to it, and it does not guess what a number-only status code means: fill those in yourself. Three optional columns: Who did the step is the person behind each step (the owner email column when nothing else is suggested), Owner email is who owns the case now (cards go to them), and the two may be the same column; Attributes for root cause, up to 20 columns such as lab, line or priority, let the findings say which kind of case a problem happens to. If dates look like 03/04/2026, choose Day first or Month first.

## Preview: see the issues first

The preview shows how many rows, cases and events were read, and the steps of the first cases. Issues are listed with examples: rows without a case id, steps without a time, cases with steps out of order, times in the future, most times at night (usually a wrong time zone), statuses not in the value map. Each issue has a one-line hint on what to check. Issues marked Blocks must be fixed before you continue.

## Schedule, audience and confirm

1. Under Read new rows every, choose minutes, hours or once a day. Duaer reads only rows newer than the last read; with many rows it shows More rows waiting and continues next time. A file source has no interval to choose.
2. Under Who sees every case on the portal, tick Everyone in the organization so every member sees them, including people who join later, or search the organization’s members by name or email and pick them. Owners and admins always see them.
3. Select Confirm and start. The source is Enabled and the first read starts at once.

Later you can Read now, Pause or Resume it; Edit and Delete are in the More (⋯) menu. After a mapping change, Duaer rewrites this source’s steps with the new mapping; decisions written back by a Coordinate workflow are kept.
## Questions

### Does Duaer change the data in my database?

No. Duaer uses the credential you choose to read the columns you tick, only rows newer than the last read, and never writes back to your database.

### My table has several time columns and a status column. Which shape do I choose?

If every step has its own time column, choose One row per case, a time column per step. If there is one status column and one changed-at column with a row per change, choose One row per status change.

### Is the owner email required?

Not for findings. To generate workflows that send cards it is: a case without an owner gets no card. Owners must be members of the organization.

## Related

- [See the process in your data and generate workflows in Duaer](https://doc.duaer.com/build/process.md)
- [Process findings and SOP conformance in Duaer](https://doc.duaer.com/build/process-findings.md)
- [Watch, Coordinate and Execute: the workflows Duaer generates from a process](https://doc.duaer.com/build/process-workflows.md)
- [Keep rows in a Duaer data table](https://doc.duaer.com/build/data-tables.md)

