<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ReRoutd Admin</title>
    <description>The latest articles on DEV Community by ReRoutd Admin (@reroutd).</description>
    <link>https://dev.to/reroutd</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3783384%2F949e973b-3cff-47c4-8d29-b76b39299f15.png</url>
      <title>DEV Community: ReRoutd Admin</title>
      <link>https://dev.to/reroutd</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/reroutd"/>
    <language>en</language>
    <item>
      <title>How to Automate Laptop Retrieval in Your Offboarding Workflow</title>
      <dc:creator>ReRoutd Admin</dc:creator>
      <pubDate>Thu, 29 Oct 2026 22:59:43 +0000</pubDate>
      <link>https://dev.to/reroutd/how-to-automate-laptop-retrieval-in-your-offboarding-workflow-4a1j</link>
      <guid>https://dev.to/reroutd/how-to-automate-laptop-retrieval-in-your-offboarding-workflow-4a1j</guid>
      <description>&lt;p&gt;Most offboarding stacks can kill a departing employee’s access in minutes. SSO goes off, the mailbox converts, the license frees up. Then there’s the laptop, which is still sitting on a desk three states away, and the only thing tracking it is someone’s memory.&lt;/p&gt;

&lt;p&gt;That’s the gap worth automating. Not because shipping a box is hard, but because the return is the one offboarding step with no owner, no state, and no timestamp. Here’s a workflow that gives it all three, from the HR trigger to a reimaged machine back in the pool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Treat the return as a state machine, not an email
&lt;/h2&gt;

&lt;p&gt;The mistake most teams make is modeling retrieval as a message: “Hey, can you send the laptop back?” Messages don’t have states. They get read, half-answered, and forgotten.&lt;/p&gt;

&lt;p&gt;Model it as a record instead. Every departing device gets one return record, tied to the asset tag and serial, that moves through a fixed set of states. Each state has an owner and an expected duration. When a record sits in one state too long, something fires.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;return_record&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;asset_tag&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;LT-0412&lt;/span&gt;
  &lt;span class="na"&gt;serial&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;C02XXXXXXX&lt;/span&gt;
  &lt;span class="na"&gt;employee_status&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;terminated&lt;/span&gt;   &lt;span class="c1"&gt;# from HRIS&lt;/span&gt;
  &lt;span class="na"&gt;states&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;requested&lt;/span&gt;        &lt;span class="c1"&gt;# kit ordered, owner: IT&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;kit_delivered&lt;/span&gt;    &lt;span class="c1"&gt;# carrier confirms delivery to employee&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;in_transit&lt;/span&gt;       &lt;span class="c1"&gt;# employee dropped it off&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;received&lt;/span&gt;         &lt;span class="c1"&gt;# box arrived at company address&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;checked_in&lt;/span&gt;       &lt;span class="c1"&gt;# serial matched, condition logged&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;reimaged&lt;/span&gt;         &lt;span class="c1"&gt;# ready for reassignment&lt;/span&gt;
  &lt;span class="na"&gt;escalate_if_stuck_days&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;kit_delivered&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5&lt;/span&gt;
    &lt;span class="na"&gt;in_transit&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The numbers in &lt;code&gt;escalate_if_stuck_days&lt;/code&gt; are yours to set. The point is that they exist.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: The trigger
&lt;/h2&gt;

&lt;p&gt;The workflow starts when HR records a termination date, not when someone remembers to open a ticket. Most HRIS tools can fire a webhook or a scheduled export when an employee’s status or end date changes. Point that at your ticketing system (Jira Service Management, ServiceNow, Freshservice, whatever you run) and have it create one offboarding ticket with subtasks.&lt;/p&gt;

&lt;p&gt;One of those subtasks is “Device return,” and it should be created automatically for every asset assigned to that person. Pull the assignment from your MDM or asset inventory, not from the employee’s recollection. People forget the old iPad in the drawer.&lt;/p&gt;

&lt;p&gt;If your HRIS can’t send events, a daily scheduled job that diffs end dates against yesterday’s export works fine. Boring is good here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Lock in MDM, don’t wipe yet
&lt;/h2&gt;

&lt;p&gt;On the last day, or the moment access is cut for involuntary exits, send a remote lock from your MDM. Jamf, Intune, Kandji and the rest all support it. A locked laptop is useless to anyone else and still intact for you.&lt;/p&gt;

&lt;p&gt;Resist the urge to wipe remotely before the device is back. A wipe before return removes your ability to check the machine, recover files someone forgot to hand over, or confirm it’s the device you think it is. Lock now, wipe on your bench.&lt;/p&gt;

&lt;p&gt;Log the lock in the return record with a timestamp. Auditors and security reviews love that line.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Confirm the address, then request the kit
&lt;/h2&gt;

&lt;p&gt;The most common reason a return stalls has nothing to do with the employee. It’s a stale address. People move during a notice period, or the HRIS still has the address from their offer letter.&lt;/p&gt;

&lt;p&gt;So the kit request step has two parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;HR confirms the current shipping address with the employee before anything ships.&lt;/li&gt;
&lt;li&gt;IT orders the kit to that address.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The second part is where a &lt;a href="https://reroutd.com/services/laptop-return" rel="noopener noreferrer"&gt;laptop retrieval service&lt;/a&gt; earns its place. Instead of asking the departing employee to find a box, buy tape and front postage, a prepaid kit arrives with packaging sized for the device, a paid return label and a tamper-evident seal. Their only job is to pack it and drop it off at a carrier.&lt;/p&gt;

&lt;p&gt;If your retrieval vendor doesn’t offer an API, don’t force it. Keep the order as a ticket subtask with a named owner and paste the tracking reference back into the record. Automation is about state and ownership, not about every step being a webhook.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Track states, not a tracking number
&lt;/h2&gt;

&lt;p&gt;A tracking number in one person’s inbox isn’t visibility. What you want is the return record’s state visible to both IT and HR, so nobody has to ask “did that laptop ever come back?” in Slack.&lt;/p&gt;

&lt;p&gt;Map carrier and vendor events to your states. Delivery of the kit moves the record to &lt;code&gt;kit_delivered&lt;/code&gt;. The first carrier scan on the return leg moves it to &lt;code&gt;in_transit&lt;/code&gt;. Delivery to your company address moves it to &lt;code&gt;received&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Then wire the escalation. If a record sits in &lt;code&gt;kit_delivered&lt;/code&gt; past your threshold, the ticket pings the manager or HR, not the IT tech who already has thirty other tickets. The person who has the relationship sends the nudge. Many kit services also send automated notifications to the employee, which takes the routine reminders off your plate entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Check-in at intake
&lt;/h2&gt;

&lt;p&gt;“Delivered” is not “done.” Plenty of asset records go wrong in the last ten feet, when a box gets signed for and dropped in a closet.&lt;/p&gt;

&lt;p&gt;Make check-in a required step that closes the record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confirm the seal is intact before opening.&lt;/li&gt;
&lt;li&gt;Scan or type the serial and match it against the record.&lt;/li&gt;
&lt;li&gt;Note condition and anything that came back with it (charger, dock).&lt;/li&gt;
&lt;li&gt;Flag mismatches immediately. A wrong serial is far easier to chase this week than next quarter.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only a serial match moves the record to &lt;code&gt;checked_in&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: Wipe, reimage, reassign
&lt;/h2&gt;

&lt;p&gt;Now wipe. Use your MDM’s erase command or your standard reimage process, then re-enroll the device so it’s ready for the next hire. Record the wipe and the reimage as their own timestamps, separate from check-in. That way your records can always answer two different questions: did we get it back, and is it clean?&lt;/p&gt;

&lt;h2&gt;
  
  
  The whole flow in one table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Trigger&lt;/th&gt;
&lt;th&gt;Owner&lt;/th&gt;
&lt;th&gt;Escalate if stuck&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;requested&lt;/td&gt;
&lt;td&gt;HRIS end date set&lt;/td&gt;
&lt;td&gt;IT&lt;/td&gt;
&lt;td&gt;Kit not ordered within 1 business day&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kit_delivered&lt;/td&gt;
&lt;td&gt;Carrier delivery scan&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;td&gt;No return scan after your threshold&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;in_transit&lt;/td&gt;
&lt;td&gt;First return-leg scan&lt;/td&gt;
&lt;td&gt;IT&lt;/td&gt;
&lt;td&gt;No movement after your threshold&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;received&lt;/td&gt;
&lt;td&gt;Delivered to company address&lt;/td&gt;
&lt;td&gt;IT&lt;/td&gt;
&lt;td&gt;Not checked in within 2 business days&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;checked_in&lt;/td&gt;
&lt;td&gt;Serial matched at intake&lt;/td&gt;
&lt;td&gt;IT&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;reimaged&lt;/td&gt;
&lt;td&gt;Wipe and re-enroll logged&lt;/td&gt;
&lt;td&gt;IT&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The thresholds are examples. Pick numbers that fit your team, write them down, and let the ticket enforce them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Copy-paste checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] HRIS end date creates an offboarding ticket automatically&lt;/li&gt;
&lt;li&gt;[ ] Ticket creates one “Device return” subtask per assigned asset&lt;/li&gt;
&lt;li&gt;[ ] Remote lock sent in MDM and timestamped&lt;/li&gt;
&lt;li&gt;[ ] Current shipping address confirmed by HR&lt;/li&gt;
&lt;li&gt;[ ] Prepaid kit ordered, sized for the device&lt;/li&gt;
&lt;li&gt;[ ] Return record visible to IT and HR&lt;/li&gt;
&lt;li&gt;[ ] Escalation goes to the manager or HR, not the help desk&lt;/li&gt;
&lt;li&gt;[ ] Seal checked and serial matched at intake&lt;/li&gt;
&lt;li&gt;[ ] Wipe and reimage logged as separate steps&lt;/li&gt;
&lt;li&gt;[ ] Record closed only after the serial match&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where to start
&lt;/h2&gt;

&lt;p&gt;You don’t need to build all of this at once. The highest-value change is the first one: make the HRIS end date create the device return subtask automatically. That alone turns “who’s chasing that laptop?” into a ticket with an owner.&lt;/p&gt;

&lt;p&gt;If you want to skip the box-and-label part, here’s what’s inside a &lt;a href="https://reroutd.com/laptop-return-kit" rel="noopener noreferrer"&gt;prepaid laptop return kit&lt;/a&gt; and how it fits into this flow.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The ReRoutd team&lt;/em&gt;&lt;/p&gt;

</description>
      <category>itops</category>
      <category>offboarding</category>
      <category>devops</category>
      <category>remotework</category>
    </item>
  </channel>
</rss>
