| name | palantir-migration-deep-dive |
| description | Execute major Palantir Foundry migration strategies including data migration,
API version upgrades, and platform transitions.
Use when migrating data into Foundry, upgrading between API versions,
or re-platforming existing integrations.
Trigger with phrases like "migrate to palantir", "foundry migration",
"palantir data migration", "foundry replatform".
|
| allowed-tools | Read, Write, Edit, Bash(pip:*), Bash(node:*) |
| version | 1.5.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","palantir","foundry","migration","data-migration"] |
| compatibility | Designed for Claude Code, also compatible with Codex and OpenClaw |
Palantir Migration Deep Dive
Overview
Comprehensive guide for migrating data into Foundry, migrating from legacy systems to Foundry-backed architectures, and upgrading between Foundry API versions using the strangler fig pattern.
Prerequisites
- Source system access and schema documentation
- Foundry enrollment with write access
- Understanding of Foundry data pipeline architecture (
palantir-reference-architecture)
Instructions
Step 1: Migration Assessment
## Migration Checklist
- [ ] Source system inventory (tables, volumes, refresh rates)
- [ ] Data classification (PII, confidential, public)
- [ ] Schema mapping: source columns → Foundry dataset columns
- [ ] Volume estimate: rows, GB, growth rate
- [ ] Dependencies: downstream consumers of source data
- [ ] Timeline: parallel run period, cutover date
Step 2: Data Migration — Bulk Import
import foundry, pandas as pd
client = get_foundry_client()
df = pd.read_sql("SELECT * FROM orders WHERE year >= 2024", source_conn)
client.datasets.Dataset.upload(
dataset_rid="ri.foundry.main.dataset.xxxxx",
branch_id="master",
file_path="orders.parquet",
data=df.to_parquet(),
content_type="application/x-parquet",
)
print(f"Uploaded {len(df)} rows to Foundry")
Step 3: Incremental Sync (Ongoing)
from datetime import datetime, timedelta
def incremental_sync(client, source_conn, dataset_rid, last_sync):
"""Sync only new/changed rows since last sync."""
query =
df = pd.read_sql(query, source_conn)
df.empty:
()
last_sync
client.datasets.Dataset.upload(
dataset_rid=dataset_rid,
branch_id=,
file_path=,
data=df.to_parquet(),
)
()
df[].()