Skip to content
Browse Power Automate tutorials

Copying a list’s structure and copying its content are separate tasks. SharePoint’s From existing list option creates the columns, views and formatting. A Power Automate flow then creates destination items and transfers their attachment files.

This tutorial covers a one-time, same-site copy of current values in common fields and list-item attachments. It creates new items, so it does not preserve the original item IDs, item-version history, Created/Modified audit values, comments, individual sharing permissions or every advanced column type. It is not a full-fidelity backup or a continuous synchronization flow. Keep the source until you have reconciled the copy.

Before you begin

Use a generic SharePoint Online source list and a test destination on the same site. The SharePoint connector does not support every custom list template. You need permission to read the source items and attachments, create the destination list, and add items and attachments there. The flow connection must have the corresponding access; being able to open a site does not prove it can perform each operation.

The SharePoint connector is Standard. Eligible Microsoft 365 Power Automate standard-connector rights can support this design. For an instant flow, the invoking user’s licensing context applies; confirm those rights for the person running it. The actions below do not introduce a Premium connector. SharePoint connector and Power Automate licensing

Prepare a small test source with populated values in the fields you need to copy. This procedure uses single-choice and single-person columns, ordinary multiline text, a date/time, number, hyperlink URL and currency. Multi-select choices, multi-person arrays, rich-text or append-history fidelity, lookup relationships, managed metadata, Image, Location and Ratings are outside this mapping. They need separate type-specific handling, which this tutorial doesn’t cover.

The connector supports list-item attachments up to 90 MB. Confirm file sizes before starting. Copy during a period when source items and attachments will remain unchanged, and inspect destination rules or item-created flows so the copy does not send unexpected notifications. Connector limits and supported list types

Two source test items with title, choice, date and multiline text values

1. Create the empty destination list

  1. Open the destination SharePoint site and go to Site contents > New > List. Select From existing list.
  2. Choose the site containing the source list, select that list and select Next.
  3. Name the new list Backup List. Add a description if useful. Clear Show list in site navigation if you want the same navigation choice illustrated here; this affects navigation, not access.
  4. Select Create and open the new list. Confirm that it has the expected columns and is empty.

Selecting the source list for a new list based on an existing list

Backup List creation with Show list in site navigation cleared

From existing list copies structure, not the original items or attachment content. It also has limits: a source with more than 80 list views cannot be used this way, and only the first two automated rules are included. Confirm the new list’s settings and rules instead of assuming every customization was cloned. If the destination cannot be created with this option, establish a matching supported schema before building the flow. Create a list from an existing list

Confirm that the destination supports attachments: open its New item form and look for Add attachments, then close the form without saving. If the command is missing, stop and have the list owner configure an attachment-capable destination before building the attachment writes. A custom form may require the owner to inspect the underlying list settings. Add list items and attachments

2. Create a manual flow and retrieve source items

  1. In Power Automate, select Create > Instant cloud flow.
  2. Name it Create Backup List Item, select Manually trigger a flow, then Create. If you start with a blank designer, add that trigger explicitly.
  3. Add SharePoint — Get items. Select the source Site Address and source List Name, called Primary List in the example. Use Get items for list rows, rather than Get files or the single-row Get item action.

Get items configured with the source site and Primary List

Set a retrieval capacity before copying

Configure the item count explicitly. For this small-list procedure, expose Top Count under Advanced parameters and set it to 5000. On Get items’ Settings tab, enable Pagination and set Threshold to 5000. Keep the source within that capacity and compare actual retrieved rows with the expected source count.

Microsoft’s Get items guidance describes a default limit of 100. Microsoft 365’s Low performance profile permits up to 5,000 paginated items and 5,000 inputs to Apply to each. These settings do not make an arbitrarily large list fit into one reliable copy run. If the expected count exceeds capacity, or you hit a list threshold, stop and design partitioned retrieval and reconciliation before copying. Get items guidance and flow limits

For an optional payload reduction, use Limit Columns by View with a view that contains every field you map and the source ID. This controls returned columns; it does not filter which items are copied or increase the row limit. Leave it unrestricted for the initial small test if you have not prepared that view.

3. Create one destination item for each source row

Add Control — Apply to each and choose the value array from Get items. The new designer may label the loop For each. If choosing a Get items token automatically creates this loop, use that loop and verify its input; do not nest another item loop accidentally. Keep the default sequential execution for the initial copy.

Inside the outer item loop:

  1. Add SharePoint — Create item.
  2. Select the destination Site Address and Backup List.
  3. Expand the relevant Advanced parameters. In each field, open Insert dynamic content with the lightning-bolt button or /, then choose its value from Get items, not from Create item.
  4. For Choice and Person fields that initially offer a dropdown, choose Enter custom value when needed so you can insert the dynamic token.
  5. Fill the mapped fields below. Select the actual tokens; typing a token’s label as plain text does not insert its value.
Create item fieldToken from the current Get items row
TitleTitle
Choice Column ValueChoice Column Value
Date and TimeDate and Time
Multiple LinesMultiple Lines
Person ClaimsPerson Claims
NumberNumber
HyperlinkHyperlink
CurrencyCurrency

Create item fields populated with corresponding dynamic tokens

Use the Person Claims value, rather than a display name. This same-site example assumes that the person resolves in the destination. A different site or tenant can require identity and lookup remapping; do not extend the procedure by changing only the site address without validating those dependencies.

For the hyperlink, this mapping transfers the URL value; it does not promise the original friendly description. Preserve original date/time values in the action rather than converting them to display text. The destination’s regional settings can change how they appear.

Map any other required destination fields deliberately. Do not populate an extra field with a guessed default just to make the action save. Leave optional parameters that are outside the intended copy unselected, and do not pass a source Content Type ID into a different destination schema without a verified mapping. This tutorial uses the destination’s matching default item type.

4. List the source item’s attachments

After Create item, still inside the outer item loop, add SharePoint — Get attachments:

ParameterValue
Site AddressSource site
List NamePrimary List
IdID from Get items, for the current source row

Get attachments configured for Primary List with the source item ID

Get attachments returns attachment metadata. It does not return the actual file bytes. The next action retrieves those bytes. Keep the source item ID separate from the ID that Create item assigned to the destination row. Attachment actions

5. Read and write each attachment

Add another Apply to each inside the outer loop, after Get attachments. Use Body from Get attachments, its array of attachment records. Selecting an attachment token may create this inner loop automatically; verify that it uses this array, not the Get items array again.

Inside the inner attachment loop, add SharePoint — Get attachment content:

ParameterValue
Site AddressSource site
List NamePrimary List
IdID from Get items — the current source item
File IdentifierId from Get attachments — the current attachment

Get attachment content with source item ID and the current attachment Id

The connector describes the attachment’s Id token as its File identifier. Do not substitute the item’s numeric ID, the attachment’s DisplayName or its AbsoluteUri for this field.

Next, in the same inner loop, add SharePoint — Add attachment:

ParameterValue
Site AddressDestination site
List NameBackup List
IdID from Create item — the new destination item
File NameDisplayName from Get attachments
File ContentAttachment Content from Get attachment content

Add attachment using the destination item ID, DisplayName and Attachment Content

Keep Add attachment’s Run after set to a successful Get attachment content. Do not continue after a failed or skipped content retrieval with an empty or substituted payload. File Content is the binary output, not a URL or the filename. Get attachment content and Add attachment parameters

Illustrative diagram distinguishing source item ID, attachment Id and destination item ID

Illustrative diagram: read from the source row and write to the new row returned by Create item.

The completed structure is:

  1. Manual trigger.
  2. Get items.
  3. Outer loop over source rows: Create item, then Get attachments.
  4. Inner loop over that row’s attachments: Get attachment content, then Add attachment.

Create item belongs outside the attachment loop, so a row with several attachments is created once. An item with no attachments still has its destination row; the empty attachment array gives the inner loop nothing to process.

Completed flow showing Create item outside the nested attachment loop

6. Save, inspect warnings and test once

Every run creates new destination rows. There is no duplicate detection, source-to-destination checkpoint or update-existing-item path. A failed run can leave partially copied items. Before retrying or resubmitting, inspect the destination and decide how to reconcile it; do not rerun blindly against completed copies. Use a disposable test destination for repeated development tests.

  1. Select Save. For a solution-aware flow in the new designer, follow Save draft with Publish so the changes are runnable.
  2. Open Flow checker and resolve errors. Inspect warnings before running.
  3. A warning about no limiting folder, Filter Query or Top Count concerns the rows retrieved. Selecting fewer columns can reduce payload, but does not resolve that row-selection issue. Use the explicit capacity from Step 2 and ensure it covers the intended source.
  4. Select Test > Manually > Test, then Run flow, and Done as offered.
  5. Open run history. Inspect Get items’ returned count, every outer iteration, Create item’s new ID and each attachment read/write result. Confirm the overall run succeeded; a completed launch dialog alone does not establish success.

Flow checker warning about Get items without a limiting folder, filter or top parameter

The illustrated warning comes from an unrestricted configuration. The screenshot does not replace the explicit retrieval settings above. Designer save, test and action settings

7. Reconcile destination rows and files

  1. Refresh Backup List. Compare the destination count with the intended source items. Check rows by a reliable business key and their field values; matching counts alone cannot detect an omitted row and a duplicate row.
  2. Open copied items and compare choice, date/time, multiline text, person, numeric, currency and hyperlink URL values. Check raw date values when regional display differs.
  3. Compare each item’s attachment names and number of attachments. Open the copied files and compare them with the source; for critical transfers, verify file sizes or hashes as part of your reconciliation.
  4. Include a test row with no attachment and a row with several different attachments. Confirm files belong to the correct destination item.

Copied destination item with mapped values and an attachment link

A different destination item’s daily-tasks attachment link

The flow only implements the fields and actions you configured. It does not copy item comments, version history, historical authorship, unique permissions, retention labels, an existing Power Automate flow or a customized Power Apps form. It does not rewrite links that still point to the source site. Review destination access, rules, versioning and content approval settings for their intended behavior; these new writes may trigger other automations or create pending items when approval is enabled.

Keep the source intact until the owner accepts the reconciliation and any preservation requirements. Retiring or deleting it is a separate action; this flow contains no deletion step.

Troubleshooting

SymptomInspect and correct
Only the first part of the source appearsCheck Get items’ actual count, Top Count, pagination and flow capacity; stop if the source exceeds the supported run design
A choice or person field failsConfirm single-value types, actual choice values and the current row’s Claims token; resolve the person in the destination
An attachment lookup returns not foundUse the source site/list and source row ID for both reads, with the attachment Id token for File Identifier
Attachments land on the wrong rowChange Add attachment’s Id to the ID returned by Create item for this outer iteration
A row is created once per attachmentMove Create item outside the inner attachment loop and inspect loop inputs
Attachment writes failConfirm destination attachments are enabled, permission to add, supported size and binary Attachment Content mapping; inspect the actual action error
New copies appear after every testCreate item always inserts; reconcile existing partial/completed copies before another run
An advanced column is emptyIt is outside this field map; use a separately validated type-specific migration approach before treating the copy as complete

Download the action and token mapping guide to keep the three identifiers and their dynamic-content sources clear while building.

Companion video

Video: Duplicate a SharePoint List in Minutes | Including ATTACHMENTS!!

If the player is blocked on your network, open the video on YouTube.

Need help applying this to your own setup? Read about consulting.