Delimited file uploads at scale: PowerShell automation for SailPoint ISC

Slide Deck

SailPoint-DeveloperDaysPresentation-PerryChapman.pptx (9.0 MB)

Description

Managing identity data from flat file sources sounds simple until you’re trying to do it at scale. Juggling dozens of apps, inconsistent file formats, varying schemas, and the expectation that everything lands in Sailpoint on time, every time. In this session, we’ll walk through a real-world, developer-built automation framework that transforms a largely manual file upload process into a fully automated, config-driven pipeline built entirely in Powershell.

We’ll cover how to use Sailpoint’s File Upload Utility as a headless engine, wrap it in a multi-app orchestration layer, and make it production-ready with per-app configuration, dynamic data transformation (column merging, boolean entitlement mapping, role assignment, disable logic), and intuitive archival and log management. We’ll also walk through a GUI management console for operators who need visibility without touching code, and a scheduler-ready headless mode for isolated environments.

Whether you’re supporting one tenant or many, this session delivers a practical, extensible blueprint for developer-driven access automation. This involves only Powershell, JSON, and a clean architecture you can stand up today.

Additional Resources

Source Code

The full project is open source and available on GitHub:

What’s included in the repo

  • FileUploadScript.ps1 - Main headless execution script; runs the full pipeline per app and is scheduler-ready

  • SailpointUtilityGUI.ps1 - GUI management console with tabbed interface for setup, config editing, log viewing, and manual uploads

  • CheckPrerequisites.ps1 - Validates your environment (PowerShell 7+, Java 11+, ImportExcel, JAR path) before first run

  • config.json.example - Annotated template for per-app configuration; copy to config.json and customize

  • settings.json.example - Annotated template for global settings; copy to settings.json and fill in your credentials

  • QUICK_REFERENCE.md - Condensed cheat sheet for common operations

  • README.md - Full documentation covering setup, configuration parameters, scheduling, and troubleshooting

Note: settings.json, config.json, and all CSV/Excel data files are excluded from the repo via .gitignore to protect credentials and tenant-specific data. Use the provided .example files as starting points.

Prerequisites

Getting Started


# 1. Clone the repo

git clone https://github.com/perrychapman/SailpointFileUploadUtility.git

cd SailpointFileUploadUtility

# 2. Verify prerequisites

.\CheckPrerequisites.ps1

# 3. Copy and configure the example files

Copy-Item settings.json.example settings.json

# Edit settings.json with your tenant name, client credentials, and directory paths

# 4. Launch the GUI (recommended for initial setup)

.\SailpointUtilityGUI.ps1

# 5. Or run headless directly (for scheduled/automated use)

.\FileUploadScript.ps1

Contributing

Contributions are welcome! If you have improvements, bug fixes, or new features to share, please open a pull request on GitHub:

1 Like