@khester/create-dynamics-app 1.0.8 → 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.
Files changed (107) hide show
  1. package/bin/create-dynamics-app.js +1 -1
  2. package/dist/index.js +140 -15
  3. package/dist/index.js.map +1 -1
  4. package/dist/utils/consultingHelpers.d.ts +13 -0
  5. package/dist/utils/consultingHelpers.d.ts.map +1 -0
  6. package/dist/utils/consultingHelpers.js +569 -0
  7. package/dist/utils/consultingHelpers.js.map +1 -0
  8. package/dist/utils/copyTemplate.d.ts.map +1 -1
  9. package/dist/utils/copyTemplate.js.map +1 -1
  10. package/dist/utils/initGit.d.ts.map +1 -1
  11. package/dist/utils/initGit.js.map +1 -1
  12. package/dist/utils/installDependencies.d.ts.map +1 -1
  13. package/dist/utils/installDependencies.js +3 -2
  14. package/dist/utils/installDependencies.js.map +1 -1
  15. package/dist/utils/updatePackageJson.d.ts +1 -1
  16. package/dist/utils/updatePackageJson.d.ts.map +1 -1
  17. package/dist/utils/updatePackageJson.js +11 -1
  18. package/dist/utils/updatePackageJson.js.map +1 -1
  19. package/package.json +1 -1
  20. package/templates/dynamics-365-starter/INTEGRATION_TEST_RESULTS.md +302 -0
  21. package/templates/dynamics-365-starter/PHASE_4_COMPLETION_SUMMARY.md +305 -0
  22. package/templates/dynamics-365-starter/README.md +566 -137
  23. package/templates/dynamics-365-starter/deployment/QUICKSTART-MAC.md +507 -0
  24. package/templates/dynamics-365-starter/deployment/QUICKSTART-WINDOWS.md +372 -0
  25. package/templates/dynamics-365-starter/deployment/README.md +484 -0
  26. package/templates/dynamics-365-starter/deployment/pipelines/README.md +375 -0
  27. package/templates/dynamics-365-starter/deployment/pipelines/azure-pipelines.yml +330 -0
  28. package/templates/dynamics-365-starter/deployment/pipelines/github-actions.yml +422 -0
  29. package/templates/dynamics-365-starter/deployment/pipelines/jenkins.groovy +636 -0
  30. package/templates/dynamics-365-starter/deployment/scripts/deploy.ps1 +417 -0
  31. package/templates/dynamics-365-starter/deployment/scripts/deploy.sh +582 -0
  32. package/templates/dynamics-365-starter/deployment/scripts/team-onboarding.ps1 +486 -0
  33. package/templates/dynamics-365-starter/deployment/scripts/team-onboarding.sh +567 -0
  34. package/templates/dynamics-365-starter/deployment/scripts/validate-setup.ps1 +703 -0
  35. package/templates/dynamics-365-starter/deployment/scripts/validate-setup.sh +671 -0
  36. package/templates/dynamics-365-starter/docs/ARCHITECTURE_OVERVIEW.md +506 -0
  37. package/templates/dynamics-365-starter/docs/BEST_PRACTICES.md +723 -0
  38. package/templates/dynamics-365-starter/docs/MIGRATION_GUIDE.md +447 -0
  39. package/templates/dynamics-365-starter/docs/team-standards/README.md +273 -0
  40. package/templates/dynamics-365-starter/docs/team-standards/client-onboarding.md +577 -0
  41. package/templates/dynamics-365-starter/docs/team-standards/code-review-checklist.md +359 -0
  42. package/templates/dynamics-365-starter/docs/team-standards/coding-standards.md +700 -0
  43. package/templates/dynamics-365-starter/docs/team-standards/cross-platform-team-guide.md +736 -0
  44. package/templates/dynamics-365-starter/docs/team-standards/development-workflows.md +727 -0
  45. package/templates/dynamics-365-starter/docs/troubleshooting/common-errors.md +758 -0
  46. package/templates/dynamics-365-starter/docs/troubleshooting/platform-specific-issues.md +878 -0
  47. package/templates/dynamics-365-starter/package.json +22 -1
  48. package/templates/dynamics-365-starter/public/index.html +8 -11
  49. package/templates/dynamics-365-starter/scripts/custom-build.js +255 -0
  50. package/templates/dynamics-365-starter/src/client-project-template/README.md +234 -0
  51. package/templates/dynamics-365-starter/src/client-project-template/config/client.template.json +114 -0
  52. package/templates/dynamics-365-starter/src/client-project-template/config/environments/template.json +186 -0
  53. package/templates/dynamics-365-starter/src/client-project-template/scripts/client-setup.js +667 -0
  54. package/templates/dynamics-365-starter/src/components/AccountForm.css +71 -0
  55. package/templates/dynamics-365-starter/src/components/AccountForm.tsx +541 -0
  56. package/templates/dynamics-365-starter/src/components/AccountManagement.css +86 -0
  57. package/templates/dynamics-365-starter/src/components/AccountManagement.tsx +370 -0
  58. package/templates/dynamics-365-starter/src/components/ContactForm.tsx +149 -63
  59. package/templates/dynamics-365-starter/src/components/ContactManagement.tsx +153 -63
  60. package/templates/dynamics-365-starter/src/components/Logging/LogDialog.tsx +291 -0
  61. package/templates/dynamics-365-starter/src/components/Logging/LoggingContext.tsx +166 -0
  62. package/templates/dynamics-365-starter/src/components/Logging/LoggingDebugPanel.css +192 -0
  63. package/templates/dynamics-365-starter/src/components/Logging/LoggingDebugPanel.tsx +177 -0
  64. package/templates/dynamics-365-starter/src/components/Logging/LoggingProvider.tsx +3 -0
  65. package/templates/dynamics-365-starter/src/components/Logging/logger.ts +193 -0
  66. package/templates/dynamics-365-starter/src/constants/account.ts +410 -0
  67. package/templates/dynamics-365-starter/src/constants/contact.ts +362 -0
  68. package/templates/dynamics-365-starter/src/examples/README.md +52 -0
  69. package/templates/dynamics-365-starter/src/examples/component-examples/opportunity-management.tsx +625 -0
  70. package/templates/dynamics-365-starter/src/examples/entity-examples/opportunity-model.ts +545 -0
  71. package/templates/dynamics-365-starter/src/examples/integration-examples/custom-pcf-wrapper.tsx +722 -0
  72. package/templates/dynamics-365-starter/src/examples/workflow-examples/sales-workflow.ts +662 -0
  73. package/templates/dynamics-365-starter/src/index.tsx +107 -19
  74. package/templates/dynamics-365-starter/src/models/Account.ts +480 -0
  75. package/templates/dynamics-365-starter/src/models/BaseEntity.ts +204 -0
  76. package/templates/dynamics-365-starter/src/models/Contact.ts +580 -0
  77. package/templates/dynamics-365-starter/src/page-templates/EntityDashboard.tsx +519 -0
  78. package/templates/dynamics-365-starter/src/page-templates/EntityDetailPage.tsx +456 -0
  79. package/templates/dynamics-365-starter/src/page-templates/EntityListPage.tsx +406 -0
  80. package/templates/dynamics-365-starter/src/page-templates/RelatedEntitiesPage.tsx +578 -0
  81. package/templates/dynamics-365-starter/src/page-templates/SearchPage.tsx +629 -0
  82. package/templates/dynamics-365-starter/src/pcf/ContactControlWrapper.tsx +75 -22
  83. package/templates/dynamics-365-starter/src/pcf/MultiEntityControlWrapper.tsx +205 -0
  84. package/templates/dynamics-365-starter/src/providers/DynamicsProvider.tsx +297 -80
  85. package/templates/dynamics-365-starter/src/services/MockApiService.ts +260 -0
  86. package/templates/dynamics-365-starter/src/services/ServiceFactory.ts +65 -0
  87. package/templates/dynamics-365-starter/src/services/XrmApiService.ts +213 -0
  88. package/templates/dynamics-365-starter/src/styles/index.css +74 -7
  89. package/templates/dynamics-365-starter/tools/entity-generator/index.js +168 -0
  90. package/templates/dynamics-365-starter/tools/entity-generator/templates/constants.template.ts +124 -0
  91. package/templates/dynamics-365-starter/tools/entity-generator/templates/form.template.css +283 -0
  92. package/templates/dynamics-365-starter/tools/entity-generator/templates/form.template.tsx +275 -0
  93. package/templates/dynamics-365-starter/tools/entity-generator/templates/management.template.css +204 -0
  94. package/templates/dynamics-365-starter/tools/entity-generator/templates/management.template.tsx +413 -0
  95. package/templates/dynamics-365-starter/tools/entity-generator/templates/model.template.ts +250 -0
  96. package/templates/dynamics-365-starter/tools/metadata-sync/d365-client.js +410 -0
  97. package/templates/dynamics-365-starter/tools/metadata-sync/index.js +512 -0
  98. package/templates/dynamics-365-starter/tools/metadata-sync/type-generator.js +675 -0
  99. package/templates/dynamics-365-starter/tsconfig.json +11 -8
  100. package/templates/dynamics-365-starter/webpack.config.js +8 -9
  101. package/templates/power-pages-starter/README.md +7 -1
  102. package/templates/power-pages-starter/public/index.html +8 -11
  103. package/templates/power-pages-starter/src/components/ContactForm.tsx +60 -41
  104. package/templates/power-pages-starter/src/index.tsx +3 -3
  105. package/templates/power-pages-starter/src/providers/PowerPagesProvider.tsx +46 -23
  106. package/templates/power-pages-starter/tsconfig.json +3 -9
  107. package/templates/power-pages-starter/webpack.config.js +8 -3
@@ -0,0 +1,484 @@
1
+ # Deployment Automation Suite
2
+
3
+ This directory contains comprehensive deployment automation tools for Dynamics 365 consulting
4
+ projects.
5
+
6
+ ## Overview
7
+
8
+ The deployment automation suite provides:
9
+
10
+ - **Cross-platform deployment scripts** (PowerShell and Bash)
11
+ - **Environment-specific configuration management**
12
+ - **Automated backup and rollback capabilities**
13
+ - **Web resource and solution deployment**
14
+ - **Post-deployment testing and validation**
15
+ - **Notification and reporting systems**
16
+
17
+ ## Directory Structure
18
+
19
+ ```
20
+ deployment/
21
+ ├── scripts/
22
+ │ ├── deploy.ps1 # PowerShell deployment script (Windows)
23
+ │ ├── deploy.sh # Bash deployment script (Linux/macOS)
24
+ │ ├── rollback.ps1 # Rollback automation
25
+ │ └── health-check.ps1 # Environment health monitoring
26
+ ├── templates/
27
+ │ ├── solution-template.xml # Solution deployment template
28
+ │ └── web-resource-config.json # Web resource configuration
29
+ ├── logs/ # Deployment logs (auto-created)
30
+ ├── backups/ # Environment backups (auto-created)
31
+ ├── pipelines/
32
+ │ ├── azure-pipelines.yml # Azure DevOps pipeline
33
+ │ ├── github-actions.yml # GitHub Actions workflow
34
+ │ └── jenkins.groovy # Jenkins pipeline
35
+ └── README.md # This file
36
+ ```
37
+
38
+ ## Quick Start
39
+
40
+ ### Prerequisites
41
+
42
+ #### For PowerShell (Windows)
43
+
44
+ ```powershell
45
+ # Install required PowerShell modules
46
+ Install-Module -Name Microsoft.PowerApps.Administration.PowerShell
47
+ Install-Module -Name Microsoft.PowerApps.PowerShell
48
+ ```
49
+
50
+ #### For Bash (Linux/macOS)
51
+
52
+ ```bash
53
+ # Install required tools
54
+ brew install jq curl node npm # macOS
55
+ # or
56
+ apt-get install jq curl nodejs npm # Ubuntu/Debian
57
+ ```
58
+
59
+ ### Basic Deployment
60
+
61
+ #### Windows (PowerShell)
62
+
63
+ ```powershell
64
+ # Deploy to development
65
+ .\deployment\scripts\deploy.ps1 -Environment dev
66
+
67
+ # Deploy to production with backup
68
+ .\deployment\scripts\deploy.ps1 -Environment prod
69
+
70
+ # Dry run for testing
71
+ .\deployment\scripts\deploy.ps1 -Environment prod -DryRun
72
+ ```
73
+
74
+ #### Linux/macOS (Bash)
75
+
76
+ ```bash
77
+ # Deploy to development
78
+ ./deployment/scripts/deploy.sh dev
79
+
80
+ # Deploy to production with backup
81
+ ./deployment/scripts/deploy.sh prod
82
+
83
+ # Dry run for testing
84
+ ./deployment/scripts/deploy.sh prod --dry-run
85
+ ```
86
+
87
+ ## Configuration
88
+
89
+ ### Environment Configuration
90
+
91
+ Each environment requires a configuration file in `config/environments/`:
92
+
93
+ ```json
94
+ {
95
+ "name": "Production",
96
+ "dynamics365": {
97
+ "orgUrl": "https://client.crm.dynamics.com",
98
+ "webApiUrl": "https://client.api.crm.dynamics.com/api/data/v9.2",
99
+ "tenantId": "your-tenant-id",
100
+ "environmentId": "your-environment-id"
101
+ },
102
+ "authentication": {
103
+ "type": "oauth2",
104
+ "clientId": "your-client-id",
105
+ "clientSecret": "your-client-secret"
106
+ },
107
+ "deployment": {
108
+ "strategy": "blue-green",
109
+ "rollbackEnabled": true,
110
+ "approvalRequired": true
111
+ },
112
+ "notifications": {
113
+ "deploymentSuccess": {
114
+ "enabled": true,
115
+ "channels": ["email", "teams"]
116
+ },
117
+ "deploymentFailure": {
118
+ "enabled": true,
119
+ "channels": ["email", "teams", "sms"]
120
+ }
121
+ }
122
+ }
123
+ ```
124
+
125
+ ### Solution Configuration
126
+
127
+ For solution-based deployments, place solution files in the `solutions/` directory:
128
+
129
+ ```
130
+ solutions/
131
+ ├── 01-DynamicsUIKit_Base_1_0_0_0.zip
132
+ ├── 02-DynamicsUIKit_Components_1_0_0_0.zip
133
+ └── 03-ClientCustomizations_1_0_0_0.zip
134
+ ```
135
+
136
+ ## Deployment Options
137
+
138
+ ### PowerShell Deployment Options
139
+
140
+ ```powershell
141
+ # Basic deployment
142
+ .\deploy.ps1 -Environment <env>
143
+
144
+ # Advanced options
145
+ .\deploy.ps1 -Environment <env> [OPTIONS]
146
+
147
+ Options:
148
+ -Environment <string> Target environment (dev, test, staging, prod)
149
+ -ConfigPath <string> Configuration directory path
150
+ -DryRun Perform dry run without changes
151
+ -Force Force deployment even if errors occur
152
+ -SolutionPath <string> Solution files directory
153
+ -SkipBackup Skip environment backup
154
+ -Verbose Enable verbose output
155
+ ```
156
+
157
+ ### Bash Deployment Options
158
+
159
+ ```bash
160
+ # Basic deployment
161
+ ./deploy.sh <environment>
162
+
163
+ # Advanced options
164
+ ./deploy.sh [OPTIONS] <environment>
165
+
166
+ Options:
167
+ -c, --config-path PATH Configuration directory path
168
+ -s, --solution-path PATH Solution files directory path
169
+ -n, --dry-run Perform dry run without changes
170
+ -f, --force Force deployment even if errors occur
171
+ --skip-backup Skip environment backup
172
+ -v, --verbose Enable verbose output
173
+ -h, --help Show help message
174
+ ```
175
+
176
+ ## Deployment Process
177
+
178
+ ### 1. Pre-Deployment Phase
179
+
180
+ - ✅ Load environment configuration
181
+ - ✅ Validate prerequisites and dependencies
182
+ - ✅ Check authentication and permissions
183
+ - ✅ Create environment backup (optional)
184
+ - ✅ Run pre-deployment tests
185
+
186
+ ### 2. Build Phase
187
+
188
+ - ✅ Build application with `npm run build:prod`
189
+ - ✅ Validate build artifacts
190
+ - ✅ Prepare web resources for deployment
191
+ - ✅ Package solutions (if applicable)
192
+
193
+ ### 3. Deployment Phase
194
+
195
+ - ✅ Deploy web resources to Dynamics 365
196
+ - ✅ Import and activate solutions
197
+ - ✅ Publish all customizations
198
+ - ✅ Configure security roles and permissions
199
+ - ✅ Update system configurations
200
+
201
+ ### 4. Post-Deployment Phase
202
+
203
+ - ✅ Run health checks and validation tests
204
+ - ✅ Verify web resource accessibility
205
+ - ✅ Test critical functionality
206
+ - ✅ Send deployment notifications
207
+ - ✅ Generate deployment report
208
+
209
+ ### 5. Monitoring Phase
210
+
211
+ - ✅ Monitor system performance
212
+ - ✅ Track user adoption metrics
213
+ - ✅ Alert on any issues or errors
214
+ - ✅ Schedule maintenance tasks
215
+
216
+ ## CI/CD Integration
217
+
218
+ ### Azure DevOps Pipeline
219
+
220
+ ```yaml
221
+ # azure-pipelines.yml
222
+ trigger:
223
+ branches:
224
+ include:
225
+ - main
226
+ - develop
227
+
228
+ pool:
229
+ vmImage: 'windows-latest'
230
+
231
+ stages:
232
+ - stage: Build
233
+ jobs:
234
+ - job: BuildJob
235
+ steps:
236
+ - task: NodeTool@0
237
+ inputs:
238
+ versionSpec: '18.x'
239
+ - script: npm ci
240
+ - script: npm run build:prod
241
+ - task: PublishBuildArtifacts@1
242
+
243
+ - stage: DeployDev
244
+ condition: eq(variables['Build.SourceBranch'], 'refs/heads/develop')
245
+ jobs:
246
+ - deployment: DeployToDev
247
+ environment: 'Dynamics365-Dev'
248
+ strategy:
249
+ runOnce:
250
+ deploy:
251
+ steps:
252
+ - task: PowerShell@2
253
+ inputs:
254
+ filePath: '$(Pipeline.Workspace)/drop/deployment/scripts/deploy.ps1'
255
+ arguments: '-Environment dev'
256
+ ```
257
+
258
+ ### GitHub Actions Workflow
259
+
260
+ ```yaml
261
+ # .github/workflows/deploy.yml
262
+ name: Deploy to Dynamics 365
263
+
264
+ on:
265
+ push:
266
+ branches: [main, develop]
267
+ pull_request:
268
+ branches: [main]
269
+
270
+ jobs:
271
+ build:
272
+ runs-on: ubuntu-latest
273
+ steps:
274
+ - uses: actions/checkout@v3
275
+ - uses: actions/setup-node@v3
276
+ with:
277
+ node-version: '18'
278
+ cache: 'npm'
279
+ - run: npm ci
280
+ - run: npm run build:prod
281
+ - uses: actions/upload-artifact@v3
282
+ with:
283
+ name: build-artifacts
284
+ path: dist/
285
+
286
+ deploy-dev:
287
+ if: github.ref == 'refs/heads/develop'
288
+ needs: build
289
+ runs-on: ubuntu-latest
290
+ environment: development
291
+ steps:
292
+ - uses: actions/checkout@v3
293
+ - uses: actions/download-artifact@v3
294
+ with:
295
+ name: build-artifacts
296
+ path: dist/
297
+ - name: Deploy to Development
298
+ run: ./deployment/scripts/deploy.sh dev
299
+ env:
300
+ D365_CLIENT_ID: ${{ secrets.D365_DEV_CLIENT_ID }}
301
+ D365_CLIENT_SECRET: ${{ secrets.D365_DEV_CLIENT_SECRET }}
302
+ ```
303
+
304
+ ## Backup and Rollback
305
+
306
+ ### Automatic Backup
307
+
308
+ The deployment scripts automatically create backups before deployment:
309
+
310
+ ```bash
311
+ # Backups are stored in deployment/backups/
312
+ backup-prod-20231201-143022.tar.gz
313
+ backup-test-20231201-120045.tar.gz
314
+ ```
315
+
316
+ ### Manual Rollback
317
+
318
+ ```powershell
319
+ # PowerShell rollback
320
+ .\deployment\scripts\rollback.ps1 -Environment prod -BackupFile "backup-prod-20231201-143022.tar.gz"
321
+ ```
322
+
323
+ ```bash
324
+ # Bash rollback
325
+ ./deployment/scripts/rollback.sh prod backup-prod-20231201-143022.tar.gz
326
+ ```
327
+
328
+ ## Monitoring and Health Checks
329
+
330
+ ### Automated Health Monitoring
331
+
332
+ ```powershell
333
+ # Run health checks
334
+ .\deployment\scripts\health-check.ps1 -Environment prod
335
+
336
+ # Schedule regular health checks
337
+ Register-ScheduledTask -TaskName "D365HealthCheck" -Trigger (New-ScheduledTaskTrigger -Daily -At 2am)
338
+ ```
339
+
340
+ ### Monitoring Endpoints
341
+
342
+ The deployment includes health check endpoints:
343
+
344
+ - `/api/health` - Basic health status
345
+ - `/api/health/detailed` - Detailed system information
346
+ - `/api/health/dependencies` - External dependency status
347
+
348
+ ## Troubleshooting
349
+
350
+ ### Common Issues
351
+
352
+ #### Authentication Failures
353
+
354
+ ```bash
355
+ # Check service principal permissions
356
+ ./deployment/scripts/test-auth.sh prod
357
+
358
+ # Verify configuration
359
+ ./deployment/scripts/validate-config.sh prod
360
+ ```
361
+
362
+ #### Web Resource Deployment Issues
363
+
364
+ ```powershell
365
+ # Check file permissions and sizes
366
+ .\deployment\scripts\validate-webresources.ps1
367
+
368
+ # Test individual web resource deployment
369
+ .\deployment\scripts\deploy-webresource.ps1 -Name "dynamics_ui_kit_index_js" -File "dist/index.js"
370
+ ```
371
+
372
+ #### Solution Import Failures
373
+
374
+ ```bash
375
+ # Validate solution file
376
+ ./deployment/scripts/validate-solution.sh solutions/MyApp_1_0_0_0.zip
377
+
378
+ # Check dependencies
379
+ ./deployment/scripts/check-dependencies.sh prod
380
+ ```
381
+
382
+ ### Debug Mode
383
+
384
+ Enable verbose logging for troubleshooting:
385
+
386
+ ```bash
387
+ # Enable debug mode
388
+ ./deployment/scripts/deploy.sh prod --verbose
389
+
390
+ # Check deployment logs
391
+ tail -f deployment/logs/deploy-prod-*.log
392
+ ```
393
+
394
+ ### Log Analysis
395
+
396
+ ```bash
397
+ # Search for errors in logs
398
+ grep "ERROR" deployment/logs/deploy-prod-*.log
399
+
400
+ # Check deployment timing
401
+ grep "completed" deployment/logs/deploy-prod-*.log
402
+ ```
403
+
404
+ ## Security Best Practices
405
+
406
+ ### Secure Configuration Management
407
+
408
+ 1. **Never commit secrets** to version control
409
+ 2. **Use Azure Key Vault** for production secrets
410
+ 3. **Implement least privilege** access policies
411
+ 4. **Enable audit logging** for all operations
412
+ 5. **Use managed identities** where possible
413
+
414
+ ### Environment Isolation
415
+
416
+ ```json
417
+ {
418
+ "security": {
419
+ "enableAuditLogging": true,
420
+ "requireMFA": true,
421
+ "sessionTimeout": 480,
422
+ "enableConditionalAccess": true,
423
+ "allowedIPs": ["203.0.113.0/24"],
424
+ "dataLossPreventionEnabled": true
425
+ }
426
+ }
427
+ ```
428
+
429
+ ## Performance Optimization
430
+
431
+ ### Deployment Speed Optimization
432
+
433
+ 1. **Parallel web resource uploads**
434
+ 2. **Incremental solution deployments**
435
+ 3. **Delta-only updates**
436
+ 4. **Compressed file transfers**
437
+ 5. **Cached build artifacts**
438
+
439
+ ### Resource Optimization
440
+
441
+ ```json
442
+ {
443
+ "performance": {
444
+ "enableCaching": true,
445
+ "cacheTimeout": 300,
446
+ "batchSize": 100,
447
+ "timeoutMs": 30000,
448
+ "retryAttempts": 3,
449
+ "enableCompression": true
450
+ }
451
+ }
452
+ ```
453
+
454
+ ## Support and Maintenance
455
+
456
+ ### Regular Maintenance Tasks
457
+
458
+ 1. **Clean up old backups** (automated)
459
+ 2. **Monitor deployment metrics**
460
+ 3. **Update deployment scripts**
461
+ 4. **Review security configurations**
462
+ 5. **Test disaster recovery procedures**
463
+
464
+ ### Getting Help
465
+
466
+ - **Documentation**: Check this README and inline script comments
467
+ - **Logs**: Review deployment logs in `deployment/logs/`
468
+ - **Support**: Contact the development team with log files
469
+ - **Community**: Check GitHub issues and discussions
470
+
471
+ ## Contributing
472
+
473
+ When contributing to the deployment automation:
474
+
475
+ 1. **Test thoroughly** in development environment
476
+ 2. **Follow naming conventions** for scripts and configurations
477
+ 3. **Document all parameters** and options
478
+ 4. **Include error handling** and validation
479
+ 5. **Update this README** with any changes
480
+
481
+ ---
482
+
483
+ This deployment automation suite enables reliable, repeatable, and scalable deployments for Dynamics
484
+ 365 consulting projects across multiple clients and environments.