Operational requests and My Work

Document information
  • Canonical URL: /docs/12_workflows/10_operational-requests-and-my-work
  • Version: 2026-10-02
  • Tags: operations, datapool, my-work, processflow, guides

Operational requests are the customer work items your operations team finishes in Tealfabric. They live in the DataPool schema operational_requests. Process runs write and refresh those rows from your support system, CRM, or ERP. My Work on / is the queue where people open a request, see where the company process is, finish the next human step, and hand work to another person or team.

Flow from a source system through PUT /operations/requests into the operational_requests DataPool schema, then into My Work, Team, and Processes.

What you get

SurfaceURLWho uses it
My Work/Anyone with operations access. Needs action, Waiting, and Recently completed.
Request detail/work/operational_request/{id}Same people. Four questions, journey strip, approve/retry, and handover.
Team/teamLeads and managers of an organization unit. Stuck handoffs first.
Processes/runs and /runs/{executionId}Operators watching live business process runs (category business).

When My Work is empty, Tealfabric does not invent demo tasks. The page tells you to contact a workspace administrator or team lead so connections to company systems can be set up and real processes can write requests.

Prepare the request model (administrators)

My Work needs the operational_requests schema before processes can write rows.

  1. Sign in as a workspace administrator (tenant admin).
  2. Open My Work. If the model is missing, use Prepare request model.
  3. Connect integrations and publish business processes that call tf.operations.* or PUT /api/v1/operations/requests.

Preparing the model does not seed sample requests. Full authoring guide: Publishing work for tenant admins.

Work a request in My Work

  1. Open /. Prefer Needs action for work you must finish; use Waiting when the process is waiting on someone or something else; use Recently completed for a short history of finished items.
  2. Open a card. Read the four sections: what is happening, why you are involved, what already happened, and what happens when you act.
  3. Take the primary action when available (Approve / Reject / Retry), or follow the instructions and use Pass / Escalate when needed.

Assign and hand over

Assignment fields stay on the request row (owner_user_id, owner_label, organization_unit_id, due_at, priority). Handovers also append handover_history and set handover_note.

ActionEffect
TakeYou become the owner
Pass to personDirectory search; sets owner (and optional team)
Pass to teamSets organization unit and clears owner so the team can pick it up
EscalateClears owner and marks the request as needing a person

API: POST /api/v1/work-items/operational_request/{id}/handover
Directory search: GET /api/v1/operations/directory/users?q=

Work kinds (process writer contract)

ProcessFlow owns request state. Operations only changes ownership via handover and completes human gates via Approve/Reject / Retry.

Work kindWhat the process wroteWhat the employee seesWhat they do
Approvalattention: "approval" and human_request_id set to a pending human-input idApprove / RejectChoose one. That responds to the process gate and the process continues.
Approval (not ready)attention: "approval" but empty human_request_idWarning: approval is not readyFix the process (pause with human input and write the id), or Pass / Escalate.
Action requiredattention: "action_required" + required_actionInstructions onlyDo the work in CRM/ERP/support. The process updates the request when it continues.
Exceptionattention: "blocked"Exception guidanceClear the blocker, Retry when offered, or Pass / Escalate.

Prefer helpers:

await tf.operations.openApproval({
  external_id: "erp-supplier-10482",
  subject: "Approve supplier onboarding",
  process_name: "Supplier onboarding",
  human_request_id: pending_human_id,
  why_visible: "You own supplier activation for this account.",
  consequence: "Approving activates the supplier in ERP.",
  required_action: "Confirm documents and activate the supplier.",
  journey_beat: "in_process"
});

Validate first with POST /api/v1/operations/requests/validate or tf.operations.validate(payload).

Allowed values

FieldAllowed values
statusopen, waiting, blocked, done
attentionapproval, action_required, blocked, info
checks[].stateverified, complete, needs_review, pending
journey_beatreceived, in_process, systems, done
actor_hintperson, agent, system

Canonical export: OPERATIONAL_REQUEST_PROCESS_CONTRACT in operational-requests.model.ts.

Field contract

Every request is one datapool_data row. Prefer tf.operations.* or PUT /api/v1/operations/requests (upsert by external_id).

Required: external_id, subject, process_name, attention
Required for approval: human_request_id
Recommended: party, required_action, consequence, why_visible, process_id, execution_id, ownership fields, due_at, source_system
Enrichment: journey_beat, journey_stage_label, checks, system_refs, actor_hint, awaiting_role, summary, ai_summary

Related guides