๐Ÿ“… let's chat! explore the endless possibilities creating industries that don't exist. click here

guidewire-prod-checklist

Production deployment readiness checklist for Guidewire InsuranceSuite Cloud. Use when preparing for production deployment, conducting go-live reviews, or validating environment readiness. Trigger with phrases like "guidewire production", "go-live checklist", "deployment readiness", "production review", "guidewire cloud deploy". allowed-tools: Read, Write, Edit, Bash(curl:*), Grep version: 1.0.0 license: MIT author: Jeremy Longshore <jeremy@intentsolutions.io>

Allowed Tools

No tools specified

Provided by Plugin

guidewire-pack

Claude Code skill pack for Guidewire InsuranceSuite (24 skills)

saas packs v1.0.0
View Plugin

Installation

This skill is included in the guidewire-pack plugin:

/plugin install guidewire-pack@claude-code-plugins-plus

Click to copy

Instructions

# Guidewire Production Checklist ## Overview Comprehensive production readiness checklist for Guidewire InsuranceSuite Cloud deployment, covering security, performance, monitoring, and operational readiness. ## Prerequisites - Completed development and testing phases - Access to Guidewire Cloud Console - Stakeholder sign-off on functionality ## Production Readiness Checklist ### Security | # | Item | Priority | Status | |---|------|----------|--------| | 1 | OAuth2 credentials rotated for production | Critical | [ ] | | 2 | Service accounts use least privilege API roles | Critical | [ ] | | 3 | All secrets stored in secret manager (not code) | Critical | [ ] | | 4 | TLS 1.2+ enforced for all connections | Critical | [ ] | | 5 | PII data encryption configured | Critical | [ ] | | 6 | Security audit logging enabled | Critical | [ ] | | 7 | Input validation on all API endpoints | High | [ ] | | 8 | Rate limiting configured appropriately | High | [ ] | | 9 | Webhook signature validation enabled | High | [ ] | | 10 | Penetration testing completed | High | [ ] | ### Configuration | # | Item | Priority | Status | |---|------|----------|--------| | 11 | Environment-specific configs separated | Critical | [ ] | | 12 | Database connection pools sized appropriately | Critical | [ ] | | 13 | JVM memory settings optimized | High | [ ] | | 14 | Timeout values configured for production | High | [ ] | | 15 | Retry policies with exponential backoff | High | [ ] | | 16 | Circuit breakers configured | High | [ ] | | 17 | Feature flags for rollback capability | Medium | [ ] | ### Performance | # | Item | Priority | Status | |---|------|----------|--------| | 18 | Load testing completed at 2x expected traffic | Critical | [ ] | | 19 | Database indexes optimized | Critical | [ ] | | 20 | Query performance validated | High | [ ] | | 21 | API response times < 2s for 95th percentile | High | [ ] | | 22 | Batch job schedules don't conflict | High | [ ] | | 23 | CDN configured for static assets | Medium | [ ] | | 24 | Caching strategy implemented | Medium | [ ] | ### Monitoring & Observability | # | Item | Priority | Status | |---|------|----------|--------| | 25 | Application health checks configured | Critical | [ ] | | 26 | Error alerting to on-call team | Critical | [ ] | | 27 | Dashboard for key metrics created | Critical | [ ] | | 28 | Log aggregation configured | High | [ ] | | 29 | Distributed tracing enabled | High | [ ] | | 30 | SLA monitoring configured | High | [ ] | | 31 | Capacity alerts for resources | Medium | [ ] | ### Data & Integration | # | Item | Priority | Status | |---|------|----------|--------| | 32 | Data migration validated | Critical | [ ] | | 33 | Integration endpoints point to production | Critical | [ ] | | 34 | Message queue configurations verified | High | [ ] | | 35 | Webhook endpoints registered | High | [ ] | | 36 | Backup and recovery tested | Critical | [ ] | | 37 | Data retention policies configured | High | [ ] | ### Operations | # | Item | Priority | Status | |---|------|----------|--------| | 38 | Runbook documentation complete | Critical | [ ] | | 39 | On-call rotation established | Critical | [ ] | | 40 | Incident response plan documented | Critical | [ ] | | 41 | Rollback procedure tested | Critical | [ ] | | 42 | Change management process defined | High | [ ] | | 43 | Support escalation path documented | High | [ ] | ## Validation Scripts ### Health Check Endpoint ```typescript // Production health check implementation interface HealthStatus { status: 'healthy' | 'degraded' | 'unhealthy'; version: string; timestamp: string; checks: { [key: string]: { status: 'pass' | 'fail'; latency?: number; message?: string; }; }; } async function healthCheck(): Promise { const checks: HealthStatus['checks'] = {}; // Check PolicyCenter API checks.policycenter = await checkApiHealth('PolicyCenter', process.env.POLICYCENTER_URL!); // Check ClaimCenter API checks.claimcenter = await checkApiHealth('ClaimCenter', process.env.CLAIMCENTER_URL!); // Check BillingCenter API checks.billingcenter = await checkApiHealth('BillingCenter', process.env.BILLINGCENTER_URL!); // Check database connectivity checks.database = await checkDatabaseHealth(); // Check message queue checks.messageQueue = await checkMessageQueueHealth(); // Determine overall status const failedChecks = Object.values(checks).filter(c => c.status === 'fail'); let overallStatus: HealthStatus['status'] = 'healthy'; if (failedChecks.length > 0) { overallStatus = failedChecks.length >= 2 ? 'unhealthy' : 'degraded'; } return { status: overallStatus, version: process.env.APP_VERSION || 'unknown', timestamp: new Date().toISOString(), checks }; } async function checkApiHealth( name: string, baseUrl: string ): Promise<{ status: 'pass' | 'fail'; latency?: number; message?: string }> { const startTime = Date.now(); try { const response = await fetch(`${baseUrl}/common/v1/system-info`, { headers: { Authorization: `Bearer ${await getToken()}` }, signal: AbortSignal.timeout(5000) }); return { status: response.ok ? 'pass' : 'fail', latency: Date.now() - startTime, message: response.ok ? undefined : `HTTP ${response.status}` }; } catch (error) { return { status: 'fail', latency: Date.now() - startTime, message: error instanceof Error ? error.message : 'Unknown error' }; } } ``` ### Configuration Validation ```typescript // Validate production configuration interface ConfigValidationResult { valid: boolean; errors: string[]; warnings: string[]; } function validateProductionConfig(): ConfigValidationResult { const errors: string[] = []; const warnings: string[] = []; // Required environment variables const requiredVars = [ 'GW_TENANT_ID', 'GW_CLIENT_ID', 'GW_CLIENT_SECRET', 'GW_HUB_URL', 'POLICYCENTER_URL', 'CLAIMCENTER_URL', 'BILLINGCENTER_URL', 'DATABASE_URL', 'ENCRYPTION_KEY' ]; for (const varName of requiredVars) { if (!process.env[varName]) { errors.push(`Missing required environment variable: ${varName}`); } } // Check for development-only settings if (process.env.NODE_ENV !== 'production') { errors.push('NODE_ENV must be set to "production"'); } if (process.env.DEBUG === 'true') { warnings.push('DEBUG mode is enabled - disable for production'); } // Validate URLs are HTTPS const urlVars = ['GW_HUB_URL', 'POLICYCENTER_URL', 'CLAIMCENTER_URL', 'BILLINGCENTER_URL']; for (const urlVar of urlVars) { const url = process.env[urlVar]; if (url && !url.startsWith('https://')) { errors.push(`${urlVar} must use HTTPS`); } } // Check timeout settings const apiTimeout = parseInt(process.env.API_TIMEOUT_MS || '30000'); if (apiTimeout < 5000 || apiTimeout > 120000) { warnings.push(`API_TIMEOUT_MS (${apiTimeout}) should be between 5000-120000ms`); } return { valid: errors.length === 0, errors, warnings }; } ``` ### Pre-Deployment Verification ```bash #!/bin/bash # pre-deploy-check.sh echo "=== Guidewire Production Pre-Deployment Check ===" # Check required environment variables echo "Checking environment variables..." REQUIRED_VARS="GW_TENANT_ID GW_CLIENT_ID GW_HUB_URL" for var in $REQUIRED_VARS; do if [ -z "${!var}" ]; then echo "ERROR: Missing required variable: $var" exit 1 fi done echo "Environment variables OK" # Test API connectivity echo "Testing API connectivity..." TOKEN=$(curl -s -X POST "${GW_HUB_URL}/oauth/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials&client_id=${GW_CLIENT_ID}&client_secret=${GW_CLIENT_SECRET}" \ | jq -r '.access_token') if [ "$TOKEN" == "null" ] || [ -z "$TOKEN" ]; then echo "ERROR: Failed to obtain access token" exit 1 fi echo "Authentication OK" # Check PolicyCenter PC_STATUS=$(curl -s -o /dev/null -w "%{http_code}" \ "${POLICYCENTER_URL}/common/v1/system-info" \ -H "Authorization: Bearer ${TOKEN}") if [ "$PC_STATUS" != "200" ]; then echo "ERROR: PolicyCenter health check failed (HTTP $PC_STATUS)" exit 1 fi echo "PolicyCenter OK" # Check ClaimCenter CC_STATUS=$(curl -s -o /dev/null -w "%{http_code}" \ "${CLAIMCENTER_URL}/common/v1/system-info" \ -H "Authorization: Bearer ${TOKEN}") if [ "$CC_STATUS" != "200" ]; then echo "ERROR: ClaimCenter health check failed (HTTP $CC_STATUS)" exit 1 fi echo "ClaimCenter OK" echo "=== All pre-deployment checks passed ===" ``` ## Go-Live Runbook ### T-24 Hours 1. [ ] Final code freeze confirmed 2. [ ] All production secrets deployed to secret manager 3. [ ] DNS changes prepared (if applicable) 4. [ ] Notify stakeholders of deployment window ### T-4 Hours 1. [ ] Run pre-deployment verification script 2. [ ] Confirm monitoring dashboards accessible 3. [ ] Verify on-call team availability 4. [ ] Confirm rollback procedure ready ### T-0 Deployment 1. [ ] Deploy application to production 2. [ ] Run smoke tests 3. [ ] Verify health check endpoints 4. [ ] Monitor error rates for 30 minutes ### Post-Deployment 1. [ ] Document deployment time and version 2. [ ] Notify stakeholders of successful deployment 3. [ ] Monitor closely for 24 hours 4. [ ] Conduct post-deployment review ## Monitoring Dashboard Queries ```yaml # Key metrics to monitor dashboards: api_performance: panels: - title: Request Rate query: rate(http_requests_total[5m]) - title: Error Rate query: rate(http_requests_total{status=~"5.."}[5m]) - title: P95 Latency query: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) - title: Active Connections query: sum(guidewire_active_connections) business_metrics: panels: - title: Submissions Created query: rate(policycenter_submissions_created_total[1h]) - title: Claims Filed query: rate(claimcenter_claims_created_total[1h]) - title: Policies Issued query: rate(policycenter_policies_issued_total[1h]) ``` ## Rollback Procedure ```bash #!/bin/bash # rollback.sh echo "=== Starting Rollback ===" # Get previous version PREVIOUS_VERSION=$(kubectl get deployment my-app -o jsonpath='{.spec.template.spec.containers[0].image}' | cut -d: -f2) echo "Current version: $CURRENT_VERSION" echo "Rolling back to: $PREVIOUS_VERSION" # Perform rollback kubectl rollout undo deployment/my-app # Wait for rollback kubectl rollout status deployment/my-app --timeout=300s # Verify health HEALTH=$(curl -s http://my-app/health | jq -r '.status') if [ "$HEALTH" != "healthy" ]; then echo "WARNING: Health check failed after rollback" exit 1 fi echo "=== Rollback Complete ===" ``` ## Output - Completed production readiness checklist - Health check implementation - Configuration validation - Pre-deployment verification script - Go-live runbook ## Resources - [Guidewire Cloud Operations](https://docs.guidewire.com/cloud/) - [InsuranceSuite Best Practices](https://docs.guidewire.com/education/) ## Next Steps For upgrade and migration procedures, see `guidewire-upgrade-migration`.

Skill file: plugins/saas-packs/guidewire-pack/skills/guidewire-prod-checklist/SKILL.md