# CloudCraze to Lightning Migration Configuration
# This configuration file controls the migration orchestration, batch sizes, and validation parameters

# Source Organization Settings
source:
  org_type: sandbox
  username: ccrz.migration@example.com.sandbox
  client_id: ${SOURCE_CLIENT_ID}
  client_secret: ${SOURCE_CLIENT_SECRET}
  api_version: v59.0

# Target Organization Settings
target:
  org_type: production
  username: lightning.migration@example.com
  client_id: ${TARGET_CLIENT_ID}
  client_secret: ${TARGET_CLIENT_SECRET}
  api_version: v59.0

# Migration Phases and Dependencies
migration_phases:
  - phase_name: VALIDATION
    depends_on: []
    enabled: true
    description: "Pre-flight validation and data quality checks"
    retry_count: 1

  - phase_name: PRODUCTS
    depends_on: [VALIDATION]
    enabled: true
    description: "Migrate CloudCraze E_Product__c to Product2"
    batch_size: 200
    timeout_minutes: 60
    retry_count: 3

  - phase_name: PRICING
    depends_on: [PRODUCTS]
    enabled: true
    description: "Migrate pricing hierarchy (Pricebook2 and PricebookEntry)"
    batch_size: 100
    timeout_minutes: 90
    retry_count: 2

  - phase_name: ORDERS
    depends_on: [PRODUCTS, PRICING]
    enabled: true
    description: "Migrate order history with full relationship chain"
    batch_size: 200
    timeout_minutes: 120
    retry_count: 2

  - phase_name: POST_MIGRATION
    depends_on: [ORDERS]
    enabled: true
    description: "Data reconciliation and validation"
    retry_count: 1

# Batch Processing Configuration
batch_processing:
  default_batch_size: 200
  max_concurrent_batches: 3
  governor_limit_threshold_percent: 80
  heap_memory_warning_threshold: 75

# Field Mapping Configuration
field_mappings:
  product:
    ccrz__ProductCode__c: ProductCode
    ccrz__ProductName__c: Name
    ccrz__ProductDescription__c: Description
    ccrz__ProductType__c: Family
    ccrz__Manufacturer__c: Manufacturer__c
    ccrz__Weight__c: Weight__c
    ccrz__IsActive__c: IsActive

  pricing:
    ccrz__PriceListCode__c: Name
    ccrz__CurrencyCode__c: CurrencyIsoCode
    ccrz__UnitPrice__c: UnitPrice
    ccrz__DiscountPercent__c: Discount_Percent__c

  order:
    ccrz__OrderNumber__c: OrderNumber
    ccrz__OrderDate__c: OrderDate
    ccrz__OrderTotal__c: Amount
    ccrz__OrderStatus__c: Status

# Status Mapping Configuration
status_mappings:
  product_type:
    MERCHANDISE: Merchandise
    SERVICE: Service
    BUNDLE: Bundle
    DIGITAL: Digital
    SUBSCRIPTION: Subscription

  order_status:
    NEW: Draft
    DRAFT: Draft
    SUBMITTED: Activated
    PROCESSING: Activated
    SHIPPED: Activated
    DELIVERED: Activated
    CANCELLED: Cancelled
    PENDING: Draft
    COMPLETED: Activated

# Validation and Quality Thresholds
validation:
  record_count_variance_percent: 0
  field_mapping_success_rate: 98
  relationship_integrity_percent: 100
  pricing_accuracy_variance_percent: 0.01
  sample_size: 100

  # Objects that must match exactly
  strict_validation_objects:
    - Product2
    - Pricebook2
    - Order

  # Objects with acceptable variance
  lenient_validation_objects:
    - OrderItem
    - PricebookEntry

# Reconciliation Configuration
reconciliation:
  enabled: true
  sample_size: 100
  compare_field_counts: true
  validate_relationships: true
  checksum_validation: true
  generate_html_report: true
  email_report: true

# Notification Settings
notifications:
  enable_email_notifications: true
  admin_email: migration-admin@nulogic.com
  notify_on_phase_completion: true
  notify_on_error: true
  notify_on_validation_failure: true

  # Slack notifications (optional)
  slack_enabled: false
  slack_webhook_url: ${SLACK_WEBHOOK_URL}
  slack_channel: #ccrz-migration

# Retry and Error Handling
error_handling:
  max_retry_attempts: 3
  retry_delay_seconds: 30
  rollback_on_phase_failure: false
  continue_on_item_failure: true
  log_level: INFO

# Data Extraction Configuration
data_extraction:
  extract_inactive_records: false
  extract_archived_records: false
  extract_media: true
  extract_relationships: true
  chunk_size: 10000

# Logging and Audit Trail
logging:
  log_directory: logs
  log_level: INFO
  log_to_file: true
  log_to_console: true
  log_to_salesforce: true
  custom_object: Migration_Log__c
  keep_logs_days: 90

# Rollback Configuration
rollback:
  enabled: true
  create_backup: false
  track_all_changes: true
  enable_selective_rollback: true
  audit_log_object: Rollback_Audit__c

# Performance Tuning
performance:
  use_batch_apex: true
  use_platform_events: false
  parallel_execution: false
  query_optimization: true
  use_composite_requests: false

# Monitoring and Metrics
monitoring:
  track_execution_time: true
  track_memory_usage: true
  track_api_calls: true
  export_metrics: true
  metrics_file: migration_metrics.json

# Security Settings
security:
  encrypt_sensitive_fields: false
  mask_pii_in_logs: true
  verify_org_limits: true
  enforce_certificate_validation: true

# Scheduling
scheduling:
  schedule_batch_jobs: false
  preferred_run_time: "02:00 UTC"
  run_during_maintenance_window: true
  skip_weekends: false
