Home Services Work About Blog Contact Let's Talk
BlogSharePoint Online
SharePoint Online

SharePoint Add-ins and 2013 Workflows Retired: Migration Guide to SPFx and Power Automate

The Retirement Announcement

On April 2, 2026, Microsoft retired SharePoint Add-ins and SharePoint 2013 Workflows in SharePoint Online. This was not a gradual deprecation — it was a hard retirement date that Microsoft had communicated in the Microsoft 365 Message Center since 2023 and repeated across multiple roadmap announcements. If you have not yet migrated, your affected customisations stopped functioning on that date.

The retirement covers a broad surface area of the SharePoint extensibility model that organisations built on throughout the 2013–2018 era. Understanding exactly what was retired — and what was not — is the first step in scoping your migration project.

Already Retired — Action Required Now

If you are reading this after April 2, 2026 and your tenant still has Add-ins or 2013 Workflows, those features are non-functional. Microsoft will not restore them. Begin your migration immediately — the longer Add-in infrastructure remains in your tenant, the higher the risk of cascading permission and security issues from orphaned app registrations.

What Actually Stopped Working

The retirement covers four distinct technology areas, each with different migration paths:

What was not retired: SharePoint 2010 workflow templates (already retired earlier in 2023), classic Web Parts (retirement scheduled separately), SharePoint Framework (SPFx) — the modern replacement — and Power Automate flows.

Check Your App Catalog First

Before scoping migration effort, audit your tenant's app catalog. Add-ins deployed from the app catalog may not be visually obvious on sites — they can be installed site-by-site without a web part visible on any page. Run the PowerShell discovery script in the next section to find every Add-in instance across your tenant before assuming a site is clean.

Migrating Add-ins to SPFx Equivalents

The SharePoint Framework (SPFx) is the modern, supported replacement for both Provider-Hosted and SharePoint-Hosted Add-ins. SPFx solutions run in the context of the current user (no separate add-in permission grants), use the Microsoft Graph and SharePoint REST APIs via the current user's token, and are deployed via the tenant app catalog — the same infrastructure Add-ins used, but with a fully supported forward path.

Pattern Mapping: Add-in to SPFx

SPFx web part — Replace add-in CSOM with SPHttpClient
// Old: Add-in CSOM (no longer works)
// var ctx = new SP.ClientContext(appWebUrl);
// var list = ctx.get_web().get_lists().getByTitle('Requests');

// New: SPFx SPHttpClient
import { SPHttpClient, SPHttpClientResponse } from "@microsoft/sp-http";

const response: SPHttpClientResponse = await this.context.spHttpClient.get(
  `${this.context.pageContext.web.absoluteUrl}/_api/web/lists/getbytitle('Requests')/items?$top=100`,
  SPHttpClient.configurations.v1
);
const data = await response.json();
console.log(data.value); // Array of list items

Migrating 2013 Workflows to Power Automate

SharePoint Designer 2013 workflows mapped to a fixed set of actions (Send Email, Set Field Value, Create List Item, Start Approval Process, and about 40 others). Every one of these has a direct Power Automate equivalent, usually a built-in connector action.

Action Mapping: 2013 Workflow to Power Automate Connectors

Power Automate — Equivalent of a 2013 approval workflow trigger
// 2013 Workflow trigger: "When an item is created or modified in a list"
// Power Automate equivalent (flow definition excerpt):

{
  "triggers": {
    "When_an_item_is_created": {
      "type": "OpenApiConnection",
      "inputs": {
        "host": { "connectionName": "shared_sharepointonline" },
        "operationId": "GetOnNewItems",
        "parameters": {
          "dataset": "https://contoso.sharepoint.com/sites/Procurement",
          "table":   "Purchase Requests"
        }
      }
    }
  }
}

Migrating Event Receivers

SharePoint Event Receivers — server-side code that fired on list events (ItemAdded, ItemUpdating, ItemDeleted) — were a common pattern for data validation, field defaulting, and cascading updates. With the retirement, any event receivers bundled inside Add-ins are also non-functional.

The two modern replacements are:

Azure Function — SharePoint webhook receiver replacing event receiver
import { HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";
import { ClientSecretCredential } from "@azure/identity";
import { Client } from "@microsoft/microsoft-graph-client";

export async function spWebhookReceiver(
  req: HttpRequest, context: InvocationContext
): Promise<HttpResponseInit> {
  // SharePoint validates webhook by sending a validationToken query param
  const validationToken = req.query.get("validationtoken");
  if (validationToken) {
    return { status: 200, body: validationToken };
  }

  // Process the change notification payload
  const body = await req.json() as { value: Array<{ siteUrl: string; resource: string }> };
  for (const notification of body.value) {
    context.log(`Change on ${notification.resource} at ${notification.siteUrl}`);
    // Query the changed items and apply business logic via Graph
    await processChange(notification.siteUrl, notification.resource);
  }
  return { status: 202 };
}

Migrating Content Editor Web Part Content

The Content Editor Web Part (CEWP) was used extensively to embed arbitrary HTML, CSS, and JavaScript on classic SharePoint pages. While the CEWP itself was not retired in this wave, the classic pages it runs on are increasingly unsupported, and any CEWP content that relied on Add-in infrastructure (SP.RequestExecutor cross-domain calls, add-in web URLs) now fails.

The migration path depends on what the CEWP content was doing:

Prioritising Migration by Business Impact

Most tenants have more Add-ins and 2013 workflows than they can migrate simultaneously. Use this prioritisation framework to sequence your migration sprints:

PowerShell — Identify Add-ins installed across tenant sites
# Connect to SharePoint Admin Center
Connect-PnPOnline -Url "https://contoso-admin.sharepoint.com" -Interactive

# Get all site collections
$sites = Get-PnPTenantSite -IncludeOneDriveSites:$false

$addInReport = foreach ($site in $sites) {
  try {
    Connect-PnPOnline -Url $site.Url -Interactive
    $addIns = Get-PnPApp -Scope Site 2>$null
    foreach ($addIn in $addIns) {
      [PSCustomObject]@{
        SiteUrl      = $site.Url
        AddInTitle   = $addIn.Title
        AddInId      = $addIn.Id
        InstalledVer = $addIn.InstalledVersion
        Status       = $addIn.Status
      }
    }
  } catch { # Skip sites with access errors }
}

$addInReport | Export-Csv -Path ".\tenant-addin-inventory.csv" -NoTypeInformation
Write-Host "Found $($addInReport.Count) Add-in installations across $($sites.Count) sites"

Once you have the inventory, score each Add-in and workflow using three dimensions:

Migrate in order of: high criticality + high user volume first, then high criticality + low user volume, then low criticality in batch. Low complexity migrations can be done in parallel as filler work between complex migrations.

Timeline and Official Migration Resources

Microsoft has published official migration guidance and tooling across several channels. Use these as your primary reference alongside this guide:

App Catalog Cleanup After Migration

After migrating each Add-in, retract and delete it from the site collection app catalog and the tenant app catalog. Orphaned Add-in registrations in Azure AD (created by the ACS trust) should also be cleaned up via the Azure portal or PowerShell to avoid cluttering your enterprise application list and to eliminate stale permission grants. Run Get-PnPAzureADApp filtered by DisplayName containing "SharePoint Add-in" to identify candidates.

Key Takeaways

Provider-Hosted Add-ins, SharePoint-Hosted Add-ins, 2013 Workflows, and BCS External Lists were all hard-retired on April 2, 2026 — there is no fallback or grace period.

Run the PowerShell Add-in inventory script or Microsoft 365 Assessment Tool first — most tenants have far more Add-in installations than IT teams are aware of.

SharePoint-Hosted Add-ins map directly to SPFx web parts; Provider-Hosted Add-ins replace ACS auth with Azure AD app registrations and migrate UI to SPFx or modern web apps.

Every 2013 workflow action has a direct Power Automate connector equivalent — the Power Automate Migration Assistant can generate a starter flow structure from exported .xoml files.

Event receivers migrate to SharePoint webhooks backed by Azure Functions (synchronous validation) or Power Automate triggered flows (asynchronous post-event processing).

After migrating, clean up orphaned app registrations in Azure AD and retract Add-ins from all app catalogs to eliminate stale permission grants.

AT

Akshara Technologies

SharePoint Online & M365 Migration Specialists

We have delivered SharePoint Add-in to SPFx migrations and 2013 workflow to Power Automate migrations for enterprise tenants across India, USA, UAE, and Australia.

Need help migrating SharePoint Add-ins?

Our SharePoint Online team provides end-to-end migration consulting — Add-in inventory, SPFx rebuilds, 2013 workflow migration to Power Automate, and app catalog cleanup — for enterprises on a fixed timeline.

Contact Akshara for Migration Consulting View SPFx Services

Related Articles