Back to skills
SKILL.md
Palantir Migration Deep Dive
ASecurity'Execute major Palantir Foundry migration strategies including data migration,
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added November 11, 2026
Works with
Security analysis
100/100npx -y skills add pauldx/claudifying --skill palantir-migration-deep-dive --agent claude-codeAre you the author of Palantir Migration Deep Dive?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/pauldx-palantir-migration-deep-dive)---
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: 2.0.0
license: MIT
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
```markdown
## 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
```python
import foundry, pandas as pd
client = get_foundry_client()
# Read source data (example: PostgreSQL)
df = pd.read_sql("SELECT * FROM orders WHERE year >= 2024", source_conn)
# Upload to Foundry dataset
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)
```python
from datetime import datetime, timedelta
def incremental_sync(client, source_conn, dataset_rid, last_sync):
"""Sync only new/changed rows since last sync."""
query = f"""
SELECT * FROM orders
WHERE updated_at > '{last_sync.isoformat()}'
ORDER BY updated_at
"""
df = pd.read_sql(query, source_conn)
if df.empty:
print("No new rows to sync")
return last_sync
client.datasets.Dataset.upload(
dataset_rid=dataset_rid,
branch_id="master",
file_path=f"sync_{datetime.utcnow().strftime('%Y%m%d_%H%M%S')}.parquet",
data=df.to_parquet(),
)
print(f"Synced {len(df)} rows")
return df["updated_at"].max()
```
### Step 4: Strangler Fig Pattern for API Migration
```python
class DualWriteClient:
"""Write to both legacy and Foundry during migration period."""
def __init__(self, legacy_client, foundry_client):
self.legacy = legacy_client
self.foundry = foundry_client
self.foundry_enabled = os.environ.get("FOUNDRY_WRITES_ENABLED", "false") == "true"
def create_order(self, order_data):
# Always write to legacy (source of truth during migration)
result = self.legacy.create_order(order_data)
# Shadow write to Foundry (non-blocking)
if self.foundry_enabled:
try:
self.foundry.ontologies.Action.apply(
ontology="my-company",
action_type="createOrder",
parameters=order_data,
)
except Exception as e:
print(f"Foundry shadow write failed (non-fatal): {e}")
return result
```
### Step 5: Validation and Cutover
```python
def validate_migration(legacy_conn, foundry_client, ontology, object_type):
"""Compare row counts and checksums between source and Foundry."""
# Legacy count
legacy_count = pd.read_sql("SELECT COUNT(*) as c FROM orders", legacy_conn).iloc[0]["c"]
# Foundry count
foundry_result = foundry_client.ontologies.OntologyObject.aggregate(
ontology=ontology, object_type=object_type,
aggregation=[{"type": "count", "name": "total"}],
)
foundry_count = foundry_result.data[0].metrics["total"]
match = legacy_count == foundry_count
print(f"Legacy: {legacy_count}, Foundry: {foundry_count}, Match: {match}")
return match
```
## Output
- Migration assessment checklist completed
- Bulk data import to Foundry datasets
- Incremental sync for ongoing changes
- Dual-write pattern for safe cutover
- Validation comparing source and Foundry counts
## Error Handling
| Migration Risk | Detection | Mitigation |
|---------------|-----------|------------|
| Data loss | Row count mismatch | Run validation before cutover |
| Schema mismatch | Transform errors | Map schemas explicitly |
| Dual-write divergence | Checksum differences | Reconciliation job |
| Rollback needed | Production issues | Keep legacy running during parallel period |
## Resources
- [Foundry Data Integration](https://www.palantir.com/docs/foundry/data-integration/rest-apis/)
- [Foundry Connectors](https://www.palantir.com/docs/foundry/available-connectors/rest-apis)
## Next Steps
For SDK version upgrades, see `palantir-upgrade-migration`.
Attribution
Related skills
View all in databases →Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.