A cloud migration can be the biggest engineering project a company runs in a year, with real risk of failure. It is still, in almost every case, not R&D. The R&D Tax Incentive pays for resolving technical unknowns, and a migration mostly applies what cloud providers, tool vendors and thousands of earlier migrations have already documented.
Why migration risk is not technical uncertainty
The ATO and AusIndustry's joint alert on software claims, TA 2017/5, describes the pattern closely: a project that modifies, customises or upgrades existing software, registered as a whole, with project, commercial or economic risk mistaken for technical risk. A migration's risks are almost all of that kind:
- Will it finish on time and within budget?
- Will the team learn the new services quickly enough?
- Will cutover cause an outage?
- Will running costs come in as forecast?
None of these is an outcome that a competent cloud engineer, with access to published knowledge, could not determine. AusIndustry's software guide likewise treats migrating data with known tools and established approaches as routine, and Rand treats re-platforming and version upgrades the same way.
Carving out a genuine question
Occasionally a migration exposes a narrow technical question that published knowledge does not answer: a computation whose behaviour depended on hardware the new platform lacks, a timing guarantee nobody has measured under the new runtime, a scaling result that assumed a different network. Moreton Resources [2019] FCAFC 120 accepted that applying existing technology in a new context can be a core activity where the outcome could not be known. That principle is narrow and needs evidence.
If you have such a question, treat it as a separate activity from the start:
- Open a distinct ticket or plan for it, dated when it arose.
- Record what was searched and why it did not settle the question.
- State a hypothesis with a threshold.
- Keep its hours and costs apart from the migration program.
The activity's size should follow the question, not an expected proportion of the migration. Register the work that resolved the unknown, at whatever scale the tickets and time records show, and leave the rest of the move as ordinary work. A narrow, well-evidenced activity is easier to defend than a registration that describes the whole move as experimental.
Coordination questions of this kind are covered more fully on the distributed systems page. Linking each pull request to its ticket in a tracker such as Jira makes the separation visible later.
Edge cases peculiar to migrations
- Database engine changes. Conversion tools and compatibility guides make most of this routine.
- Mainframe and legacy code conversion. Automated translation followed by fixing what breaks is ordinary work.
- Parallel running. Comparing old and new outputs to confirm they match is verification with a known expected result.
- Internal systems. Moving your own ERP, payroll or finance system to the cloud is routine and also caught by the internal administration exclusion; see internal administration software.
- The cloud bill afterwards. Only compute used for registered experiments counts; see cloud compute costs.