From datasphere
Manages transport packages in SAP Datasphere to move objects between Dev, QA, and Prod tenants. Handles migrations, dependencies, versions, and SAP Content Network imports.
npx claudepluginhub mariodefelipe/sap-datasphere-plugin-for-claude-coworkThis skill uses the workspace's default tool permissions.
The Transport Manager skill guides you through the complete lifecycle of creating, exporting, and importing transport packages in SAP Datasphere. From packaging objects in your development environment to deploying them into production tenants, this skill covers the essential workflows for managing object movement across your tenant landscape.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
The Transport Manager skill guides you through the complete lifecycle of creating, exporting, and importing transport packages in SAP Datasphere. From packaging objects in your development environment to deploying them into production tenants, this skill covers the essential workflows for managing object movement across your tenant landscape.
Trigger this skill when you need to:
Transport is the mechanism for moving data models (tables, views, data flows, etc.) between isolated Datasphere tenants representing different environments: Development (Dev), Quality Assurance (QA), and Production (Prod).
Typical Setup:
┌─────────────────────────────────────────────────────────┐
│ SAP DATASPHERE MULTI-TENANT LANDSCAPE │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ DEVELOPMENT │ │ QUALITY ASSURE │ │
│ │ TENANT │ │ TENANT │ │
│ │ │ │ │ │
│ │ • Rapid changes │ │ • Validation │ │
│ │ • Experiments │ │ • Testing │ │
│ │ • Draft objects │ │ • UAT │ │
│ │ │ │ • Stable subset │ │
│ └────────┬─────────┘ └────────┬─────────┘ │
│ │ TRANSPORT PACKAGE │ TRANSPORT PACKAGE │
│ │ Export │ Export │
│ v v │
│ ┌──────────────────────────────────────┐ │
│ │ PRODUCTION TENANT │ │
│ │ │ │
│ │ • Live data models │ │
│ │ • Approved objects only │ │
│ │ • Change-controlled │ │
│ │ • High availability & backup │ │
│ └──────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
Package Composition:
File Structure:
transport_package_20240115.zip
├── metadata.json # Package metadata
├── objects.json # Object definitions
├── dependencies.json # Dependency graph
├── changelog.json # Version/change history
└── content/
├── table_001.csn # Table definitions
├── view_001.csn # View definitions
├── dataflow_001.csn # Data flow definitions
└── ...
| Benefit | Impact | Use Case |
|---|---|---|
| Controlled Deployment | Change tracked, auditable | Regulatory compliance, governance |
| Reproducibility | Same object definitions across tenants | Consistency across environments |
| Rollback Capability | Revert to prior package version | Error recovery, quick fixes |
| Content Reuse | Share packages across teams/companies | Accelerate implementation |
| Version Control | Track object evolution over time | Historical analysis, compliance |
Before Creating Package, Determine:
Scope: Which objects to include
Dependencies: What other objects are required
Versioning: What version are you releasing?
Example Planning Session:
PACKAGE: Customer Analytics Suite v1.0
CONTENTS:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Table: customer_master (source)
Table: customer_transactions (source)
View: vw_customer_active
Dependencies: customer_master
View: vw_customer_lifetime_value
Dependencies: customer_transactions, customer_master
View: vw_customer_segmentation
Dependencies: vw_customer_lifetime_value, customer_master
Data Flow: df_customer_enrichment
Dependencies: vw_customer_active (reads), customer_master (writes)
Data Flow: df_segment_scoring
Dependencies: vw_customer_segmentation (reads), customer_master (writes)
CONNECTION: Connection_ERP (for replication)
TOTAL OBJECTS: 8
DEPENDENCIES: 6 relationships
ESTIMATED TRANSPORT SIZE: 15 MB
VERSION: 1.0 (Initial release)
TARGET DEPLOYMENT: QA first (UAT), then Production
Location:
Datasphere Home → Administration → Transport
Transport Cockpit Sections:
Package Creation Dialog:
| Field | Required | Guidance |
|---|---|---|
| Package Name | Yes | Descriptive, business-focused (50 chars max) |
| Package ID | Auto | System identifier (immutable) |
| Description | Yes | Purpose and contents (500 chars) |
| Version | Yes | Semantic version (X.Y.Z) |
| Release Notes | Yes | What changed, why |
| Source Space | Yes | Space containing objects to transport |
| Target Tenants | Yes | Which tenant(s) will receive this |
Example Package Definition:
Package Name: Customer Analytics Suite
Package ID: PKG_CUST_ANALYTICS_001
Version: 1.0.0
Description:
Comprehensive customer analytics data models including master data,
customer lifetime value calculations, segmentation logic, and supporting
data flows. Includes 2 source tables, 3 analytic views, and 2 data flows.
Release Notes (v1.0.0):
- Initial release with customer master and segmentation models
- Includes vw_customer_lifetime_value for RFM analysis
- Includes df_enrichment data flow for daily customer updates
- Tested with 50M customer records, supports 99.9% uptime SLA
Release Date: 2024-01-15
Released By: john.smith@company.com
Target Tenants:
- QA Tenant (datasphere-qa.company.com)
- Production Tenant (datasphere-prod.company.com)
Selection Process:
DATASPHERE TRANSPORT DIALOG
═══════════════════════════════
Space: Sales Analytics
Available Objects:
☑ table__customer_master
☐ table__customer_transactions
☑ vw_customer_active
☑ vw_customer_lifetime_value
☑ vw_customer_segmentation
☑ df_customer_enrichment
☑ df_segment_scoring
☐ custom_calculation_revenue
☐ business_rule_inactive_filter
SELECTED: 7 objects
TOTAL SIZE: ~12 MB
ESTIMATED DEPENDENCY CHECK TIME: 30 seconds
Selection Tips:
Review Checklist:
PACKAGE CONTENTS REVIEW
═══════════════════════
OBJECTS INCLUDED:
[✓] customer_master (Table)
[✓] customer_transactions (Table)
[✓] vw_customer_active (View)
[✓] vw_customer_lifetime_value (View)
[✓] vw_customer_segmentation (View)
[✓] df_customer_enrichment (Data Flow)
[✓] df_segment_scoring (Data Flow)
Total: 7 objects
DEPENDENCIES VERIFIED:
[✓] All referenced tables included
[✓] All dependent views included
[✓] All data flow sources identified
[✓] No external dependencies outside this package
SIZE ANALYSIS:
[✓] Total size: ~12 MB (reasonable)
[✓] Largest object: vw_customer_segmentation (3.5 MB)
[✓] Compressed transport size: ~3.2 MB
VERSIONING:
[✓] New package (v1.0.0)
[✓] Version > previous release (N/A, first)
[✓] Release notes complete
[✓] Change log documented
Dependency Graph Example:
DEPENDENCY HIERARCHY
════════════════════════════════════════════════════════════
SOURCE TABLES (No dependencies)
│
├─ customer_master
│ (Base customer data from ERP)
│
└─ customer_transactions
(Base sales transactions)
LEVEL 1 VIEWS (Depend on source tables)
│
├─ vw_customer_active
│ (Filter: status = 'ACTIVE')
│ └─ Depends on: customer_master
│
└─ vw_transaction_detail
(Enriched transaction data)
└─ Depends on: customer_transactions, customer_master
LEVEL 2 VIEWS (Depend on Level 1 views or tables)
│
└─ vw_customer_lifetime_value
(Calculate LTV metrics)
└─ Depends on: vw_customer_active, vw_transaction_detail
LEVEL 3 VIEWS (Depend on Level 2 views)
│
└─ vw_customer_segmentation
(RFM segmentation using LTV)
└─ Depends on: vw_customer_lifetime_value
DATA FLOWS (Complex dependencies)
│
├─ df_customer_enrichment
│ (Read: vw_customer_active, Write: customer_master)
│ └─ Depends on: customer_master, customer_transactions
│
└─ df_segment_scoring
(Read: vw_customer_segmentation, Write: customer_master)
└─ Depends on: vw_customer_lifetime_value
CONNECTIONS
│
└─ Connection_ERP (for replication flows)
(Used by: df_customer_enrichment)
Automatic Dependency Detection:
STEP 1: Identify Direct Dependencies
────────────────────────────────────
For each selected object:
1. Scan object definition for table/view references
2. Extract all SOURCE object names
3. Add to dependency list
Example: vw_customer_lifetime_value
Definition: SELECT ... FROM vw_transaction_detail, vw_customer_active
Direct Dependencies: vw_transaction_detail, vw_customer_active
STEP 2: Recursive Dependency Resolution
─────────────────────────────────────────
For each direct dependency:
1. Check if object included in package
2. If not included:
a. Mark as MISSING
b. Add to dependency resolution queue
3. Recursively resolve object's dependencies
Example: vw_customer_lifetime_value
Direct: vw_transaction_detail, vw_customer_active
vw_transaction_detail:
└─ Depends on: customer_transactions, customer_master
vw_customer_active:
└─ Depends on: customer_master
STEP 3: Build Complete Dependency List
────────────────────────────────────────
Transitive closure of all dependencies:
vw_customer_lifetime_value
├─ vw_transaction_detail
│ ├─ customer_transactions
│ └─ customer_master
└─ vw_customer_active
└─ customer_master
Unique dependencies: customer_master, customer_transactions
STEP 4: Verify Completeness
────────────────────────────
✓ All dependencies included?
✓ All objects deployable?
✓ Version compatibility?
✓ No circular dependencies?
When to Manually Check:
Custom Objects: Custom code not auto-detected
View definition uses SCRIPT operator:
CREATE VIEW vw_complex_calc AS
SELECT * FROM table_x
PLUS <CUSTOM_SCRIPT>
Manual Check: Verify CUSTOM_SCRIPT dependencies
External Data Sources: References to systems outside Datasphere
Data Flow reads from: SAP S/4HANA ERP via Replication Flow
Manual Check: Is Replication Flow in package?
Is connection definition included?
Parameter References: Views/flows using global parameters
View: SELECT * FROM table WHERE region = $$REGION_PARAM
Manual Check: Is parameter defined in target tenant?
Is default value set?
Manual Dependency Checklist:
MANUAL VERIFICATION CHECKLIST
══════════════════════════════════════════════
For each object in package:
[ ] Check view source code for table references
Command: View Definition → Review "FROM" clause
[ ] Check view parameters
Command: View Definition → Review "WHERE" clause for parameters
[ ] Check data flow connections
Command: Data Flow → Review "Source" operator
[ ] Check for user-defined functions
Command: View Definition → Search for custom UDF calls
[ ] Check replication flows
Command: Data Flow → Review Replication object references
[ ] Verify external system connections
Command: Transport Cockpit → Review connection list
[ ] Document all dependencies found
Format: Dependency CSV with:
[Dependent Object] | [Required Object] | [Type]
[ ] Validate no circular dependencies
Example (CIRCULAR - BAD):
vw_a → vw_b → vw_c → vw_a
[ ] Confirm all dependencies included
Mark: [✓] Included in package
[✗] MISSING - must add
Pre-Export Validation:
EXPORT READINESS CHECKLIST
═══════════════════════════════
OBJECT VALIDATION
[ ] All objects compile without errors
Check: Datasphere UI shows no error indicators
All objects in "ACTIVE" status
[ ] No in-progress edits
Check: No one has objects checked out
All changes committed
[ ] Documentation complete
Check: All objects have descriptions
Business context documented
[ ] Testing completed
Check: All views query successfully
Data flows execute without errors
No data quality issues detected
DEPENDENCY VALIDATION
[ ] All dependencies included in package
Check: Run dependency analysis
No "MISSING" or "UNRESOLVED" indicators
[ ] No circular dependencies
Check: Dependency tool reports no cycles
Manual review of complex paths
[ ] Version compatibility verified
Check: All object versions compatible
No deprecated syntax used
METADATA VALIDATION
[ ] Package metadata complete
Check: Version number set
Release notes documented
Change log updated
[ ] Access rights correct
Check: Objects not marked confidential/restricted
Appropriate consumers can see metadata
No unnecessary security settings
BACKUP & SAFETY
[ ] Source tenant has recent backup
Check: Run backup before export
Backup verified restorable
[ ] Change log prepared
Check: Document all changes since last version
Note any breaking changes
Export Process:
DATASPHERE TRANSPORT COCKPIT
═══════════════════════════════
1. Click: "Create Export Package"
2. Enter Package Details:
Package Name: Customer Analytics Suite
Version: 1.0.0
Description: [as planned]
Release Notes: [as prepared]
3. Select Objects:
☑ customer_master (Table)
☑ customer_transactions (Table)
☑ vw_customer_active (View)
☑ vw_customer_lifetime_value (View)
☑ vw_customer_segmentation (View)
☑ df_customer_enrichment (Data Flow)
☑ df_segment_scoring (Data Flow)
4. Verify Dependencies:
✓ All dependencies included
✓ No circular dependencies detected
✓ Total size: 12 MB
✓ 7 objects selected
5. Select Export Format:
Format: CSN (Core Schema Notation)
Compression: GZIP
Output: transport_cust_analytics_v1_0_0.zip
6. Click: "Generate Export Package"
Status: Processing...
Progress: [████████░░░░░░░░░░] 40%
...
Status: EXPORT COMPLETE
File: transport_cust_analytics_v1_0_0.zip (3.2 MB)
7. Download Package:
Action: Download to local file system
Verify: Checksum SHA256: a3f5e...
Post-Export Verification:
POST-EXPORT VALIDATION
════════════════════════════
FILE CHECKS
[ ] File exists and readable
Command: ls -lh transport_cust_analytics_v1_0_0.zip
[ ] File size reasonable
Expected: ~3.2 MB
Actual: 3.2 MB ✓
[ ] Checksum matches
Expected: a3f5e...
Actual: a3f5e... ✓
[ ] Not corrupted (test extraction)
Command: unzip -t transport_cust_analytics_v1_0_0.zip
Result: All files test OK ✓
CONTENTS VERIFICATION
[ ] Package metadata present
Check: metadata.json exists
[ ] Object definitions present
Check: objects.json contains 7 objects
[ ] Dependencies documented
Check: dependencies.json complete
[ ] File structure valid
Check: All expected folders and files present
VERSION VERIFICATION
[ ] Version number in metadata matches intent
Expected: 1.0.0
Actual: 1.0.0 ✓
[ ] Release notes present and correct
[ ] Change log documented
[ ] Timestamp recorded
SECURITY VERIFICATION
[ ] No sensitive data in export
Check: No passwords, API keys, credentials
No PII unencrypted
[ ] Encryption enabled
Check: Export uses encryption for transmission
Access controls in place
Pre-Import Steps:
TARGET TENANT PREPARATION
═══════════════════════════════════════════
ENVIRONMENT VERIFICATION
[ ] Target tenant accessible
Test: Login to target Datasphere instance
Verify read/write permissions
[ ] Required space exists
Check: Target space available in destination
Space has sufficient quota
Space permissions allow imports
[ ] Space is clean and ready
Check: No conflicting objects (same names)
Space has recent backup
Space in stable state (no ongoing changes)
DEPENDENCY VERIFICATION
[ ] All table sources available
Check: customer_master exists in target (or will be created)
customer_transactions exists in target (or will be created)
Note: Source tables often already exist; confirm status
[ ] Required connections present
Check: Connection_ERP exists in target
Connection credentials valid
Connection can connect successfully
[ ] Parameter definitions available
Check: Any global parameters used are defined in target
Default values appropriate for target environment
[ ] User/Role access configured
Check: Import user has CREATE/UPDATE permissions
Target users have SELECT permissions on objects
Data consumer roles configured
NETWORK & CAPACITY
[ ] Network connectivity stable
Test: Ping target system
No recent network issues
Upload bandwidth sufficient
[ ] Target has sufficient space
Check: Disk space > package size * 3 (for extraction)
Memory available for import process
No capacity alerts in target
BACKUP & SAFETY
[ ] Target tenant has recent backup
Verify: Last backup completed successfully
Backup can be restored if needed
Backup retention meets compliance
[ ] Rollback plan ready
Document: How to rollback if import fails
Restore procedure tested
Team trained on rollback
Upload Process:
TARGET TENANT TRANSPORT COCKPIT
═══════════════════════════════════
1. Navigate: Administration → Transport → Import Packages
2. Click: "Upload Package"
3. Select File:
File: transport_cust_analytics_v1_0_0.zip
Size: 3.2 MB
4. Upload:
Progress: [████████████████░░] 80%
Status: Validating package...
Status: UPLOAD SUCCESSFUL
Uploaded: 2024-01-15 14:30 UTC
5. Review Package Details:
Package: Customer Analytics Suite
Version: 1.0.0
Objects: 7 items
Size: 12 MB (uncompressed)
Release Notes: [as documented]
6. System Pre-Import Check:
Checking dependencies...
[✓] All table sources available or will be created
[✓] All view dependencies resolvable
[✓] No version conflicts detected
[✓] 0 objects will be OVERWRITTEN (new import)
[!] WARNING: Data flow connections require verification
Action Required: Verify Connection_ERP is available
Status: User must confirm before import proceeds
Conflict Scenarios:
Scenario 1: Object Already Exists (Update)
CONFLICT DETECTED
═════════════════════════════════════════
Object: vw_customer_active (View)
Status in Target: EXISTS
Current Definition in Target:
SELECT * FROM customer_master WHERE status = 'ACTIVE'
New Definition in Package:
SELECT * FROM customer_master WHERE status = 'ACTIVE'
AND account_age_days > 30 -- CHANGED
Options:
[ ] SKIP - Don't overwrite, keep existing
[ ] OVERWRITE - Replace with new version
[ ] RENAME - Import as vw_customer_active_v2
[ ] REVIEW - Show detailed diff before deciding
Decision: OVERWRITE
Reason: New version includes important account age filter
Vetted in QA before export
Scenario 2: Dependency Missing
MISSING DEPENDENCY
═════════════════════════════════════════
Object: vw_customer_lifetime_value (View)
Required Dependency: vw_transaction_detail (View)
Status: NOT FOUND in target tenant
Options:
[ ] FAIL - Block import, require dependency first
[ ] CREATE - Import will create missing dependency
[ ] SKIP - Skip this object, import others
[ ] ADD_TO_IMPORT - Request missing object be added
Decision: CREATE
Status: System will create vw_transaction_detail as prerequisite
Scenario 3: Connection Not Available
CONNECTION ERROR
═════════════════════════════════════════
Object: df_customer_enrichment (Data Flow)
Required Resource: Connection_ERP
Status: Connection NOT FOUND in target
Error: Cannot import data flow without connection
Options:
[ ] SKIP - Import other objects, skip data flow
[ ] FAIL - Block entire import
[ ] CREATE_MANUAL - Create connection, retry import later
[ ] REASSIGN - Use existing similar connection
Decision: CREATE_MANUAL
Action Required:
1. Create Connection_ERP in target manually
2. Configure credentials for target ERP system
3. Test connection (verify connectivity)
4. Retry import
Import Execution:
IMPORT EXECUTION
═════════════════════════════════════════
1. Review Conflict Resolutions:
[✓] vw_customer_active (OVERWRITE)
[✓] vw_transaction_detail (CREATE)
[✓] df_customer_enrichment (SKIP - connection not available)
[✓] 7 total objects (5 create, 1 update, 1 skip)
2. Click: "Start Import"
Status: Validating package...
Status: Creating objects...
3. Import Progress:
[████████████████████████] 100%
Objects Created: 5
Objects Updated: 1
Objects Skipped: 1
Errors: 0
4. Import Complete
Status: SUCCESS (with 1 warning)
Timestamp: 2024-01-15 14:45 UTC
Duration: 15 minutes
5. Post-Import Report:
┌─────────────────────────────────────────────┐
│ IMPORT SUMMARY REPORT │
├─────────────────────────────────────────────┤
│ Package: Customer Analytics Suite v1.0.0 │
│ Target Tenant: datasphere-qa.company.com │
│ Import Date: 2024-01-15 │
│ │
│ OBJECT RESULTS: │
│ ✓ customer_master (CREATE) │
│ ✓ customer_transactions (CREATE) │
│ ✓ vw_customer_active (UPDATE) │
│ ✓ vw_customer_lifetime_value (CREATE) │
│ ✓ vw_transaction_detail (CREATE) │
│ ✓ vw_customer_segmentation (CREATE) │
│ ⊘ df_customer_enrichment (SKIPPED) │
│ ? df_segment_scoring (SKIPPED) │
│ │
│ STATUS: 5 SUCCESS, 2 SKIPPED, 0 FAILED │
│ │
│ WARNINGS: │
│ ! Data flows require manual connection │
│ configuration before execution │
│ │
│ NEXT STEPS: │
│ 1. Create Connection_ERP in target │
│ 2. Configure data flow inputs/outputs │
│ 3. Test view queries │
│ 4. Execute data flows │
│ 5. Validate data results │
└─────────────────────────────────────────────┘
The SAP Content Network provides pre-built, industry-standard data models and solutions available for direct import into Datasphere.
Content Types:
Access:
Datasphere Home → Content Network
OR
Transport Cockpit → Content Network Tab
Browse Options:
Example Package:
SAP CONTENT NETWORK PACKAGE
════════════════════════════════════════════════════════════
Name: SAP Analytics Cloud - Sales Insights
Publisher: SAP
Version: 4.2.1
Release Date: 2024-01-10
Description:
Industry-standard Sales Analytics solution with best-practice
KPI definitions, customer data models, and sales pipeline
analytics. Includes 12 pre-built models, 20+ analytic views,
and 5 data flows for common analysis patterns.
Industry: Retail, Manufacturing, High-Tech
Use Cases:
- Sales pipeline forecasting
- Territory performance analysis
- Customer acquisition cost calculation
- Sales rep productivity benchmarking
Objects Included:
- 12 data models (tables/entities)
- 25 analytic views
- 5 pre-configured data flows
- 8 KPI definitions
- Sample data included
Size: 45 MB
Estimated Deploy Time: 20 minutes
Prerequisites:
- Datasphere Cloud Edition or higher
- S/4HANA connection (for data replication)
- Business Role "Space Admin" or higher
Downloads: 5,231
Rating: 4.8/5.0 stars
Latest Review: "Great starting point, saves weeks of modeling"
Cost: Free (included with Datasphere license)
Support: Community forum + SAP support
Documentation: Full documentation + videos + sample queries
Import Process:
STEP 1: Select Package from Content Network
Action: Find and review package details
Check: Prerequisites met, supports use case
STEP 2: Click "Import to My Tenant"
Automatic:
- Download package
- Validate against target environment
- Display conflict resolution dialog
STEP 3: Configure Target Space
Selection:
☐ Create new space: "Sales_Analytics_CN"
☐ Import to existing space: [select from list]
Recommendation: Create new space (cleaner isolation)
STEP 4: Resolve Conflicts
Typical Issues:
- Table names exist (choose RENAME or OVERWRITE)
- Connections not available (create manually later)
- Sample data volume (remove if not needed)
STEP 5: Start Import
Progress: [████████████████░░░░] 50%
Objects: 3 created, 2 dependencies resolving...
Status: IMPORT COMPLETE
STEP 6: Post-Import Validation
Tasks:
[ ] Navigate to imported space
[ ] Review imported objects
[ ] Test views with sample queries
[ ] Update any connections needed
[ ] Load sample data if provided
[ ] Customize KPI definitions for your data
Common Customizations:
| Change | Effort | Impact |
|---|---|---|
| Rename objects to match standards | Low | Branding consistency |
| Update data connections | Medium | Enable actual data flows |
| Modify KPI definitions | Medium | Business alignment |
| Add organization filters (region, department) | Medium | Scoping to your org |
| Extend views with additional columns | Medium | Enhanced analysis |
| Remove sample data | Low | Reclaim storage |
Example Customization:
ORIGINAL PACKAGE OBJECT:
View: vw_sales_by_region
Definition: 5 generic regions (North, South, East, West, Central)
CUSTOMIZATION:
1. Clone view: vw_sales_by_region_company_specific
2. Modify WHERE clause:
Original: WHERE region IN ('North', 'South', ...)
Modified: WHERE region IN (SELECT region FROM region_mapping
WHERE company_id = CURRENT_COMPANY_ID)
3. Add column: company_name (join to company master)
4. Test with your data
5. Update dependent views to use company-specific version
RESULT:
- Original package unmodified (easier to upgrade)
- Company-specific views available for your analytics
- Multi-tenant capable using company_id filter
Version Format: MAJOR.MINOR.PATCH
Version Number | Increment When | Breaking | Consumer Action
────────────────────────────────────────────────────────────────
1.0.0 | Initial release | N/A | Baseline
1.0.1 | Bug fix | No | Optional update
1.1.0 | Feature addition | No | Update recommended
2.0.0 | Breaking change | Yes | Must update
Examples:
1.0.0 → 1.0.1: Bug fix in vw_customer_lifetime_value calculation
- Backward compatible
- No schema changes
- Safe to deploy anytime
1.0.1 → 1.1.0: Add new column (tenure_months) to vw_customer_active
- Backward compatible (new column optional)
- Existing queries unaffected
- Safe to deploy anytime
1.1.0 → 2.0.0: Remove deprecated column (legacy_id) from customer_master
- BREAKING: Queries using legacy_id will fail
- Requires consumer testing before deployment
- 60+ day notice required
2.0.0 → 2.0.1: Fix data quality issue in customer_master
- Backward compatible
- Data corrected (historical)
- Safe to deploy anytime
Changelog Format:
CHANGE LOG: Customer Analytics Suite
═══════════════════════════════════════════════════════════════
VERSION 1.0.0 (2024-01-15)
───────────────────────────
Release Type: Initial Release
Status: Production Ready
Author: Data Team
Tested By: QA Team
OBJECTS ADDED:
- customer_master (Table): Base customer directory
- customer_transactions (Table): All customer purchases
- vw_customer_active (View): Active customers (status = 'ACTIVE')
- vw_customer_lifetime_value (View): 3-year LTV calculation
- vw_customer_segmentation (View): RFM segmentation model
- df_customer_enrichment (Data Flow): Daily customer master updates
- df_segment_scoring (Data Flow): Daily RFM score calculation
OBJECTS MODIFIED:
[none - initial release]
OBJECTS REMOVED:
[none - initial release]
DATA QUALITY:
- customer_master: 50M records, 99.8% completeness
- customer_transactions: 1B records, 99.95% completeness
- Validation: GL reconciliation within 0.1%
KNOWN LIMITATIONS:
- customer_transactions includes retail orders only (excludes web)
- RFM segmentation uses last 3 years data
- Daily refresh by 6am UTC (max 1-hour delay tolerance)
BREAKING CHANGES: None
DEPLOYMENT NOTES:
- QA deployment completed 2024-01-10, testing passed
- Production deployment scheduled 2024-01-20
- Rollback procedure tested and verified
- Support team trained on new objects and queries
───────────────────────────────────────────────────────────────
VERSION 1.1.0 (Expected Q2 2024)
─────────────────────────────────
Planned Changes:
- Add vw_customer_churn_risk (predictive model)
- Add df_churn_prediction (data flow)
- Add region filter to all customer views
- Expand customer_master to 100M records
Breaking: No
Notice Required: 30 days
Estimated Deploy Date: Q2 2024
───────────────────────────────────────────────────────────────
VERSION 2.0.0 (Planned Q4 2024)
─────────────────────────────────
Planned Breaking Changes:
- Remove legacy_customer_id column (use customer_id only)
- Restructure customer_transactions grain
- Rename vw_customer_lifetime_value → vw_customer_value
- Consolidate segment tables into single entity
Breaking: YES
Notice Required: 60+ days
Migration: Detailed guide + webinar
New Deploy Date: Q4 2024
Development Process:
1. Dev Space: Rapid iteration, experiments, drafts
- Make changes frequently
- Test locally
- Document incremental changes
2. Feature Branch: Create feature-specific packages
- One feature = one package
- Clear naming (feature_name_v1_0)
- Complete testing in dev
3. Integration: Combine approved features
- Merge features into main package
- Run integrated testing
- Final validation
4. QA Space: Test in target environment
- Import package to QA
- Run full test suite
- Validate with business users
- Document issues
5. UAT (Optional): Business user acceptance testing
- Provide limited access to QA
- Gather feedback
- Make adjustments
6. Production: Controlled deployment
- Import to production
- Monitor for issues
- Support production consumers
Package Names:
Format: [Feature]_[Version]_[Date]
Examples:
- customer_analytics_v1_0_0_20240115
- sales_dashboard_v2_1_0_20240201
- replication_flow_updates_v1_0_0_20240208
Guidelines:
- Use snake_case (lowercase_with_underscores)
- Include version number
- Include date (YYYYMMDD)
- Keep descriptive but concise
- Avoid special characters
Object Naming Within Package:
Tables: tbl_[descriptive_name]
tbl_customer_master
tbl_sales_transactions
Views: vw_[descriptive_name]
vw_customer_active
vw_customer_lifetime_value
Data Flows: df_[descriptive_name]
df_customer_enrichment
df_segment_scoring
Connections: conn_[system_name]
conn_erp_production
conn_excel_uploads
Validation Checklist:
POST-IMPORT VALIDATION
═════════════════════════════════════════════════
OBJECT INTEGRITY TESTS
[ ] All objects created/updated successfully
Check: View object list in target space
All expected objects present
[ ] No compilation errors
Check: Open each object definition
No error indicators
Syntax valid
[ ] Dependencies resolved
Check: All dependent objects accessible
No broken references
DATA INTEGRITY TESTS
[ ] Tables have data (if applicable)
Check: Query each table, verify row counts
Sample data appears correct
No null key fields
[ ] Views return results
Check: Query each view, verify results
Execution time reasonable
Output matches expectations
[ ] Data freshness
Check: Data timestamp recent
No stale data indicators
Last refresh successful
FUNCTIONAL TESTS
[ ] View logic correct
Test: Run known queries
Results match expected outcomes
Calculations validated
[ ] Data flows execute
Test: Trigger each data flow
Monitor execution logs
Completion status successful
No errors or warnings
[ ] Filters work correctly
Test: Apply various filters
Results subset correctly
No false positives/negatives
PERFORMANCE TESTS
[ ] Query execution time acceptable
Benchmark: < 5 seconds for typical queries
< 30 seconds for complex aggregations
[ ] Memory usage reasonable
Monitor: No spill to disk
Peak memory < 80% available
[ ] Concurrency tolerated
Test: Run multiple queries simultaneously
No slowdown or deadlocks
COMPARISON WITH SOURCE
[ ] Objects match source definition
Compare: Definition in source (dev) vs. target (qa)
No unexpected changes
Versions match
[ ] Data matches source
Compare: Sample data in source vs. target
Row counts align
Totals match
Symptom:
IMPORT ERROR: Cannot import vw_customer_lifetime_value
Missing dependency: vw_transaction_detail not found in target
Root Causes:
Resolution:
Option A: Include missing dependency
1. Go back to source (dev) tenant
2. Edit package to include vw_transaction_detail
3. Re-export package
4. Re-import to target
Option B: Create missing object manually
1. Manually create vw_transaction_detail in target
2. Use definition from source
3. Retry import (should now succeed)
Option C: Update view reference
1. Import vw_customer_lifetime_value with error
2. Edit in target to use existing view with different name
3. Save modified version
Prevention:
Symptom:
IMPORT ERROR: vw_customer_active exists in target
Current version: 1.0.1 in target
Package version: 1.0.0 (older)
Cannot downgrade object
Root Cause: Target already has a newer version of the object than what you're trying to import.
Resolution:
Option A: Skip this object
Decision: Don't overwrite target version
Choose: SKIP in conflict resolution
Verify: Target version has all needed changes
Option B: Get latest package from source
Action: Go to source, update package
Include: Latest version of object (1.0.1 or newer)
Re-export and re-import
Option C: Upgrade source package first
Action: Make improvements in source
Release: As version 1.1.0 or 2.0.0
Then: Export and import new version
Prevention:
- Always export latest version from source
- Maintain version consistency across tenants
- Document version of each environment
Symptom:
IMPORT WARNING: Data flow df_customer_enrichment references
connection 'Connection_ERP' which does not exist in target
Data flow will not execute until connection configured
Root Cause: Connection requires different credentials or configuration in target (different ERP instance, different credentials, different environment).
Resolution:
Option A: Import without data flows (temporary)
1. Skip data flow objects during import
2. Create connection in target manually
3. Re-import data flows later
Option B: Create connection in target first
1. Create new connection in target tenant
2. Name it identically to source (Connection_ERP)
3. Configure credentials for target ERP system
4. Test connection (verify connectivity)
5. Re-import package (should now succeed)
Option C: Modify data flow to use existing connection
1. Import data flows anyway (with warning)
2. Edit data flows in target
3. Update connection reference to existing connection
4. Test data flow execution
5. Save modified version
Prevention:
- Create connections in target before import
- Use standard connection names across environments
- Document required connections in package metadata
- Include connection setup in import instructions
Find transportable objects in your space:
search_repository(space="sales_analytics", object_type="view")
Returns: All views in space, enabling object selection for packaging
Retrieve complete object metadata for dependency analysis:
get_object_definition(object_id="vw_customer_lifetime_value")
Returns: Full definition including source references, enabling manual dependency verification
List all objects in a space to validate package contents:
list_repository_objects(space="sales_analytics", include_metadata=true)
Returns: All objects with metadata, supporting package planning
Verify what's currently deployed in target tenant:
get_deployed_objects(tenant="datasphere-qa", space="sales_analytics")
Returns: Current objects in target, identifying conflicts before import