@cloudstreamsoftware/claude-tools 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -37
- package/agents/INDEX.md +183 -0
- package/agents/architect.md +247 -0
- package/agents/build-error-resolver.md +555 -0
- package/agents/catalyst-deployer.md +132 -0
- package/agents/code-reviewer.md +121 -0
- package/agents/compliance-auditor.md +148 -0
- package/agents/creator-architect.md +395 -0
- package/agents/deluge-reviewer.md +98 -0
- package/agents/doc-updater.md +471 -0
- package/agents/e2e-runner.md +711 -0
- package/agents/planner.md +122 -0
- package/agents/refactor-cleaner.md +309 -0
- package/agents/security-reviewer.md +582 -0
- package/agents/tdd-guide.md +302 -0
- package/config/versions.json +63 -0
- package/dist/hooks/hooks.json +209 -0
- package/dist/index.js +47 -0
- package/dist/lib/asset-value.js +609 -0
- package/dist/lib/client-manager.js +300 -0
- package/dist/lib/command-matcher.js +242 -0
- package/dist/lib/cross-session-patterns.js +754 -0
- package/dist/lib/intent-classifier.js +1075 -0
- package/dist/lib/package-manager.js +374 -0
- package/dist/lib/recommendation-engine.js +597 -0
- package/dist/lib/session-memory.js +489 -0
- package/dist/lib/skill-effectiveness.js +486 -0
- package/dist/lib/skill-matcher.js +595 -0
- package/dist/lib/tutorial-metrics.js +242 -0
- package/dist/lib/tutorial-progress.js +209 -0
- package/dist/lib/tutorial-renderer.js +431 -0
- package/dist/lib/utils.js +380 -0
- package/dist/lib/verify-formatter.js +143 -0
- package/dist/lib/workflow-state.js +249 -0
- package/hooks/hooks.json +209 -0
- package/package.json +5 -1
- package/scripts/aggregate-sessions.js +290 -0
- package/scripts/branch-name-validator.js +291 -0
- package/scripts/build.js +101 -0
- package/scripts/commands/client-switch.js +231 -0
- package/scripts/deprecate-skill.js +610 -0
- package/scripts/diagnose.js +324 -0
- package/scripts/doc-freshness.js +168 -0
- package/scripts/generate-weekly-digest.js +393 -0
- package/scripts/health-check.js +270 -0
- package/scripts/hooks/credential-check.js +101 -0
- package/scripts/hooks/evaluate-session.js +81 -0
- package/scripts/hooks/pre-compact.js +66 -0
- package/scripts/hooks/prompt-analyzer.js +276 -0
- package/scripts/hooks/prompt-router.js +422 -0
- package/scripts/hooks/quality-gate-enforcer.js +371 -0
- package/scripts/hooks/session-end.js +156 -0
- package/scripts/hooks/session-start.js +195 -0
- package/scripts/hooks/skill-injector.js +333 -0
- package/scripts/hooks/suggest-compact.js +58 -0
- package/scripts/lib/asset-value.js +609 -0
- package/scripts/lib/client-manager.js +300 -0
- package/scripts/lib/command-matcher.js +242 -0
- package/scripts/lib/cross-session-patterns.js +754 -0
- package/scripts/lib/intent-classifier.js +1075 -0
- package/scripts/lib/package-manager.js +374 -0
- package/scripts/lib/recommendation-engine.js +597 -0
- package/scripts/lib/session-memory.js +489 -0
- package/scripts/lib/skill-effectiveness.js +486 -0
- package/scripts/lib/skill-matcher.js +595 -0
- package/scripts/lib/tutorial-metrics.js +242 -0
- package/scripts/lib/tutorial-progress.js +209 -0
- package/scripts/lib/tutorial-renderer.js +431 -0
- package/scripts/lib/utils.js +380 -0
- package/scripts/lib/verify-formatter.js +143 -0
- package/scripts/lib/workflow-state.js +249 -0
- package/scripts/onboard.js +363 -0
- package/scripts/quarterly-report.js +692 -0
- package/scripts/setup-package-manager.js +204 -0
- package/scripts/sync-upstream.js +391 -0
- package/scripts/test.js +108 -0
- package/scripts/tutorial-runner.js +351 -0
- package/scripts/validate-all.js +201 -0
- package/scripts/verifiers/agents.js +245 -0
- package/scripts/verifiers/config.js +186 -0
- package/scripts/verifiers/environment.js +123 -0
- package/scripts/verifiers/hooks.js +188 -0
- package/scripts/verifiers/index.js +38 -0
- package/scripts/verifiers/persistence.js +140 -0
- package/scripts/verifiers/plugin.js +215 -0
- package/scripts/verifiers/skills.js +209 -0
- package/scripts/verify-setup.js +164 -0
- package/skills/INDEX.md +157 -0
- package/skills/backend-patterns/SKILL.md +586 -0
- package/skills/backend-patterns/catalyst-patterns.md +128 -0
- package/skills/bigquery-patterns/SKILL.md +27 -0
- package/skills/bigquery-patterns/performance-optimization.md +518 -0
- package/skills/bigquery-patterns/query-patterns.md +372 -0
- package/skills/bigquery-patterns/schema-design.md +78 -0
- package/skills/cloudstream-project-template/SKILL.md +20 -0
- package/skills/cloudstream-project-template/structure.md +65 -0
- package/skills/coding-standards/SKILL.md +524 -0
- package/skills/coding-standards/deluge-standards.md +83 -0
- package/skills/compliance-patterns/SKILL.md +28 -0
- package/skills/compliance-patterns/hipaa/audit-requirements.md +251 -0
- package/skills/compliance-patterns/hipaa/baa-process.md +298 -0
- package/skills/compliance-patterns/hipaa/data-archival-strategy.md +387 -0
- package/skills/compliance-patterns/hipaa/phi-handling.md +52 -0
- package/skills/compliance-patterns/pci-dss/saq-a-requirements.md +307 -0
- package/skills/compliance-patterns/pci-dss/tokenization-patterns.md +382 -0
- package/skills/compliance-patterns/pci-dss/zoho-checkout-patterns.md +56 -0
- package/skills/compliance-patterns/soc2/access-controls.md +344 -0
- package/skills/compliance-patterns/soc2/audit-logging.md +458 -0
- package/skills/compliance-patterns/soc2/change-management.md +403 -0
- package/skills/compliance-patterns/soc2/deluge-execution-logging.md +407 -0
- package/skills/consultancy-workflows/SKILL.md +19 -0
- package/skills/consultancy-workflows/client-isolation.md +21 -0
- package/skills/consultancy-workflows/documentation-automation.md +454 -0
- package/skills/consultancy-workflows/handoff-procedures.md +257 -0
- package/skills/consultancy-workflows/knowledge-capture.md +513 -0
- package/skills/consultancy-workflows/time-tracking.md +26 -0
- package/skills/continuous-learning/SKILL.md +84 -0
- package/skills/continuous-learning/config.json +18 -0
- package/skills/continuous-learning/evaluate-session.sh +60 -0
- package/skills/continuous-learning-v2/SKILL.md +126 -0
- package/skills/continuous-learning-v2/config.json +61 -0
- package/skills/frontend-patterns/SKILL.md +635 -0
- package/skills/frontend-patterns/zoho-widget-patterns.md +103 -0
- package/skills/gcp-data-engineering/SKILL.md +36 -0
- package/skills/gcp-data-engineering/bigquery/performance-optimization.md +337 -0
- package/skills/gcp-data-engineering/dataflow/error-handling.md +496 -0
- package/skills/gcp-data-engineering/dataflow/pipeline-patterns.md +444 -0
- package/skills/gcp-data-engineering/dbt/model-organization.md +63 -0
- package/skills/gcp-data-engineering/dbt/testing-patterns.md +503 -0
- package/skills/gcp-data-engineering/medallion-architecture/bronze-layer.md +60 -0
- package/skills/gcp-data-engineering/medallion-architecture/gold-layer.md +311 -0
- package/skills/gcp-data-engineering/medallion-architecture/layer-transitions.md +517 -0
- package/skills/gcp-data-engineering/medallion-architecture/silver-layer.md +305 -0
- package/skills/gcp-data-engineering/zoho-to-gcp/data-extraction.md +543 -0
- package/skills/gcp-data-engineering/zoho-to-gcp/real-time-vs-batch.md +337 -0
- package/skills/security-review/SKILL.md +498 -0
- package/skills/security-review/compliance-checklist.md +53 -0
- package/skills/strategic-compact/SKILL.md +67 -0
- package/skills/tdd-workflow/SKILL.md +413 -0
- package/skills/tdd-workflow/zoho-testing.md +124 -0
- package/skills/tutorial/SKILL.md +249 -0
- package/skills/tutorial/docs/ACCESSIBILITY.md +169 -0
- package/skills/tutorial/lessons/00-philosophy-and-workflow.md +198 -0
- package/skills/tutorial/lessons/01-basics.md +81 -0
- package/skills/tutorial/lessons/02-training.md +86 -0
- package/skills/tutorial/lessons/03-commands.md +109 -0
- package/skills/tutorial/lessons/04-workflows.md +115 -0
- package/skills/tutorial/lessons/05-compliance.md +116 -0
- package/skills/tutorial/lessons/06-zoho.md +121 -0
- package/skills/tutorial/lessons/07-hooks-system.md +277 -0
- package/skills/tutorial/lessons/08-mcp-servers.md +316 -0
- package/skills/tutorial/lessons/09-client-management.md +215 -0
- package/skills/tutorial/lessons/10-testing-e2e.md +260 -0
- package/skills/tutorial/lessons/11-skills-deep-dive.md +272 -0
- package/skills/tutorial/lessons/12-rules-system.md +326 -0
- package/skills/tutorial/lessons/13-golden-standard-graduation.md +213 -0
- package/skills/tutorial/lessons/14-fork-setup-and-sync.md +312 -0
- package/skills/tutorial/lessons/15-living-examples-system.md +221 -0
- package/skills/tutorial/tracks/accelerated/README.md +134 -0
- package/skills/tutorial/tracks/accelerated/assessment/checkpoint-1.md +161 -0
- package/skills/tutorial/tracks/accelerated/assessment/checkpoint-2.md +175 -0
- package/skills/tutorial/tracks/accelerated/day-1-core-concepts.md +234 -0
- package/skills/tutorial/tracks/accelerated/day-2-essential-commands.md +270 -0
- package/skills/tutorial/tracks/accelerated/day-3-workflow-mastery.md +305 -0
- package/skills/tutorial/tracks/accelerated/day-4-compliance-zoho.md +304 -0
- package/skills/tutorial/tracks/accelerated/day-5-hooks-skills.md +344 -0
- package/skills/tutorial/tracks/accelerated/day-6-client-testing.md +386 -0
- package/skills/tutorial/tracks/accelerated/day-7-graduation.md +369 -0
- package/skills/zoho-patterns/CHANGELOG.md +108 -0
- package/skills/zoho-patterns/SKILL.md +446 -0
- package/skills/zoho-patterns/analytics/dashboard-patterns.md +352 -0
- package/skills/zoho-patterns/analytics/zoho-to-bigquery-pipeline.md +427 -0
- package/skills/zoho-patterns/catalyst/appsail-deployment.md +349 -0
- package/skills/zoho-patterns/catalyst/context-close-patterns.md +354 -0
- package/skills/zoho-patterns/catalyst/cron-batch-processing.md +374 -0
- package/skills/zoho-patterns/catalyst/function-patterns.md +439 -0
- package/skills/zoho-patterns/creator/form-design.md +304 -0
- package/skills/zoho-patterns/creator/publish-api-patterns.md +313 -0
- package/skills/zoho-patterns/creator/widget-integration.md +306 -0
- package/skills/zoho-patterns/creator/workflow-automation.md +253 -0
- package/skills/zoho-patterns/deluge/api-patterns.md +468 -0
- package/skills/zoho-patterns/deluge/batch-processing.md +403 -0
- package/skills/zoho-patterns/deluge/cross-app-integration.md +356 -0
- package/skills/zoho-patterns/deluge/error-handling.md +423 -0
- package/skills/zoho-patterns/deluge/syntax-reference.md +65 -0
- package/skills/zoho-patterns/integration/cors-proxy-architecture.md +426 -0
- package/skills/zoho-patterns/integration/crm-books-native-sync.md +277 -0
- package/skills/zoho-patterns/integration/oauth-token-management.md +461 -0
- package/skills/zoho-patterns/integration/zoho-flow-patterns.md +334 -0
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
# SOC 2 Change Management
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Zoho Creator does **NOT** have native change management capabilities. There is no built-in version control, no approval workflow for schema changes, and no automatic change tracking for form/workflow modifications. SOC 2 Trust Service Criteria CC8.1 requires that changes to infrastructure, data, software, and procedures are authorized, tested, and approved before implementation.
|
|
6
|
+
|
|
7
|
+
This document defines the custom change management process CloudStream builds for SOC 2-compliant Creator implementations.
|
|
8
|
+
|
|
9
|
+
> **WARNING**: Every change to a production Creator application must go through this process. "Quick fixes" deployed directly to production are SOC 2 audit failures -- no exceptions.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Custom Change Management Workflow
|
|
14
|
+
|
|
15
|
+
### Process Flow
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
Change Identified
|
|
19
|
+
|
|
|
20
|
+
v
|
|
21
|
+
Change Request Form Submitted (Requester)
|
|
22
|
+
|
|
|
23
|
+
v
|
|
24
|
+
Initial Triage (IT Admin, < 4 hours)
|
|
25
|
+
|
|
|
26
|
+
+-- Incomplete --> Return to requester for more info
|
|
27
|
+
|
|
|
28
|
+
v
|
|
29
|
+
Technical Review (Developer/Reviewer)
|
|
30
|
+
|
|
|
31
|
+
+-- Rejected --> Notify requester with rationale
|
|
32
|
+
|
|
|
33
|
+
v
|
|
34
|
+
Testing in Dev/Staging Environment
|
|
35
|
+
|
|
|
36
|
+
v
|
|
37
|
+
Test Results Documented
|
|
38
|
+
|
|
|
39
|
+
v
|
|
40
|
+
Approval (Change Approver - NOT the developer)
|
|
41
|
+
|
|
|
42
|
+
+-- Denied --> Return for rework
|
|
43
|
+
|
|
|
44
|
+
v
|
|
45
|
+
Scheduled Deployment Window
|
|
46
|
+
|
|
|
47
|
+
v
|
|
48
|
+
Production Deployment (by authorized deployer)
|
|
49
|
+
|
|
|
50
|
+
v
|
|
51
|
+
Post-Implementation Verification
|
|
52
|
+
|
|
|
53
|
+
v
|
|
54
|
+
Change Record Closed
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Change Request Form Design
|
|
60
|
+
|
|
61
|
+
### Creator Form: Change_Requests
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
Fields:
|
|
65
|
+
- CR_ID (Auto-number, format: CR-YYYY-####)
|
|
66
|
+
- Request_Date (DateTime, auto-populated)
|
|
67
|
+
- Requester (Lookup to Employees)
|
|
68
|
+
- Change_Type (Picklist):
|
|
69
|
+
- New Feature
|
|
70
|
+
- Enhancement
|
|
71
|
+
- Bug Fix
|
|
72
|
+
- Configuration Change
|
|
73
|
+
- Security Patch
|
|
74
|
+
- Emergency Fix
|
|
75
|
+
- Priority (Picklist: Low/Medium/High/Critical)
|
|
76
|
+
- Title (Single Line, required)
|
|
77
|
+
- Description (Multi Line, required)
|
|
78
|
+
- Business_Justification (Multi Line, required)
|
|
79
|
+
- Affected_Forms (Multi Select Lookup to Form_Inventory)
|
|
80
|
+
- Affected_Workflows (Multi Line)
|
|
81
|
+
- Risk_Assessment (Picklist: Low/Medium/High)
|
|
82
|
+
- Rollback_Plan (Multi Line, required)
|
|
83
|
+
- Testing_Requirements (Multi Line, required)
|
|
84
|
+
- Target_Date (Date)
|
|
85
|
+
- Status (Picklist):
|
|
86
|
+
- Draft
|
|
87
|
+
- Submitted
|
|
88
|
+
- In Review
|
|
89
|
+
- Testing
|
|
90
|
+
- Approved
|
|
91
|
+
- Scheduled
|
|
92
|
+
- Deployed
|
|
93
|
+
- Verified
|
|
94
|
+
- Closed
|
|
95
|
+
- Rejected
|
|
96
|
+
- Rolled Back
|
|
97
|
+
- Assigned_Reviewer (Lookup to Employees)
|
|
98
|
+
- Assigned_Approver (Lookup to Employees)
|
|
99
|
+
- Assigned_Deployer (Lookup to Employees)
|
|
100
|
+
- Review_Notes (Multi Line)
|
|
101
|
+
- Approval_Date (DateTime)
|
|
102
|
+
- Deployment_Date (DateTime)
|
|
103
|
+
- Verification_Date (DateTime)
|
|
104
|
+
- Related_Ticket (Single Line - link to support ticket/Jira)
|
|
105
|
+
- Client_ID (Lookup to Clients)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Approval Workflow (Requester -> Reviewer -> Approver)
|
|
111
|
+
|
|
112
|
+
### Role Definitions
|
|
113
|
+
|
|
114
|
+
| Role | Responsibility | Cannot Also Be |
|
|
115
|
+
|---|---|---|
|
|
116
|
+
| **Requester** | Submits change request, provides justification | Approver for same change |
|
|
117
|
+
| **Reviewer** | Technical review, validates testing | - |
|
|
118
|
+
| **Approver** | Authorizes production deployment | Requester or Developer for same change |
|
|
119
|
+
| **Deployer** | Executes production deployment | Developer for same change (separation of duties) |
|
|
120
|
+
|
|
121
|
+
### Approval Workflow Deluge Script
|
|
122
|
+
|
|
123
|
+
```deluge
|
|
124
|
+
// On Change_Request status change
|
|
125
|
+
// Enforce separation of duties and routing
|
|
126
|
+
|
|
127
|
+
on workflow "CR_Status_Change" for Change_Requests
|
|
128
|
+
|
|
129
|
+
if (input.Status == "Submitted") {
|
|
130
|
+
// Auto-assign reviewer based on affected forms
|
|
131
|
+
reviewer = getReviewerForForms(input.Affected_Forms);
|
|
132
|
+
input.Assigned_Reviewer = reviewer;
|
|
133
|
+
input.Status = "In Review";
|
|
134
|
+
|
|
135
|
+
sendmail [
|
|
136
|
+
to: reviewer.Email,
|
|
137
|
+
subject: "Change Request Awaiting Review: " + input.CR_ID,
|
|
138
|
+
message: "Please review CR " + input.CR_ID + ": " + input.Title
|
|
139
|
+
];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (input.Status == "Approved") {
|
|
143
|
+
// Validate approver is not the requester
|
|
144
|
+
if (input.Assigned_Approver == input.Requester) {
|
|
145
|
+
alert "Approver cannot be the same person as the Requester (Separation of Duties)";
|
|
146
|
+
input.Status = "In Review";
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
input.Approval_Date = zoho.currenttime;
|
|
151
|
+
|
|
152
|
+
// Log approval in audit trail
|
|
153
|
+
insert into HIPAA_Audit_Log [
|
|
154
|
+
Action_Type = "Change Approved",
|
|
155
|
+
User_Email = zoho.loginuserid,
|
|
156
|
+
Form_Name = "Change_Requests",
|
|
157
|
+
Record_ID = input.ID,
|
|
158
|
+
Justification = "CR " + input.CR_ID + " approved for deployment"
|
|
159
|
+
];
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Testing Requirements Before Promotion
|
|
166
|
+
|
|
167
|
+
### Minimum Testing Checklist
|
|
168
|
+
|
|
169
|
+
| Test Type | Required For | Evidence |
|
|
170
|
+
|---|---|---|
|
|
171
|
+
| Unit testing | All code changes | Test results documented |
|
|
172
|
+
| Integration testing | Multi-form changes | End-to-end test results |
|
|
173
|
+
| Regression testing | Any workflow changes | Existing functionality verified |
|
|
174
|
+
| User acceptance testing | New features | Client sign-off |
|
|
175
|
+
| Security testing | Permission changes | Access matrix validated |
|
|
176
|
+
| Performance testing | Bulk data changes | Load test results |
|
|
177
|
+
| Rollback testing | All changes | Rollback procedure verified |
|
|
178
|
+
|
|
179
|
+
### Test Documentation Template
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
## Test Results for CR-2025-0042
|
|
183
|
+
|
|
184
|
+
### Test Environment
|
|
185
|
+
- Organization: dev-client-org
|
|
186
|
+
- Date: 2025-02-10
|
|
187
|
+
- Tester: developer@cloudstreamsoftware.com
|
|
188
|
+
|
|
189
|
+
### Tests Performed
|
|
190
|
+
1. [PASS] New field displays correctly for Admin role
|
|
191
|
+
2. [PASS] New field hidden for Standard User role
|
|
192
|
+
3. [PASS] Workflow triggers on field update
|
|
193
|
+
4. [PASS] Existing approval workflow still functions
|
|
194
|
+
5. [PASS] Export includes new field for authorized roles
|
|
195
|
+
6. [PASS] Rollback: removing field does not corrupt existing data
|
|
196
|
+
|
|
197
|
+
### Test Data
|
|
198
|
+
- Records tested: 50 (synthetic data)
|
|
199
|
+
- Edge cases: Empty values, max-length strings, special characters
|
|
200
|
+
|
|
201
|
+
### Recommendation
|
|
202
|
+
Ready for production deployment.
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Rollback Procedures
|
|
208
|
+
|
|
209
|
+
### Pre-Deployment Rollback Preparation
|
|
210
|
+
|
|
211
|
+
Before ANY production deployment:
|
|
212
|
+
|
|
213
|
+
1. **Document** current state of all affected forms/workflows
|
|
214
|
+
2. **Export** current form configuration (screenshots + field list)
|
|
215
|
+
3. **Backup** any data that will be migrated/modified
|
|
216
|
+
4. **Test** the rollback procedure in staging
|
|
217
|
+
5. **Define** rollback trigger criteria (what constitutes a failed deployment)
|
|
218
|
+
|
|
219
|
+
### Rollback Decision Matrix
|
|
220
|
+
|
|
221
|
+
| Severity | Condition | Action | Timeline |
|
|
222
|
+
|---|---|---|---|
|
|
223
|
+
| Critical | Data loss or corruption | Immediate rollback | < 15 minutes |
|
|
224
|
+
| High | Core functionality broken | Rollback within 1 hour | < 1 hour |
|
|
225
|
+
| Medium | Non-critical feature broken | Assess fix-forward vs rollback | < 4 hours |
|
|
226
|
+
| Low | Cosmetic/minor issues | Fix-forward in next change | Next business day |
|
|
227
|
+
|
|
228
|
+
### Rollback Documentation
|
|
229
|
+
|
|
230
|
+
```deluge
|
|
231
|
+
// When rollback is executed, log it
|
|
232
|
+
if (input.Status == "Rolled Back") {
|
|
233
|
+
input.Rollback_Date = zoho.currenttime;
|
|
234
|
+
input.Rollback_Reason = input.Rollback_Notes;
|
|
235
|
+
|
|
236
|
+
insert into HIPAA_Audit_Log [
|
|
237
|
+
Action_Type = "Change Rolled Back",
|
|
238
|
+
User_Email = zoho.loginuserid,
|
|
239
|
+
Form_Name = "Change_Requests",
|
|
240
|
+
Record_ID = input.ID,
|
|
241
|
+
Justification = "Rollback: " + input.Rollback_Notes
|
|
242
|
+
];
|
|
243
|
+
|
|
244
|
+
// Notify stakeholders
|
|
245
|
+
sendmail [
|
|
246
|
+
to: input.Requester.Email + "," + input.Assigned_Approver.Email,
|
|
247
|
+
subject: "ROLLBACK: " + input.CR_ID + " has been rolled back",
|
|
248
|
+
message: "Change " + input.CR_ID + " was rolled back. Reason: " + input.Rollback_Notes
|
|
249
|
+
];
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Emergency Change Process
|
|
256
|
+
|
|
257
|
+
> **WARNING**: Emergency changes still require documentation -- they just follow an accelerated timeline. "We'll document it later" is an audit failure. Document in real-time.
|
|
258
|
+
|
|
259
|
+
### Emergency Change Criteria
|
|
260
|
+
|
|
261
|
+
An emergency change is ONLY justified when:
|
|
262
|
+
- Production system is DOWN and users cannot work
|
|
263
|
+
- Active security breach requiring immediate remediation
|
|
264
|
+
- Data loss is actively occurring
|
|
265
|
+
- Regulatory deadline will be missed
|
|
266
|
+
|
|
267
|
+
### Emergency Change Process
|
|
268
|
+
|
|
269
|
+
| Step | Standard Process | Emergency Process |
|
|
270
|
+
|---|---|---|
|
|
271
|
+
| Request | Full form | Abbreviated (title + description + justification) |
|
|
272
|
+
| Review | Technical reviewer | Verbal approval from on-call lead |
|
|
273
|
+
| Testing | Full test suite | Smoke test only |
|
|
274
|
+
| Approval | Formal approver sign-off | Verbal + post-hoc written |
|
|
275
|
+
| Deployment | Scheduled window | Immediate |
|
|
276
|
+
| Documentation | Pre-deployment | Within 24 hours post-deployment |
|
|
277
|
+
| Post-review | Standard | Mandatory within 48 hours |
|
|
278
|
+
|
|
279
|
+
### Emergency Change Form Fields (Minimum)
|
|
280
|
+
|
|
281
|
+
```
|
|
282
|
+
- ECR_ID (Auto-number: ECR-YYYY-####)
|
|
283
|
+
- Title (Single Line)
|
|
284
|
+
- Description (Multi Line)
|
|
285
|
+
- Justification (Multi Line)
|
|
286
|
+
- Verbal_Approver (Single Line)
|
|
287
|
+
- Deployed_By (auto: current user)
|
|
288
|
+
- Deployed_At (auto: current timestamp)
|
|
289
|
+
- Post_Hoc_Review_Due (auto: deployed_at + 48 hours)
|
|
290
|
+
- Full_Documentation_Due (auto: deployed_at + 24 hours)
|
|
291
|
+
- Status (Picklist: Deployed/Documented/Reviewed/Closed)
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## Change Log Retention
|
|
297
|
+
|
|
298
|
+
### Retention Requirements
|
|
299
|
+
|
|
300
|
+
| Record Type | Retention Period | Storage Location |
|
|
301
|
+
|---|---|---|
|
|
302
|
+
| Change Requests | Duration of SOC 2 audit period + 1 year | Creator + BigQuery archive |
|
|
303
|
+
| Test Results | Same as Change Request | Attached to CR record |
|
|
304
|
+
| Approval Evidence | Same as Change Request | CR audit trail |
|
|
305
|
+
| Deployment Logs | Same as Change Request | CR + system logs |
|
|
306
|
+
| Rollback Records | Same as Change Request | CR record |
|
|
307
|
+
| Emergency Changes | Same + additional scrutiny | CR with ECR flag |
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## Linking Changes to Tickets/Requests
|
|
312
|
+
|
|
313
|
+
### Required Traceability
|
|
314
|
+
|
|
315
|
+
Every change MUST link to a business justification:
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
Support Ticket / Feature Request / Bug Report
|
|
319
|
+
|
|
|
320
|
+
+--> Change Request (CR-YYYY-####)
|
|
321
|
+
|
|
|
322
|
+
+--> Git Commits (if applicable)
|
|
323
|
+
|
|
|
324
|
+
+--> Test Results
|
|
325
|
+
|
|
|
326
|
+
+--> Deployment Record
|
|
327
|
+
|
|
|
328
|
+
+--> Verification
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### Linking in Practice
|
|
332
|
+
|
|
333
|
+
```deluge
|
|
334
|
+
// Validate that every CR has a related ticket
|
|
335
|
+
on validate "Change_Requests"
|
|
336
|
+
|
|
337
|
+
if (input.Related_Ticket == null || input.Related_Ticket == "") {
|
|
338
|
+
if (input.Change_Type != "Emergency Fix") {
|
|
339
|
+
alert "A related ticket/request number is required for all non-emergency changes.";
|
|
340
|
+
return false;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
## Post-Implementation Review
|
|
348
|
+
|
|
349
|
+
### Review Checklist (Within 5 Business Days of Deployment)
|
|
350
|
+
|
|
351
|
+
- [ ] Deployment completed successfully (no rollback)
|
|
352
|
+
- [ ] All test cases pass in production
|
|
353
|
+
- [ ] No unexpected errors in application logs
|
|
354
|
+
- [ ] Performance metrics within acceptable range
|
|
355
|
+
- [ ] User feedback collected (if applicable)
|
|
356
|
+
- [ ] Access permissions correct post-change
|
|
357
|
+
- [ ] Audit logging captures new/modified actions
|
|
358
|
+
- [ ] Documentation updated (architecture, runbook, API docs)
|
|
359
|
+
- [ ] Change request record fully completed and closed
|
|
360
|
+
- [ ] Lessons learned documented (if applicable)
|
|
361
|
+
|
|
362
|
+
### Post-Implementation Review Meeting (For Major Changes)
|
|
363
|
+
|
|
364
|
+
Attendees: Requester, Developer, Reviewer, Approver, Client Stakeholder
|
|
365
|
+
|
|
366
|
+
Agenda:
|
|
367
|
+
1. Change summary and business outcome
|
|
368
|
+
2. Deployment experience (smooth vs. issues)
|
|
369
|
+
3. Anything that should be done differently
|
|
370
|
+
4. Follow-up items identified
|
|
371
|
+
5. Close the change request
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## Audit Trail of All Changes
|
|
376
|
+
|
|
377
|
+
### What Auditors Will Request
|
|
378
|
+
|
|
379
|
+
SOC 2 auditors will ask for:
|
|
380
|
+
|
|
381
|
+
1. **Complete list** of all changes in the audit period
|
|
382
|
+
2. **Sample selection** (typically 25-30 changes) for detailed review
|
|
383
|
+
3. **Evidence** of approval for each sampled change
|
|
384
|
+
4. **Evidence** of testing for each sampled change
|
|
385
|
+
5. **Evidence** of separation of duties
|
|
386
|
+
6. **Emergency change** review and post-hoc documentation
|
|
387
|
+
7. **Rollback** instances and root cause analysis
|
|
388
|
+
|
|
389
|
+
### Audit-Ready Report Query
|
|
390
|
+
|
|
391
|
+
```deluge
|
|
392
|
+
// Generate change log report for audit period
|
|
393
|
+
auditStart = "2024-01-01";
|
|
394
|
+
auditEnd = "2024-12-31";
|
|
395
|
+
|
|
396
|
+
changes = zoho.creator.getRecords("app", "Change_Requests",
|
|
397
|
+
"(Request_Date >= \"" + auditStart + "\" && Request_Date <= \"" + auditEnd + "\")",
|
|
398
|
+
1, 200);
|
|
399
|
+
|
|
400
|
+
// Export as CSV with all required fields for auditor review
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
> **WARNING**: Run this report quarterly to ensure data is complete and no changes were missed. Do not wait until the audit to discover gaps in your change log.
|