Result The database does the filtering and paging, and rows outside the caller's read scope are excluded.
Permissions
Own records for staff, team records for managers
Problem
Sales staff should see their own opportunities; managers should see their team's.
Solution
Set the Read scope per role on the entity. Team follows the reporting hierarchy.
Object permissions: Opportunity
Role Read Create Update Delete
Sales Own Own Own None
Sales manager Team Team Team Own
Administrator All All All All
Result Grids, reports, APIs and TAFI all return the same rows for the same user, because the data engine applies the scope.
Lifecycles
Move a record by status name
Problem
Your front end should approve a vendor without knowing status ids.
Solution
Use the client SDK's transitionTo, which refuses moves the lifecycle does not allow.
vendor.service.ts
import { inject } from'@angular/core';
import { TAF_WORKFLOW } from'taf-client-angular';
const workflow = inject(TAF_WORKFLOW);
// Throws a TRANSITION error when the lifecycle does not allow the moveawait workflow.transitionTo('Vendor', vendorId, 'Approved');
Result The transition is validated, recorded in history, and any after-transition workflows run.
Approvals
Two of three finance approvers
Problem
Large purchases need agreement from finance, but not every member of the team.
Solution
Use the Role strategy on the finance level with an N-of-M quorum.
Approval process: Purchase request
Routing Sequential
Level 1 Reporting manager quorum: any one
Level 2 Role: Finance quorum: 2 of M
reminder after 24 hours, then escalate
Band Amount > 50,000 → add Level 3: Department head
Result Requests settle when two finance approvers agree, and large amounts get a third level automatically.
Workflows
Create an invoice when an opportunity is won
Problem
Winning an opportunity should create the invoice and tell finance.
Solution
Attach a workflow to the Won transition with a CreateRecord action followed by SendEmail.
Workflow actions (illustrative)Configure in Studio's workflow designer
Result GET /vu/vendors/{id} returns the shaped record under the caller's permissions, with an OpenAPI 3.1 document for client generation.
Multi-tenancy
Call the API in a tenant and app context
Problem
An integration serves several tenants and must work in the right one.
Solution
Send the tenant, app and environment headers with every call, with a token for a user of that tenant.
HTTP
POST /api/v1/queries/select HTTP/1.1
Host: your-data-host
Authorization: Bearer <token for a user of the tenant>
TenantId: <tenant id>
AppId: <app id>
EnvironmentId: <environment id>
Content-Type: application/json
{ "EntityName": "Vendor", "SelectedFields": ["Id", "Name"], "TopCount": 10 }
Result The data engine scopes the query to that tenant, app and environment, then applies the user's role scopes.
Custom Front-end
Sign users in from your own front end
Problem
Your branded app needs sign-in without building an identity service.
Solution
Use the identity slice of the client SDK, which stores and refreshes tokens for you.
sign-in.page.ts
import { inject } from'@angular/core';
import { TAF_IDENTITY } from'taf-client-angular';
const identity = inject(TAF_IDENTITY);
const result = await identity.signIn(email, password, /* rememberMe */true);
// Later calls through TAF_DATA carry the token; a 401 triggers one refresh and a retry.// identity.signOut() ends the session.
Result Users sign in with their TechAppForce account, and tokens are refreshed automatically.
TAFI
Ask TAFI for a plan before any change
Problem
You want AI help, but no surprises in your application.
Solution
Start in Plan mode, review the proposed changes, then switch to Agent mode to apply them one confirmation at a time.
TAFI, Plan mode
You: Add an approval step for vendor onboarding: procurement, then finance.
TAFI: Plan (nothing changed yet)
1. Create entity Vendor (6 fields)
2. Add approval process: Procurement, then Finance
3. Notify the requester when decided
4. Add screen Vendor approval
Switch to Agent mode to preview and apply each change.
Result Each change is previewed, confirmed by you, applied under your name and read back.
Sample applications Coming soon
Complete applications you can install into Development and take apart, starting with approvals, service desk and field service.
Sample applications are being prepared as installable packs. Until then, the tutorials walk through the same builds step by step.