Automating OneNote Notebook Migration to SharePoint with Power Automate and PowerShell

Why Automate OneNote Notebook to SharePoint Migration?

  • Scale: Migrate hundreds or thousands of OneNote notebooks to SharePoint in one workflow.
  • Consistency: Preserve structure — notebooks, sections, pages — in a predictable SharePoint document library layout.
  • Eliminate manual effort: No more downloading/uploading files manually.
  • Optimized collaboration: SharePoint-hosted notebooks open in full OneNote experience.

Method 1: Power Automate with OneNote + SharePoint + OneDrive

Flow Overview

  1. Trigger
    • Use a scheduled flow or manual button.
    • Initialize notebook metadata as variables.
  2. Get Recent NotebooksAction: Get recent notebooks Output: Notebook ID, Display Name
  3. Loop Through Notebooks
    • Action: Apply to Each (Notebook)
      • Get Sections in Notebook
      • Apply to Each (Section)
        • Get Pages in Section
        • Apply to Each (Page)
          • Get Page Content
          • Create file in OneDrive (HTML format)
          • Convert file to PDF (OneDrive action)
          • Create file in SharePoint Library (PDF)
          • Delete temp file from OneDrive

Method 2: PowerShell & PnP for Native .one Notebook Migration

PowerShell Script Template

# Import user data (username, OneNote path, SharePoint path)
$users = Import-Csv -Path "C:\OneNoteMigration\UserNotebookMap.csv"

# Loop through each user
foreach ($user in $users) {
    $sourceUrl = "https://domain-my.sharepoint.com/personal/$($user.UserId)_domain_com/Documents/OneNote/$($user.FileName)"
    $targetUrl = "/sites/TeamSite/Shared Documents/Notebooks/$($user.UserId)/$($user.FileName)"

    # Connect to PnP site
    Connect-PnPOnline -Url "https://domain.sharepoint.com/sites/TeamSite" -Interactive

    # Copy the .one notebook
    Copy-PnPFile -SourceUrl $sourceUrl -TargetUrl $targetUrl -OverwriteIfAlreadyExists
}

CSV Template for Mapping

UserId,FileName
john.doe,ProjectNotebook.one
jane.smith,DesignNotes.one

Prerequisites

  • PnP PowerShell Module installed
  • SharePoint admin permissions
  • Ensure OneNote folder is accessible

Post-Migration Steps

  • Validation: Open notebooks in browser and desktop to verify sync.
  • Permission Setup: Use PnP to apply library-specific permissions.
  • Cleanup: Archive old copies, notify users, disable outdated links.

FAQs

Q: Can Power Automate preserve full .one notebook files?
A: No. It can only read pages, not download/upload full notebooks. Use PowerShell or SPMT for native file migration.

Q: How to migrate OneNote from Teams Channels?
A: Teams notebooks are stored in the connected SharePoint site. Use PnP to locate the notebook folder and copy it to the target location.

Q: Do internal links in pages break post migration?
A: Yes, if the base path changes. Consider updating URLs via scripting or redirecting users.

Final Thoughts

With the right tools – Power Automate for granular page migration and PnP PowerShell for native file handling – you can automate OneNote content migration into SharePoint with minimal disruption. Adopt a hybrid strategy for large enterprise environments and use PowerShell to control the structure and permission integrity of your content.

Leave a Comment