One product, not a shared task engine

Ecosystem products do not migrate onto A3.Projects and do not break without it. They call its public API when the organisation has the matching subscription.

Calls run in one direction only

The other product calls the A3.Projects API. There is no polling the other way: the source product knows when its entity changed, while A3.Projects would have to poll everyone on a schedule.

The entity stays in its own product

A lawyer creates an instruction on a case in A3.Lawyer exactly as before. No feature moves over here.

The subscription is checked

Before the call the source product asks A3.ID whether the organisation has an active A3.Projects subscription.

An external assignment is created

Title, assignee, due date, entity type and a link back. An idempotency key stops a repeated call from creating a duplicate.

The work joins one list

The instruction sits next to ordinary tasks. Time is logged against it and it shows up in the overdue view.

The integration call always runs outside the main transaction of the source product. A lawyer instruction is saved even if A3.Projects is unavailable at that moment.

Who owns which fields

Splitting ownership is what makes a one-way integration honest. The user can see that the due date arrived from elsewhere and is not changed here.

Owned by the source product

  • Title
  • Due date
  • Assignee
  • Entity state

Owned by A3.Projects

  • Comments
  • Tags
  • Time entries
  • Project membership

What ecosystem products pass in

ProductWhat the link carries
A3.IDSign-in, organisations, permissions and subscription. The only mandatory dependency
A3.HREmployee cost rates, read-only in the product
A3.LawyerMatter assignments arrive as external assignments, and an act keeps a link to the contract act
A3.AccountingAccounting assignments arrive as external assignments, project costs are entered by budget line for now
A3.SalesAn act for billable hours keeps a link to the bill, deals arrive as external assignments
A3.MeetA call on a task, recording and transcript as an attachment, action items from minutes
A3.DriveFiles on tasks and comments. A mandatory dependency for attachments
A3.TrustCounterparty screening requests arrive as external assignments

Links that need work on the neighbouring products are listed on the roadmap page. Without them the calculation runs on manual rates and costs, and the interface says the channel is not set up.

The time logging widget

A lawyer who worked on a case inside their own product will not walk into another product to log an hour. In practice that means the hour never reaches project cost at all.

  • The widget embeds into a case, screening or ticket card on the source product side
  • It shows hours only: there are no rates and no economics inside it
  • Without an active A3.Projects subscription the widget does not render
  • The task is created on the first entry: insisting on creating it first would kill the scenario
  • The message channel is one way. The widget reports its height and the logged entry, and accepts no commands back

Need your own integration?

The public API is documented and versioned by path. If your product can call REST, it can create external assignments.