Add Detail Row

Append a single processed-record row — success or failure — to the RPA Watch details table

Add Detail Row appends one row to the DataTable produced by Create Details Table. Use it inside your processing loop, in both the Try and Catch paths, so each record contributes exactly one row to the report.

Properties

Input

PropertyRequiredTypeDescription
Details TableYesDataTableThe table created by Create Details Table.

Record

PropertyRequiredTypeDescription
Sequence NoYesInt321-based row number. Use the loop index or a running counter.
StatusYesStringsuccess or failed. The value is trimmed and lowercased before it is written, so "Success" and " SUCCESS " are both stored as success.
Record IDNoStringStable identifier of the processed record (e.g. INV-1001, EMP-0042).
Record NameNoStringHuman-readable name displayed on the dashboard.
ResultNoStringResult message for successful records — e.g. "Posted to SAP under document 5100023987".
Error MessageNoStringError message for failed records — e.g. ex.Message.

Status semantics

Only success and failed are meaningful. Send Report uses these values to calculate the overall run status:

- All rows success → run status is success

- All rows failed → run status is failed

- Mixed → run status is partial_success

Any other value (typos, custom states) will be treated as notsuccess and notfailed and will skew the calculation. Stick to the two accepted values.

Patterns

Map a source column to the RPA Watch status (recommended)

When you read records from Excel, a database, or another upstream system, those records usually already have their own status column Completed, Error, Pending, etc.). The simplest pattern is to translate that value to success or failed with an inline ternary expression — no Try/Catch needed:

Add Detail Row
    Details Table = detailsTable
    Sequence No   = index                                                 // ForEachRow.CurrentIndex
    Record ID     = currentDataRow["National ID"].ToString()
    Record Name   = currentDataRow["First Name"].ToString() + " "
                  + currentDataRow["Last Name"].ToString()
    Status        = currentDataRow["Flow Status"].ToString() == "Completed"
                      ? "success" : "failed"
    Result        = currentDataRow["Log"].ToString()
    Error Message = currentDataRow["Error"].ToString()

Wrap exception-driven processing in Try/Catch

When the act of processing a record can throw, log the outcome in both branches:

For Each row in dtInput

    Try
        // …business logic…
        Add Detail Row (
            detailsTable, sequenceNo,
            RecordId = row["Id"].ToString(),
            RecordName = row["Name"].ToString(),
            Status   = "success",
            Result   = "OK")
    Catch ex
        Add Detail Row (
            detailsTable, sequenceNo,
            RecordId     = row["Id"].ToString(),
            Status       = "failed",
            ErrorMessage = ex.Message)
    End Try

Use ForEachRow.CurrentIndex for Sequence No

For Each Row exposes a CurrentIndex property. Bind a workflow variable (e.g. index) to it in the Properties panel and feed that variable straight into Add Detail Row → Sequence No. You don't need a manual counter and the value is guaranteed to be 0-based, dense, and aligned with the row being processed.

Skipping records without inflating the count

If a record is intentionally skipped (e.g. filtered out by validation), don't add a row for it. Send Report's status calculation is based on the rows you log, so silent skips should not appear as success or failed.