| 04-bulk-operations-and-provisioning |
03 |
bulk-operations |
| csom |
| movecopyutil |
| file-transfer |
| sharepoint |
| conflict-policy |
|
| phase |
plan |
provides |
| 04-bulk-operations-and-provisioning |
01 |
IFileTransferService, TransferJob, ConflictPolicy, TransferMode, BulkOperationRunner, BulkOperationSummary |
|
|
| FileTransferService: CSOM copy/move via MoveCopyUtil.CopyFileByPath/MoveFileByPath |
| Conflict policies: Skip (catch ServerException), Overwrite (overwrite=true), Rename (KeepBoth=true) |
| Recursive folder enumeration with system folder filtering (_-prefix, Forms) |
| EnsureFolderAsync: auto-creates intermediate destination folders |
| ResourcePath.FromDecodedUrl for special character support in file URLs |
| Best-effort metadata preservation (ResetAuthorAndCreatedOnCopy=false) |
| 4 unit tests passing, 3 integration tests skipped |
|
| 04-04 |
| 04-05 |
| 04-06 |
| 04-07 |
| 04-08 |
| 04-09 |
| 04-10 |
|
| added |
patterns |
|
|
| MoveCopyUtil.CopyFileByPath/MoveFileByPath with ResourcePath.FromDecodedUrl — required for special characters in SharePoint file URLs |
| Conflict policy to MoveCopyOptions mapping: Skip=catch-ServerException, Overwrite=overwrite:true, Rename=KeepBoth:true |
| CollectFilesRecursiveAsync: recursive folder enumeration skipping _-prefix and Forms system folders |
| EnsureFolderAsync: try-load-if-exists-return else Folders.Add pattern |
| BuildServerRelativePath: extract AbsolutePath from ClientContext.Url then append library/folder |
|
|
| created |
modified |
| SharepointToolbox/Services/FileTransferService.cs |
| SharepointToolbox.Tests/Services/FileTransferServiceTests.cs |
|
|
|
| Design-time MSBuild compile used for build verification — dotnet build WinFX BAML step fails in bash shell due to relative obj\ path in WinFX.targets temp project; C# compilation verified via dotnet msbuild -t:Compile -p:DesignTimeBuild=true; DLL-based test run confirms 4 pass / 3 skip |
|
| MoveCopyUtil pair: CopyFileByPath uses sourceCtx, MoveFileByPath uses sourceCtx (not destCtx) — operation executes in source context, SharePoint handles cross-site transfer internally |
|
|
7min |
2026-04-03 |