How to calculate the true cost of IoT platform migration
Next Mile originally produced this as customer-facing content to guide and estimate a full-scale enterprise IoT platform and fleet migration.
For the OEM creating and selling a connected product, “connectivity” costs a ton, and that cost makes itself felt disproportionately at the program P\&L, especially over time. Connectivity costs themselves tend to be weirdly opaque and/or nebulous. Time to fix that, starting with the IoT software platform.
Most IoT platform cost savings discourse revolves around one central metric: operational cost per connected device, calculated thusly:
$ total platform cost + $ fleet operation cost / # devices = $ cost/connected device
Many platforms sell strictly on this number (“only $1 per device per month!”), and their stated numerator is platform- and communication-focused so you can make an apples-to-apples comparison against your current platform and your cost as determined by your finance team.
Apples-to-apples is the trap. It’s the switching costs that kill you.
In this article, we'll help you factor everything into your numerator: all the switching gotchas, by-the-ways, and batteries-not-includeds. This will get messy.
So why would I transition?
You might not have a choice. Businesses voluntarily transition IoT platforms only occasionally, mostly after feeling the strain of unsustainable cost growth, but sometimes because of performance problems, frequent outages, unaligned roadmaps, and service issues. Unfortunately for many, several recent transitions are involuntary due to a precariously-solvent platform provider threatening to go under.
Most leaders react by switching to big iron (AWS, Azure) because those providers’ likely solvency and commodity pricing theoretically solve both the cost and continuity problems front-and-center today (never mind Google dropping IoT Core). This approach is never the worst plan, and since it’s the most typical, that’s what we’ll focus on here. There’s a long road ahead, and many of the costs your former provider bore will now be yours.
You may feel railroaded into a transition, but before authorizing an enormous effort, ask your VPs to complete this exercise.
Break it down
Most product and business leaders understand their connected product's architecture clearly at a very high utilitarian level:
Device ↔ Platform ↔ Interface
With ↔’s representing both the physical connection (say, cellular) and transport protocol (like MQTT). Let’s begin by unpacking “platform.” Using a representative real-world example, “platform" actually means:
- User authentication
- Account creation
- Device control functions
- Over the air updates
- Data store
- Data processing
- Device provisioning
- Fleet administration
- External integrations
- Platform DevOps
Consequently, step one in a platform transition is to break down what your platform actually does. We begin with the following questions:
- How do you authenticate users?
- How do you authenticate devices?
- Where and how do you store data from devices?
- How do you provision devices?
- How do you handle device and interface analytics?
- How do you build and deploy your fleet(s)'s firmware?
- How do you build, deploy, and administer your interface software?
- How do you view and manage fleet health?
- What external integrations contribute data to your ecosystem?
- Who does all of the above?
- How do other departments (customer service for example) interface with customer devices and admin tools?
- What outside systems depend on data or services from this ecosystem?
From there, we add questions depending on specific context.
Platform piece plans
Step two: you'll need a plan for each piece of your architecture. For each platform function, identify the following tasks and estimate their associated costs:
- The replacement system
- New system licensing costs
- Implementation engineering
- Migration work
- Testing effort
- Rollout effort
- Ancillary operating expenses
There’s more. Our system change has systemic implications:
- Interface application changes
- Device firmware changes
- Dependent system change
- Incident plan: increased call volume, inevitable bricks, # of unconnected devices now on shelves that can't be updated (you may have to leave that legacy infrastructure active far longer than you thought)
- DevOps support effort: these new services are now either decentralized and externalized or partially owned by you. Bake these recurring expenses (and headcount) into each component you intend to build and maintain.
System changes will affect the user experience. For our hypothetical device, interfaces now have a new auth API (BTW, users have to reauthenticate) which devices might depend on as well. You did create a proxy for your current endpoints previously, right? Hopefully?
User accounts and authentication migration
To continue our example, let's say you're going to have Okta take over user authentication and account creation from your old platform. Your business's e-commerce system will also use the same Okta instance so users only have to remember a single brand account. For just this piece, you have to perform the following tasks:
- Okta implementation:
- Stand up
- Migrate user data
- Test
- Verify
- Modify interface app to use new authentication, then test it
- Modify e-commerce site and test it, should work in dev/staging
- End-to-end test with fleet users
- Rollout phases
- Leverage proxy to current user management. If not already implemented:
- Create proxy
- Roll out endpoint changes to interface app(s)
- Roll out endpoint changes to devices, preferably by SKU or other cohort
- Set primary user services to Okta, failover to old
- Move to standalone Okta once you’re certain
- Leverage proxy to current user management. If not already implemented:
- Decommission previous account service
Now, we unpack the remaining components!
Protocol change: HTTPS→MQTT
Protocol changes often aren’t required. For platform customers, API calls are the most expensive part of their bill, so minimizing their frequency is a well-known, low-hanging-fruit best practice. Still, not sending HTTPS headers with every transmission can reduce costs as well, especially for cellular devices.
Protocol change task checklist:
- Stand up MQTT on AWS/Azure, map functions and/or rewrite commands
- Test control functions and data payloads with MQTT
- Rewrite affected device firmware for MQTT by SKU/build
- End-to-end test with affected fleet SKUs
- Rollout
- Comm proxy
- Routing: MQTT to AWS/Azure, HTTPS to legacy
- Legacy HTTPS communication
- Stand up and maintain proxy for legacy HTTPS
- Redirect or reformat communication
- Firmware rollout by line/cohort/SKU
- Decommission HTTPS once you’re sure
Over-the-air firmware update system migration
On the platform side, this one varies greatly by the alternative you’ve chosen. On the device side, there’s usually a substantial firmware change required. Your typical tasks include:
- Configure your replacement platform’s OTA system
- Modify or recreate firmware to conform with new standards and/or implement agent multiplied by the number of distinct firmware builds your fleet contains
- End-to-end test the rebuilt firmware with affected devices
- OTA testing by SKU, connection type, and other parameters
- Firmware rollout by line/cohort/SKU
- Decommission legacy OTA structure once you’re really really sure
Platform data migration
Now we port relevant data from the old platform to the new one. The more types of data you store, the more complex this task becomes. Rollout methodology and timing will play a crucial role—a single bit can represent whether or not a garage door is up or down, so rolling out today based on last night’s data may create an unpleasant surprise for thousands of fleet users.
Platform data migration tasks:
- Rearchitect schema(s), define requirements and functions (controls, history, user data)
- Stand up database types per needs. Test database performance, availability, and scaling.
- Migrate user data into new schema(s) and test
- Modify firmware for new data routing if needed
- End-to-end of test rebuilt firmware with affected devices
- Firmware rollout by line/cohort/SKU
- Maintain and archive legacy database
- Decommission legacy data service when plausible
Device provisioning system migration
Depending on your current approach, upending device provisioning could be the most painful high-level task on this list. Altering manufacturing provisioning in particular can disrupt factory floor tooling and process needs, making provisioning the controlling factor in overall project timing.
Key provisioning migration tasks:
- Redefine manufacturing/provisioning plan. Many non-boutique platforms lack obvious manufacturing provisioning support, but nodes/devices can be created via API, requiring a customized interface (and not necessarily just a user interface).
- Create and test manufacturing/provisioning application and/or modify existing to support
- Modify firmware for new provisioning method as needed
- End-to-end test rebuilt firmware with affected devices
- Firmware rollout by line/cohort/SKU
- Maintain legacy activation database
- Decommission previous provisioning system
Fleet administration tooling migration
Few IoT platforms of any type provide worthwhile fleet administration tooling. If your fleet’s larger than 500,000 devices, chances are you’ve already built some custom interface to view, analyze, segment, and find devices and/or trigger scripts or updates by group. If your operations became dependent on the previous platform’s dashboards or other built-in tooling, you’ll either have to replicate them or live without them.
Although your circumstances dictate, this task list is commonly short:
- Define fleet admin needs and compare to prebuilt dashboard capabilities
- Decide which tools to implement
- If available, design/build or modify your fleet admin service web application to interface with your new system
- Decommission legacy administrative tools
It may also be possible to pipe your new system’s data into your old platform’s dashboards/admin tools.
External integration changes
Always the wildcard, “integrations” means anything that your platform:
- Consumes from third parties
- Is dependent on
- Is depended on
While external integrations are easy to know about, the non-obvious are the external services your previous platform depended on that appeared as standard platform services to you, such as password reset, activation emails, notifications, sign-up/registration, voice control, and similar. Your tasks:
- Map your services architecture
- Identify external depended-ons/dependents
- List and account for all platform functions, noting those that your new platform doesn’t have an obvious solution for
- Recreate or reimplement any remaining necessary services
- Quality, availability, performance testing of integrations as triggered from device, platform, and interface applications
- Decommission any remaining external services used by your old platform
A note on MDF (market development funds)
Technology platform providers like Microsoft and Amazon frequently dish out MDF to their channel partners should those channel partners win a professional services deal to onboard a new device fleet. Your implementation partner would apply some or all of the MDF to cover the professional services cost.
While MDF can take the edge off your capital expense, it usually comes with strings attached that will depend on your specific partner and circumstances. Pay close attention to the fine print!
Calculation worksheet
Step three: add it all up and chart out the timeline. Based on the above example, here’s a general worksheet you can use to tally up your migration’s total real cost and timeframe:
Recurring costs
User accounts and authentication | $? | per what? |
Licensing | month/year | |
Legacy service continuation | month/year | |
DevOps support | month/year | |
Protocol change: HTTPS→MQTT | $? | per what? |
Licensing | month/year | |
Legacy service continuation | month/year | |
DevOps support | month/year | |
OTA migration | $? | per what? |
Licensing | month/year | |
Legacy service continuation | month/year | |
DevOps support | month/year | |
Platform data migration | $? | per what? |
Licensing | month/year | |
Legacy service continuation | month/year | |
DevOps support | month/year | |
Device provisioning migration | $? | per what? |
Licensing | month/year | |
Legacy service continuation | month/year | |
DevOps support | month/year | |
Fleet administration tooling migration | $? | per what? |
Any additional licensing | month/year | |
Legacy service continuation | month/year | |
Possible DevOps support | month/year | |
Integration migration | $? | per what? |
Any additional licensing | month/year | |
Legacy service continuation | month/year | |
TOTAL RECURRING | month/year |
Non-recurring costs
User accounts and authentication | $? | 🕑 weeks? |
Okta implementation | ||
App modification and testing | ||
E-commerce modification and testing | ||
End-to-end verification with fleet users | ||
Rollout management | ||
Decommission legacy account service | ||
Protocol change: HTTPS→MQTT | $? | 🕑 weeks? |
MQTT (or other) implementation | ||
Device firmware modification and testing (multiply this by the number of builds if needed) | ||
Proxy/routing/legacy | ||
End-to-end testing | ||
Rollout management | ||
Decommission legacy communication | ||
OTA migration | $? | 🕑 weeks? |
Platform OTA setup and implementation | ||
Device firmware modification and testing (multiply this by the number of builds) | ||
Proxy/routing/legacy support changes | ||
End-to-end testing | ||
Rollout management | ||
Decommission legacy OTA system | ||
Platform data migration | $? | 🕑 weeks? |
Schema rearchitecture | ||
Database(s) implementation | ||
Data migration and testing | ||
Device firmware modification and testing (multiply this by the number of builds) | ||
End-to-end testing | ||
Rollout management | ||
Legacy routing/maintenance | ||
Decommissioning | ||
Device provisioning migration | $? | 🕑 weeks? |
Redefine provisioning methodology | ||
Build manufacturing provisioning toolkit | ||
Device firmware modification and testing (multiply this by the number of builds) | ||
End-to-end testing | ||
Rollout management | ||
Legacy routing/maintenance | ||
Decommissioning | ||
Fleet administration tooling migration | $? | 🕑 weeks? |
Fleet administration strategy | ||
Pre-built tool selection and implementation | ||
Design/build or modify current fleet administration application built upon new controls and databases | ||
End-to-end testing | ||
Rollout management | ||
Decommissioning | ||
Integration migration | $? | 🕑 weeks? |
Redefine services architecture | ||
Implement missing services | ||
Service quality/availability/performance testing | ||
End-to-end testing | ||
Decommission legacy services | ||
General allowances | $? | 🕑 weeks? |
Incident management/customer service | ||
Possible new feature development | ||
Anything else? | ||
TOTAL NON-RECURRING |
Final total
Recurring costs | $XXX,XXX.XX |
x lifespan (yr/mo) | 5 years |
Lifespan total | $XXX,XXX.XX |
+ | |
Non-recurring costs | $XXX,XXX.XX |
-MDF | -$XX,XXX.XX |
= | |
TOTAL IOT PLATFORM MIGRATION COST | $X,XXX,XXX.XX |
IoT platform migrations, like any technology transition, take experience and detailed planning to get right.
This is a prototypical example—yours will be different. Next Mile has helped clients through tricky transitions large and small, saving millions along the way. If you’re facing a potential IoT platform switchover, reach out, and we’ll help guide you in softly.