Skip to content

Integration  ·  IT and security

How to build a device lifecycle sync

The asset register says four hundred laptops, device management sees three hundred and sixty, and finance depreciates four hundred and twenty. What follows is the model behind reconciling them, the prompts that build it, and what changes in production.

Built with Tray Headless

  1. System Jamf
  2. System Workday
  3. Step Reconcile three ways
  4. Step Raise exceptions
  5. System NetSuite
Also Jira

Three systems each hold part of the truth, and the reconciliation between them is the product, not any one register.

The short answer

What is a device lifecycle sync?

Done well, a device lifecycle sync is four things: reconciliation between what device management can see, what finance carries as an asset and who HR says works here, an owner derived from the person rather than typed, exceptions raised as work instead of listed in a report, and lifecycle events driving the sync rather than a periodic audit. The part that goes wrong most often is treating one system as the register. Device management cannot see a laptop in a drawer, finance cannot see whether it is used, and HR does not know it exists.

What matters here

  • No single system is the register. Management sees what checks in, finance sees what was bought, HR knows who is here.
  • A device that has not checked in for weeks is an exception, not a row in a report.
  • Derive the holder from the HRIS. A typed name goes stale the first time somebody changes team.
  • Drive the sync from lifecycle events, not an annual audit. A leaver device should surface the day they leave.
  • Report devices held by leavers. That number is a security exposure before it is an asset problem.

Who this is for

You run IT operations or finance systems. Three systems each hold a version of the device estate, none of them agree, and the annual audit is a week of somebody chasing people.

How it works in practice

From a device existing to every system agreeing about it, in order.

  1. 1

    Each source is read for what it actually knows

    Management for check-in and state, finance for purchase and depreciation, HR for who works here.

  2. 2

    Devices are matched on serial number

    Not on an asset tag somebody typed, which is where most mismatches begin.

  3. 3

    The holder is derived from the HRIS

    So a team change updates the record without anybody editing it.

  4. 4

    Differences become exceptions with owners

    Not rows in a reconciliation report nobody reads.

  5. 5

    Lifecycle events drive updates

    Joiner, leaver, role change, repair and disposal, each triggering the relevant check.

  6. 6

    Leaver devices surface immediately

    Because an unreturned laptop is a security exposure before it is a depreciation question.

What the sync is made of

Four parts, and the first is accepting that no single system knows.

A three-way reconciliation

Management, finance and HR compared against each other. Each is authoritative for something and blind to something else.

Derived ownership

The holder resolved from the HRIS rather than typed into an asset field that ages immediately.

Exceptions as work

Each difference assigned with a due date. A reconciliation report is a list; an assigned exception is a fix.

Event-driven updates

Joiners, leavers and role changes trigger the check. An annual audit finds a year of drift at once.

The Tray Headless prompts

Paste these into Claude Code or Codex with the Tray Headless plugin installed. Each stage runs on its own. The systems named in them are the worked example rather than a requirement, and every prompt says so.

Once per project, run /tray-workflows:set-workspace to pick the workspace these build in. Point it at a sandbox first.

  1. 1

    Set up, then establish what each system actually knows

    Each is authoritative for something and blind to something else.

    Headless skills build-workflow tray-patterns

    Use build-workflow. The systems in play are Jamf, NetSuite and
    Workday, or whatever we run in those seats.
    
    For each, tell me what it genuinely knows:
    
      Device management: serial, model, last check-in, OS, encryption state,
      assigned user where set. It cannot see a device that is switched off in
      a drawer.
      Finance: what was purchased, cost, depreciation and disposal. It has no
      idea whether anything is in use.
      HR: who works here and who left. It does not know a device exists.
    
    None of them is the register. The reconciliation between them is the
    product, and treating any one as authoritative is why the numbers never
    agree.

    Match on serial number, never on an asset tag. Tags are typed, mistyped, reused and fall off.

  2. 2

    Reconcile three ways and derive the holder

    A typed holder name is stale the first time somebody changes team.

    Headless skills build-workflow

    Use build-workflow. Match on serial number across all three, then derive
    the holder from the HRIS instead of an asset field.
    
    Produce these differences:
    
      In finance, never seen by management: never deployed, or lost
      In management, not in finance: bought outside procurement
      Assigned to somebody who has left
      Assigned to nobody but checking in regularly, which means somebody has
      it and nobody knows who
      Not checked in for more than a threshold
      Disposed in finance but still checking in, which is the worst case
    
    Each of those is a different problem with a different owner. A single
    count of unreconciled devices tells nobody what to do.
  3. 3

    Turn differences into assigned work

    A reconciliation report is a list; an exception is a fix.

    Create a tracked exception per difference, with an owner and a due date,
    rather than producing a report.
    
    Route by type: a leaver device to the IT operations owner and the
    leaver's manager; a device bought outside procurement to the requesting
    team's budget owner; a disposed device still checking in to security
    immediately.
    
    Include what is needed to resolve it: serial, model, last check-in, last
    known holder, purchase date and value.
    
    A reconciliation report that lists ninety differences produces no fixes.
    Ninety assigned exceptions with owners produce most of them, and the
    difference is entirely in the assignment.
  4. 4

    Drive it from lifecycle events

    An annual audit finds a year of drift at once.

    Headless skills tray-gotchas

    Use tray-gotchas, then trigger checks from events instead of a schedule:
    
      Joiner: a device is assigned and its assignment recorded
      Leaver: on their last day, list what they hold and open a return task,
      and if it has not checked in a week later escalate
      Role or location change: re-derive the holder record
      Repair or replacement: keep the old serial linked to the new one
      Disposal: confirm the wipe certificate before finance writes it off
    
    Keep the daily reconciliation as a safety net, not as the mechanism. The
    events catch things when somebody can still act on them, and the
    reconciliation catches what the events missed.
  5. 5

    Report the exposure, not the count

    An unreturned laptop is a security problem before it is an asset one.

    Report continuously, not annually:
    
      Devices held by people who have left, with age. This should be zero and
      it is the security number.
      Devices not checked in for 30 and 90 days, with value
      Devices in finance that management has never seen
      Unencrypted devices, which is a compliance exposure rather than an
      inventory one
      Devices approaching end of life, for the refresh budget
    
    Lead with the leaver number. Everything else is asset management and that
    one is an exposure, and the two get very different attention from very
    different people.
  6. 6

    Prove it works, then hand the thresholds to IT

    Because check-in expectations differ by device type.

    Run the per-step schema checks and the whole-workflow audit before this
    touches production.
    
    Then open the same workflow in Tray Build so IT operations can adjust the
    check-in thresholds, the exception routing and the escalation timings in
    the visual canvas. A laptop and a rarely used spare have very different
    expected check-in patterns.

What it connects to

Three systems each hold part of the truth and the reconciliation is the product.

ServiceNow

Read and update the CMDB, which is where most estates already keep the asset record this reconciles against.

Reads and writes

Jamf

Read every device it can see with its serial, check-in, encryption state and assigned user.

Reads

Intune

Read Windows devices, since almost no estate is a single platform whatever the standard says.

Reads

NetSuite

Read purchases, asset values and disposals, and write back the reconciled state.

Reads and writes

Workday

Read joiners, leavers and role changes, which is what drives the events and derives the holder.

Reads

Jira

Create assigned exceptions with owners and due dates, in the queue IT already works from.

Writes

Slack

Escalate a leaver device that has not been returned, and alert on a disposed device still checking in.

Writes

Same build, other stacks

The design does not change if you run something else in one of these seats. The same prompts build it against SAP S/4HANA, Microsoft Teams, SAP SuccessFactors, Jira Service Desk, Oracle or Google Chat.

Named systems are the ones most teams run, not the only ones that work. Each is an authentication in your Tray workspace, referenced by name, so the workflow never holds a credential. Where we have a connector page, the name links to it.

Running it in production

This tracks company property and finds devices held by people who have gone.

It runs on the platform, not on your laptop

Event-driven checks fire on a leaver last day and the daily reconciliation runs regardless, rather than an audit somebody schedules yearly.

Every exception is assigned and tracked

Owner, due date and resolution. A reconciliation report produces no fixes; assigned exceptions produce most of them.

Credentials are managed, never in code

Device management access can see and act on every machine in the company. Read-scoped here, held in your workspace and separately rotatable.

IT owns the thresholds

Check-in windows, exception routing and escalation timings open in Tray Build, because a spare laptop and a daily driver behave differently.

Leaver devices lead the report

That number is a security exposure, and separating it from the asset reconciliation is what gets it the attention it needs.

Questions people ask

Why is no single system the register?

Because device management cannot see a laptop switched off in a drawer, finance has no idea whether anything is in use, and HR does not know devices exist. The reconciliation between them is the only complete picture.

Why match on serial instead of asset tag?

Because tags are typed, mistyped, reused and physically fall off. The serial number is the one identifier all three systems can agree on without human transcription.

Why derive the holder from the HRIS?

Because an asset field holding a typed name goes stale the first time somebody changes team, and nobody ever goes back to update it.

Why event-driven instead of an annual audit?

Because an annual audit finds a year of drift at once, long after anybody can explain it. Events surface a problem while somebody still remembers the device.

What is the most important number?

Devices held by people who have left. That is a security exposure rather than an asset discrepancy, and reporting it separately is what gets it acted on.

Vibe-coding app guides

Vibe-code an entire app with Helix

This moves the data between systems. It does not give anybody a screen to work in. Build that app in Claude Code, Codex or Cursor, then deploy and run it governed on Tray Helix. Same kind of guide, same kind of prompts.

How to build an IT asset and licence tracker (opens helix.tray.ai in a new tab)

Last reviewed September 2026.