Bulk Modification Module Documentation
Table of Contents
- Module Overview (Technical)
- Module Overview (Commercial/Business)
- Module Overview (End User/Administrator)
- Configuration Fields Reference
- Operation Flow / Logic Explanation
- Common Scenarios & Examples
- Limitations & Important Notes
- Troubleshooting Tips
- Glossary
- Suggested UI Improvements
---
1. Module Overview (Technical)
What Is Bulk Modification?
Bulk Modification is an administrative tool that allows applying configuration changes to multiple extensions simultaneously instead of editing each one individually. It provides four flexible selection methods and can modify various extension attributes in a single operation.
Architecture
Key Tables
| Table | Purpose | |
|---|---|---|
public.sip_extensions | Primary table updated during bulk modifications | |
public.class_of_services | Referenced for Class of Service changes | |
public.domains | Used for multi-tenant domain filtering |
API Endpoints
| Method | Endpoint | Purpose | |
|---|---|---|---|
POST | /api/telephony/bulk-modification/preview | Preview which extensions will be affected | |
POST | /api/telephony/bulk-modification | Apply the modifications |
Key Files
| File | Description | |
|---|---|---|
admin/apps/api/src/modules/telephony/bulk-modification/services/bulkModificationService.ts | Backend service handling preview and apply operations | |
admin/apps/web/src/modules/bulkModification/BulkModificationPage.tsx | Frontend page with selection and modification UI | |
admin/apps/web/src/i18n/en/bulkModification.json | English translation strings |
2. Module Overview (Commercial/Business)
Business Value
Bulk Modification dramatically reduces administrative overhead:
| Manual Approach | With Bulk Modification | |
|---|---|---|
| Change 100 extensions: ~2 hours | Change 100 extensions: ~2 minutes | |
| High error rate from repetitive work | Consistent changes across all selected | |
| Requires skilled administrators | Simple interface for routine changes |
Use Cases
- Department Restructuring
- Change language settings for entire floor
- Compliance Updates
- Update account codes for billing changes
- System Migration
- Apply new default settings to all extensions
- Onboarding/Offboarding
- Disable extensions for departing employees
Licensing Considerations
- This is typically a System Administrator level feature
- Consider restricting access to prevent accidental mass changes
- Include in Enterprise tier to justify technical support costs
---
3. Module Overview (End User/Administrator)
What Can You Do?
Bulk Modification allows you to:
- Select Extensions using multiple methods:
- Ranges: Specify numeric ranges (e.g., 1000-1099)
- Patterns: Use wildcards (e.g., 10 = all starting with 10)
- Filters: Select by properties (Class of Service, status, language)
- Preview Before Applying:
- Confirm before making changes
- Apply Modifications:
- Ring Time (call timeout)
- Language
- Account Code
- Call Recording Settings
User Workflow
Quick Tips
---
4. Configuration Fields Reference
Selection Methods
Individual Selection
| Feature | Description | Example | |
|---|---|---|---|
| Extension Search | Search by number, name, or email | Type "John" to find John's extension | |
| Multi-Select | Click to toggle selection | Click ext 1001, click ext 1005, click ext 1010 | |
| Select All | Load all domain extensions | Click "Select All Extensions" button | |
| Clear All | Remove all selected | Click "Clear" button |
Ranges
| Feature | Description | Example | |
|---|---|---|---|
| Start/End | Define numeric range bounds | Start: 1000, End: 1099 | |
| Multiple Ranges | Add multiple non-contiguous ranges | 1000-1099 + 2050-2099 + 3000-3010 | |
| Behavior | Includes both start and end values | 1000-1005 = extensions 1000, 1001, 1002, 1003, 1004, 1005 |
Patterns
| Pattern | Meaning | Matches | |
|---|---|---|---|
10 | Starts with 10 | 1000, 1001, 1099, 10 | |
00 | Ends with 00 | 1000, 2000, 9900, 100 | |
35 | Starts with 3, ends with 5 | 305, 3005, 3125, 35 | |
| All extensions | Every extension in domain |
Filters
| Filter | Options | Description | |
|---|---|---|---|
| Class of Service | Dropdown of available CoS | Only extensions with selected CoS | |
| Extension Status | Any / Enabled Only / Disabled Only | Filter by enabled state | |
| Voicemail | Any / Enabled / Disabled | Filter by voicemail status | |
| Language | Language selector | Filter by extension language |
Modification Options
| Modification | Type | Description | Range/Options | |
|---|---|---|---|---|
| Class of Service | Dropdown | Change permission level for calls (local, long-distance, international) | Available CoS from domain | |
| Ring Time | Number Input | Seconds before call goes to voicemail | 10-120 seconds | |
| Language | Dropdown | Language for voicemail prompts and IVR menus | en-us-emma, es-us-paloma, etc. | |
| Account Code | Text Input | Billing/reporting code for the extension | Any text string | |
| Call Recording | Checkboxes | Enable/disable recording by direction | Incoming, Outgoing, Internal, On-Demand |
5. Operation Flow / Logic Explanation
Preview Flow
Apply Flow
---
6. Common Scenarios & Examples
Scenario 1: Department Language Change
Context: Marketing department (extensions 2000-2099) needs Spanish prompts.Scenario 2: Enable Recording for Customer Service
Context: All extensions with Class of Service "Customer Service" need call recording.Scenario 3: Pattern-Based Ring Time Adjustment
Context: All executive extensions (starting with 1) should ring longer.Scenario 4: Mass Account Code Assignment
Context: Year-end billing requires new account codes for all extensions.---
7. Limitations & Important Notes
Technical Limitations
Best Practices
- Always Preview First: Never skip the preview step, especially for ranges and patterns
- Start Small: Test with a small range before applying to entire departments
- Document Changes: Keep a log of bulk modifications for audit purposes
- Off-Peak Hours: Run large bulk modifications during low-traffic periods
- Verify After: Spot-check a few extensions after bulk changes
Security Considerations
---
8. Troubleshooting Tips
Common Issues
| Symptom | Possible Cause | Solution | |
|---|---|---|---|
| "No extensions found" | Domain filter mismatch | Verify correct domain is selected in header | |
| Preview shows 0 | Pattern syntax incorrect | Check wildcard usage: not % | |
| "No modifications selected" | No checkbox enabled | Enable at least one modification checkbox | |
| Partial success | Some extensions have constraints | Check for unique constraint violations | |
| Slow operation | Too many extensions | Split into smaller batches (500 max recommended) |
Validation Errors
| Error | Meaning | Resolution | |
|---|---|---|---|
| "Please select at least one extension" | Individual tab empty | Search and select extensions | |
| "Please add at least one range" | Ranges tab empty | Add start/end range values | |
| "Please add at least one pattern" | Patterns tab empty | Add at least one pattern | |
| "Please select at least one filter" | Filters tab, no selections | Select at least one filter option |
Diagnostic SQL
Check extensions matching a range: Check extensions matching a pattern: Verify recent bulk changes:---
9. Glossary
| Term | Definition | |
|---|---|---|
| Bulk Modification | The process of applying the same configuration change to multiple extensions at once | |
| Preview | A non-destructive operation that shows how many extensions would be affected before changes are made | |
| Selection Method | The technique used to choose which extensions to modify (individual, ranges, patterns, filters) | |
| Range | A numeric span of extension numbers (e.g., 1000-1099) | |
| Pattern | A wildcard expression to match extensions (e.g., 10 matches 1000, 1001, etc.) | |
| Filter | Criteria based on extension properties (Class of Service, enabled status, language) | |
| Class of Service (CoS) | Permission level controlling what types of calls an extension can make | |
| Account Code | A text identifier used for billing and reporting purposes | |
| Ring Time | Duration in seconds before an unanswered call proceeds to voicemail or next action | |
| Transaction | Database operation that either completes fully or rolls back entirely—no partial updates |
10. Suggested UI Improvements
Tooltip Improvements
| Field | Current | Suggested | |
|---|---|---|---|
| Ring Time | "How long to ring before going to voicemail (10-120 seconds)" | "How many seconds the phone rings before proceeding to voicemail or voicemail. Most users prefer 20-30 seconds. Very short times (10s) may frustrate callers." | |
| Patterns | N/A | "Use as a wildcard: 10 matches 1000-1099, 00 matches 100, 1000, 2000. Patterns are case-sensitive for alphanumeric extensions." | |
| Class of Service | N/A | "Controls calling permissions. Change carefully—restricting CoS may prevent users from making certain calls." |
UX Enhancements
- Confirmation Modal: Before applying, show a summary modal:
- Undo History: Store last 10 bulk operations with ability to revert
- Export Before: Add button "Download Current Settings" before applying changes
- Progress Indicator: For large batches, show progress bar instead of spinner
- Dry Run Mode: Advanced option to generate SQL without executing, for review
Label Changes
| Current | Suggested | Reason | |
|---|---|---|---|
| "Ring Time (seconds)" | "Ring Duration (seconds)" | Clearer terminology | |
| "Configure Modifications" | "Changes to Apply" | Simpler language | |
| "Preview Selection" | "Count Affected Extensions" | More descriptive |
Filter Enhancements
Add additional filters:
- Extension Type (SIP, Hotdesk, Virtual, None)
- Billing Enabled (Yes/No)
- Agent Profile (for call center extensions)
- Date Created (before/after)
Lua Script Status ℹ️
Integration Module
| Component | Status | Notes |
|---|---|---|
| Bulk Modification | ℹ️ Configuration module | Actions applied directly to database records |