File handlers process files dropped into the provisioning service watch folder. Each handler is triggered by a filename pattern and maps rows or content to provisioning operations.
The primary input format. The first row is the header row with column names; each subsequent row is processed independently as a single provisioning operation.
Treated identically to Excel. The first row must contain column names. The delimiter defaults to the system locale's list separator (typically , on en-US systems and ; on many European locales) and can be overridden in the service settings (SettingsCfg.Provisioning.CsvDelimiter). Values containing the delimiter must be enclosed in double quotes. Any handler that accepts Excel files also accepts CSV and TXT files with the same column structure.
Some handlers have a JSON variant for programmatic or server-side use. These accept a single JSON object instead of a table of rows. See individual handler docs for details.
The service matches the filename against registered handler patterns (case-insensitive). If no handler matches, the file is moved to the Error subfolder.
Rows are processed independently. For each row that fails, the error message is written to an Error column on that row.
After all rows are processed:
If any rows failed: the failed rows (with their Error column populated) are written to Error/{filename}Errors_{timestamp}.xlsx in the same directory. The error file is always .xlsx regardless of the original input format. The original file is also moved to Error/.
If all rows succeeded: the original file is moved to Completed/.
To get a blank template with the correct columns for any handler, ask the service to generate a sample file.
Filename matching is case-insensitive. A file named 2024-01-15 permissionset matters.xlsx matches the Permission Set handler. You can add timestamps, descriptions, or other text to the filename — only the handler keyword matters.
Some handlers exclude patterns: for example, the Site Collection handler excludes files containing deletesitecollection, and the Document Update Content Type handler excludes files containing DocumentUpdateContentTypeEmail. See individual handler docs for exclusions.