System Overview

SMXiCore CRM is a comprehensive Customer Relationship Management system built with modern web technologies. The system provides tools for managing people, locations, jobs, and organizational data with a focus on usability and efficiency.

Key Features

  • ✓ Working People Management - Full CRUD operations
  • ✓ Working Location Management - Complete address system
  • ✓ Working Global Search - Cross-entity search
  • ✓ Working Dashboard Analytics - Real-time statistics
  • ✓ Working Data Export - CSV download functionality
  • ✓ Working Authentication System - Session management
  • ✓ Working File Manager - Archive extraction and PassKit support
  • ✓ Working API Integration - RESTful endpoints
  • ✓ Working Responsive Design - Mobile-friendly UI
  • ✓ Working Unsaved Changes Protection - Visual indicators
  • ✓ Working Error Reporting - Copy-to-clipboard diagnostics
  • ✓ Working Form Validation - Real-time field validation

Technical Architecture

  • Frontend: HTML5, CSS3, JavaScript (ES6+), Bootstrap/Tabler UI
  • Backend API: RESTful API at 100.78.23.29/api
  • Data Storage: Browser localStorage for client-side persistence
  • Authentication: Session-based with automatic token management

Getting Started

System Requirements

  • Modern web browser (Chrome 90+, Firefox 88+, Safari 14+, Edge 90+)
  • JavaScript enabled
  • Internet connection for API access
  • Screen resolution: 1024x768 minimum (responsive design supports mobile)

Accessing the System

  1. Navigate to the CRM application URL
  2. Enter your username and password on the login screen
  3. Click "Sign In" to access the dashboard

First Time Setup

Upon first login, the system will:

  • Initialize your user profile
  • Load default dashboard widgets
  • Set up notification preferences
  • Configure search history tracking

Dashboard ✓ Working

The dashboard provides an overview of your CRM data with real-time metrics and quick access to common functions.

Dashboard Features

  • Notification System: Real-time toast notifications for system events
  • Job Polling: Automatic background polling for new jobs
  • Quick Actions: Fast access to create new records
  • Data Refresh: Manual refresh button for latest data

Available Actions

Notification Demo
Test the notification system with sample alerts
Refresh Dashboard
Reload all dashboard data and metrics

Job Polling System

The dashboard includes automatic job polling that:

  • Fetches new jobs from the API every 2-5 minutes
  • Shows notifications for new job alerts
  • Updates the job notifications dropdown
  • Can be started/stopped manually

People Management ✓ Working

Comprehensive system for managing individual contacts and customers with full CRUD operations.

Core Features

  • Person List View: Paginated table with search and filtering
  • Person Edit Form: Complete form for creating/editing person records
  • Inline Editing: Quick edit capabilities directly in the table
  • Status Management: Active, Gone Away, Deceased status tracking
  • Contact Information: Email, phone, address management

Person Fields

Required Fields:
  • First Name
  • Last Name
Optional Fields:
  • Email Address
  • Mobile Phone
  • External ID
  • Person Status

Available Operations

  • Create: Add new person records via "Add New Person" button
  • Read: View person details in list or edit form
  • Update: Edit existing records via edit form or inline editing
  • Delete: Remove person records (with confirmation)
  • Search: Find people by name, email, or phone

Navigation

  • Access via CRM → People in the main navigation
  • Direct URL: #people
  • Edit person: #person-edit?id={personId}
  • New person: #person-new

Location Management ✓ Working

Manage physical locations, offices, and addresses with comprehensive location data.

Core Features

  • Location List View: Table view of all locations
  • Location Edit Form: Detailed form for location management
  • Address Management: Complete address information
  • Location Search: Find locations by name, address, or city

Location Fields

Required Fields:
  • Location Name
Optional Fields:
  • Address
  • City
  • State/Region
  • Location Type

Available Operations

  • Create: Add new locations
  • Read: View location details
  • Update: Edit existing location information
  • Delete: Remove location records
  • Search: Find locations by various criteria

Navigation

  • Access via CRM → Locations in the main navigation
  • Direct URL: #locations
  • Edit location: #location-edit?id={locationId}

Membership Management ✓ Working

Comprehensive membership hierarchy and pricing management

The CRM system implements a sophisticated three-tier membership structure designed to accommodate various membership types with flexible pricing and criteria management.

Membership Hierarchy & Table Relationships

Three-Tier Structure with Database Relationships
  1. Membership Classes - Top-level categories (e.g., "Premium", "Corporate", "Student")
  2. Membership Levels - Specific tiers within classes (e.g., "Gold", "Silver", "Bronze")
  3. Membership Costs - Historical pricing information with effective dates
  4. Members - Individual membership records linking people to levels
  5. Designs - Digital card templates associated with membership levels
Database Table Relationships
One-to-Many Relationships:
MembershipClasses (1) ←→ (N) MembershipLevels
MembershipLevels (1) ←→ (N) MembershipCosts
MembershipLevels (1) ←→ (N) Members

Many-to-One Relationships:
Members (N) ←→ (1) Persons
MembershipLevels (N) ←→ (1) Designs

Key Foreign Keys:
• MembershipLevel.MembershipClassId → MembershipClass.Id
• MembershipCost.MembershipLevelId → MembershipLevel.Id
• Member.MembershipLevelId → MembershipLevel.Id
• Member.PersonId → Person.Id
• MembershipLevel.DesignId → Design.Id
Membership Classes Features
  • ✓ Working Create and manage membership categories
  • ✓ Working Set maximum member limits per class
  • ✓ Working Configure allowed period types (Annual, Monthly, Both)
  • ✓ Working Status management (Active/Inactive)
  • ✓ Working Modern dropdown action menus
Membership Levels Features
  • ✓ Working Define specific membership tiers
  • ✓ Working Set eligibility criteria
  • ✓ Working Individual member limits per level
  • ✓ Working Rich text descriptions
  • ✓ Working Integrated cost management
Pricing & Cost Management
  • ✓ Working Historical pricing tracking
  • ✓ Working GBP £ currency display
  • ✓ Working Monthly and annual pricing options
  • ✓ Working Effective date management
  • ✓ Working Current cost identification
Member Management
  • ✓ Working Assign people to membership levels
  • ✓ Working Member status tracking
  • ✓ Working Comprehensive member details modal
  • ✓ Working Export functionality (CSV, Excel, PDF)
  • ✓ Working Advanced filtering and search

Known Issue: MembershipClassId Validation

Issue: API schema validation error when creating membership levels.

Error: Property "MembershipClassId" does not refer to a known property in type "XData.Default.MembershipLevel"

Cause: The database requires MembershipClassId for foreign key relationships, but the formal API schema doesn't include this field in its specification.

Current Workaround: The system uses enhanced error dialogs to provide detailed diagnostic information and offers development mode fallbacks for testing.

Status: This is a schema alignment issue that requires backend API schema updates to include the MembershipClassId field.

Using Membership Management

  1. Create Membership Classes: Start by defining top-level categories like "Premium", "Standard", or "Student"
  2. Add Membership Levels: Within each class, create specific tiers like "Gold", "Silver", "Bronze"
  3. Set Pricing: Use "Manage Costs" to define initial pricing and track price changes over time
  4. Assign Members: Link people to appropriate membership levels based on their needs
  5. Monitor & Report: Use the comprehensive export and reporting features to track membership data

Data Integrity & Relationships

Automatic Relationship Management

The system automatically maintains data integrity through foreign key relationships and validation rules.

Relationship Validation
  • ✓ Working Foreign key existence validation
  • ✓ Working Circular reference prevention
  • ✓ Working Cascade delete protection
  • ✓ Working Required field validation
  • ✓ Working Data type validation
Import/Export Considerations
  • CSV Import: System validates foreign key relationships during import
  • Data Export: Exports include related data for complete records
  • Bulk Operations: Relationship validation prevents orphaned records
  • Error Reporting: Detailed error messages for relationship issues
Common Relationship Scenarios
  • Creating Levels: Must specify valid MembershipClassId
  • Adding Members: Must specify valid MembershipLevelId and PersonId
  • Setting Costs: Must specify valid MembershipLevelId
  • Deleting Classes: System prevents deletion if levels exist
  • Deleting Levels: System prevents deletion if members exist
API Integration
  • Unified Structure: getUnifiedMembershipStructure() returns complete hierarchy
  • Expanded Queries: $expand parameter for related data
  • Filtered Queries: Filter by relationship fields
  • Batch Operations: Maintain relationships in bulk operations

Best Practices

  • Planning: Design your membership structure before creating data
  • Naming: Use clear, descriptive names for classes and levels
  • Pricing: Set effective dates when changing prices to maintain historical records
  • Status Management: Use Active/Inactive status consistently across all entities
  • Regular Reviews: Periodically review membership structures and pricing
  • Data Validation: Always validate foreign key relationships before bulk operations
  • Backup Strategy: Export membership data before major structural changes

Import/Export System ✓ Working

Bulk data import and comprehensive export functionality

The CRM system provides comprehensive import and export capabilities for managing large datasets efficiently. The import system supports CSV file uploads with validation and job monitoring, while the export system offers multiple formats for data extraction.

Export Functionality

Available Export Formats
  • ✓ Working CSV Export - Standard comma-separated values
  • ✓ Working Excel Export - Microsoft Excel format
  • ✓ Working PDF Export - Printable reports
  • ✓ Working SmartURL Export - Digital card URLs
Exportable Data
  • People: Complete person records with contact information
  • Locations: Address data with type and status information
  • Memberships: Member details with level and cost information
  • Designs: Digital card design templates and metadata
Export Features
  • ✓ Working Filtered exports (current search/filter results)
  • ✓ Working Automatic filename generation with dates
  • ✓ Working Browser download integration
  • ✓ Working CSV viewer in file manager
  • ✓ Working Export progress tracking
File Naming Convention
people_export_YYYY-MM-DD.csv
locations_export_YYYY-MM-DD.csv
memberships_export_YYYY-MM-DD.csv
designs_export_YYYY-MM-DD.csv
smarturls_job_XXXX_YYYY-MM-DD.csv

Import Functionality

CSV Import System

The import system processes CSV files through a job-based workflow with comprehensive validation and error reporting.

Import Workflow
  1. File Upload: Select CSV file through FileAdminService interface
  2. Validation: System validates file format and required fields
  3. Processing: Data is transformed and mapped to database fields
  4. Job Monitoring: Real-time progress tracking with status updates
  5. Results: Download processed data or error reports
Supported Import Types
  • Member Import: Bulk member creation with person data
  • Person Import: Contact information and basic details
  • Location Import: Address and location data
  • SmartURL Import: Digital card URL processing
Import Validation
  • ✓ Working Required field validation
  • ✓ Working Email format validation
  • ✓ Working Phone number formatting
  • ✓ Working Date format validation
  • ✓ Working Foreign key relationship validation
  • ✓ Working Duplicate detection
Job Management
  • ✓ Working Real-time job status monitoring
  • ✓ Working Progress percentage display
  • ✓ Working Error reporting with details
  • ✓ Working Session storage for job tracking
  • ✓ Working Automatic download on completion

Using the Import/Export System

Exporting Data
  1. Navigate to Data: Go to the relevant page (People, Locations, Memberships, etc.)
  2. Apply Filters: Use search and filters to narrow down the data you want to export
  3. Click Export: Use the export button in the page header or table actions
  4. Select Format: Choose CSV, Excel, or PDF format
  5. Download: File will automatically download to your browser's download folder
Importing Data
  1. Access Import: Go to the Import page (File Admin Service)
  2. Prepare CSV: Ensure your CSV file has the correct headers and format
  3. Upload File: Select and upload your CSV file
  4. Monitor Progress: Watch the job status and progress indicators
  5. Download Results: Once complete, download the processed data or error report

CSV Format Requirements

Important CSV Guidelines
  • Headers: First row must contain column headers
  • Encoding: Use UTF-8 encoding for special characters
  • Delimiters: Use commas as field separators
  • Quotes: Enclose text fields in double quotes if they contain commas
  • Dates: Use YYYY-MM-DD format for date fields
Sample CSV Headers
Member Import:
FirstName,LastName,Email,Mobile,MembershipLevelId,Status

Person Import:
FirstName,LastName,Email,Mobile,Phone,DateOfBirth,Status

Location Import:
LocationName,Add1,Add2,Town,County,PostCode,LocationKind,Status

Best Practices

Export Best Practices
  • Filter First: Apply filters before exporting to get only the data you need
  • Regular Backups: Export important data regularly for backup purposes
  • Format Selection: Use CSV for data analysis, PDF for reports, Excel for sharing
  • File Management: Organize exported files with descriptive names
Import Best Practices
  • Test First: Test imports with small datasets before large imports
  • Data Validation: Clean and validate your data before importing
  • Backup First: Export existing data before large imports
  • Monitor Jobs: Keep the import page open to monitor progress
  • Error Review: Always review error reports after imports

Troubleshooting

Common Import/Export Issues
  • Large Files: For files over 10MB, consider splitting into smaller chunks
  • Encoding Issues: Ensure CSV files are saved with UTF-8 encoding
  • Job Timeouts: Large imports may take several minutes - be patient
  • Validation Errors: Review error reports to identify data format issues
  • Download Issues: Check browser download settings if files don't download

Digital Cards ✓ Working

Comprehensive digital card generation, job processing, and dashboard analytics

The Digital Cards system provides a complete solution for creating, managing, and tracking digital membership cards. It includes job-based processing for bulk operations, comprehensive dashboard analytics, and sophisticated template management linking membership levels to designs.

Job Service Import Processing

Sophisticated Job-Based Workflow

The system uses an advanced job processing pipeline for bulk member imports and SmartURL generation.

Job Processing Pipeline
  1. File Upload: CSV file uploaded to job service
  2. CSV Parsing: System parses and validates CSV data
  3. Data Validation: Comprehensive validation of member data
  4. Member Creation: Bulk creation of member records
  5. Design Linking: Automatic linking to membership level designs
  6. SmartURL Generation: Creation of unique digital card URLs
  7. Results Export: Download of processed results and SmartURLs
Job Types Available
  • Member Import: Bulk member creation with person data
  • SmartURL Generation: Digital card URL creation for existing members
  • Pass Generation: Apple Wallet pass creation
  • Design Processing: Template processing and validation
Job Status Tracking
  • ✓ Working Real-time job status monitoring
  • ✓ Working Progress percentage display
  • ✓ Working Detailed error reporting
  • ✓ Working Session storage for job tracking
  • ✓ Working Automatic download on completion
SmartURL Generation Process
  • Member Data Retrieval: Get member, person, and level information
  • Design Association: Link to membership level's assigned design
  • Template Processing: Apply template variables and customization
  • URL Generation: Create unique SmartURL for each member
  • Database Update: Store SmartURL with member record

Passes Dashboard

Comprehensive Analytics Dashboard

The passes dashboard provides detailed analytics and management for all digital card operations.

Dashboard Statistics
  • Total Passes: Complete count of generated passes
  • Registered Devices: Devices with passes installed
  • Active Installations: Currently active pass installations
  • Uninstallations: Passes removed from devices
Analytics Features
  • ✓ Working Generation trends over time
  • ✓ Working Device registration patterns
  • ✓ Working Top pass types analysis
  • ✓ Working Installation vs uninstallation trends
  • ✓ Working Real-time data updates
Dashboard Components
  • Statistics Cards: Key metrics displayed prominently
  • Trend Charts: Visual representation of data trends
  • Performance Metrics: System performance indicators
  • Quick Actions: Direct access to common operations
Data Sources
  • Pass Generation API: Real-time pass creation data
  • Device Registration: Apple Wallet device tracking
  • Installation Tracking: Pass installation monitoring
  • Analytics Engine: Processed trend and pattern data

Membership Level to Design Linking

Sophisticated Design Assignment System

The system implements advanced linking between membership levels and digital card designs with template variable processing.

Design Assignment Process
  1. Level Creation: Create membership level with design requirements
  2. Design Selection: Choose appropriate digital card design
  3. Template Assignment: Link design template to membership level
  4. Variable Mapping: Configure template variables for personalization
  5. Validation: Validate template and design compatibility
Template Variable System
Person Variables:
{{PersonFirstName}} - Member's first name
{{PersonLastName}} - Member's last name
{{PersonDisplayName}} - Full display name
{{PersonEmail}} - Member's email address
{{PersonMobile}} - Member's mobile number

Membership Variables:
{{MembershipLevelName}} - Level name (Gold, Silver, etc.)
{{MembershipClassName}} - Class name (Premium, Standard, etc.)
{{MemberPoints}} - Member's points/credits
{{MemberExternalId}} - External member ID
System Variables
Organization Variables:
{{OrganizationName}} - Organization name (SMXi)
{{ExpiryDate}} - Membership expiry date
{{AuthToken}} - Unique authentication token
{{SerialNumber}} - Unique serial number

Design Variables:
{{DesignName}} - Design template name
{{TemplateVersion}} - Template version number
{{CardType}} - Type of digital card
Design Caching System
  • ✓ Working Performance optimization through design caching
  • ✓ Working 30-minute cache timeout for fresh data
  • ✓ Working Automatic cache invalidation on design updates
  • ✓ Working Memory-efficient cache management

Digital Card Generation Workflow

Complete Generation Pipeline
  1. Data Retrieval: Get member, person, level, and design data
  2. Variable Preparation: Prepare all template variables
  3. Template Processing: Apply variables to design template
  4. SmartURL Generation: Create unique digital card URL
  5. Pass File Creation: Generate Apple Wallet pass file
  6. Database Update: Store SmartURL with member record
Batch Processing
  • Batch Size: Process 10 members per batch
  • Error Handling: Continue processing on individual failures
  • Progress Tracking: Real-time progress updates
  • Result Compilation: Comprehensive success/failure reporting
Generation Features
  • ✓ Working Individual card generation
  • ✓ Working Bulk generation via job service
  • ✓ Working Template variable replacement
  • ✓ Working Design asset integration
  • ✓ Working Apple Wallet compatibility
Quality Assurance
  • Template Validation: Validate processed templates
  • Asset Verification: Ensure all required assets are present
  • Variable Completeness: Check all required variables are filled
  • Apple Compliance: Verify Apple Wallet requirements

Using the Digital Cards System

Job Service Import
  1. Prepare CSV: Create CSV file with member data and membership level IDs
  2. Upload File: Use File Admin Service to upload CSV file
  3. Monitor Progress: Watch job status and progress indicators
  4. Download Results: Get processed data and SmartURLs
  5. Review Errors: Check error report for any issues
Dashboard Monitoring
  1. Access Dashboard: Navigate to Passes Dashboard
  2. Review Statistics: Check key metrics and trends
  3. Analyze Patterns: Use charts to understand usage patterns
  4. Track Performance: Monitor system performance indicators
Design Management
  1. Create Designs: Design digital card templates
  2. Assign to Levels: Link designs to membership levels
  3. Configure Variables: Set up template variables
  4. Test Generation: Test card generation with sample data
  5. Deploy Changes: Activate designs for production use

Best Practices

Job Processing
  • File Preparation: Clean and validate CSV data before upload
  • Batch Sizes: Use appropriate batch sizes for your data volume
  • Monitoring: Keep job monitoring page open during processing
  • Error Review: Always review error reports after completion
Design Management
  • Template Design: Create clear, readable templates
  • Variable Usage: Use meaningful variable names
  • Testing: Test templates with various data scenarios
  • Version Control: Maintain template versions for rollback

Troubleshooting

Common Digital Cards Issues
  • Job Failures: Check CSV format and required fields
  • Template Errors: Verify template variables are properly formatted
  • Design Issues: Ensure designs are assigned to membership levels
  • Generation Failures: Check member data completeness
  • Dashboard Issues: Verify API connectivity for real-time data

PassKit Generation ✓ Working

Generate Apple Wallet passes for members and individuals

The CRM system includes a comprehensive PassKit generation service that creates Apple Wallet passes for people and members. The system supports dynamic template variable replacement, proper Apple Wallet validation, and secure file generation.

PassKit Generation Features

Core Functionality
  • ✓ Working Apple Wallet pass generation
  • ✓ Working Dynamic template variable replacement
  • ✓ Working Proper PKCS#7 digital signing
  • ✓ Working ZIP compression with no compression (Apple requirement)
  • ✓ Working Automatic manifest.json generation
  • ✓ Working Template bundle support
Template Variables
  • ✓ Working Person data (name, email, etc.)
  • ✓ Working Member information (membership level, etc.)
  • ✓ Working Dynamic serial numbers and auth tokens
  • ✓ Working Organization details
  • ✓ Working Expiry dates and timing
Apple Wallet Compliance
  • ✓ Working Correct PassTypeIdentifier: pass.com.smxi
  • ✓ Working TeamIdentifier: ZUFPF3R7HP
  • ✓ Working Organization name: SMXi
  • ✓ Working WebServiceURL for updates
  • ✓ Working Generic pass type with proper field arrays
  • ✓ Working Date field conflict resolution
Security & Validation
  • ✓ Working Digital certificate validation
  • ✓ Working SHA-1 file hashing for manifest
  • ✓ Working OpenSSL signature generation
  • ✓ Working Apple certificate chain validation

Generating Passes

Multiple Generation Methods

You can generate Apple Wallet passes from several locations in the CRM:

  1. Person Edit Page: Click the "Generate Pass" button when viewing/editing a person
  2. Active Members Table: Click "Generate Pass" button in the Actions column for any member
  3. Memberships Page: Use the dropdown menu next to any member to generate their pass

Template System

Template Bundles
  • MASTER Template: Default template used when no specific template is available
  • Membership Level Templates: Templates named after membership levels (e.g., "Gold", "Silver", "Bronze")
  • Template Assets: Images, localization files, and other pass assets
  • pass.json Template: JSON template with variable placeholders
Template Variables Available
Person Variables:
{{PersonFirstName}}
{{PersonLastName}}
{{PersonDisplayName}}
{{PersonEmail}}
{{PersonMobile}}

Member Variables:
{{MembershipLevelName}}
{{MemberPoints}}
{{MemberExternalId}}

System Variables:
{{OrganizationName}}
{{ExpiryDate}}
{{AuthToken}}
{{SerialNumber}}

Pass Generation Process

  1. Template Selection: System selects appropriate template based on membership level or defaults to MASTER
  2. Data Collection: Gathers person, member, and membership level information from database
  3. Variable Replacement: Replaces template variables with actual data
  4. Apple Wallet Compliance: Ensures all required fields and identifiers are correct
  5. Manifest Generation: Creates manifest.json with SHA-1 hashes of all files
  6. Digital Signing: Uses OpenSSL to create PKCS#7 signature
  7. ZIP Creation: Packages all files into .pkpass with no compression
  8. File Download: Automatically downloads the generated pass file

Generated Pass Details

Pass File Information
  • Filename Format: {PersonId}_{timestamp}.pkpass (e.g., 3_20250708185324849.pkpass)
  • Serial Number: PERSON_{PersonId}_{timestamp} format for uniqueness
  • Auth Token: pass-{PersonId}-{timestamp}-{random} for security
  • Expiry: Default 1 year from generation date
  • File Size: Typically 150-200KB depending on template assets

Troubleshooting Pass Generation

Common Issues and Solutions
  • Authorization Error: Ensure you're logged in and have proper permissions
  • Template Not Found: System will fallback to MASTER template automatically
  • Certificate Validation Warnings: These are informational and don't prevent pass generation
  • Download Fails: Check browser settings for download permissions
  • Pass Won't Open in Wallet: Verify pass contains required Apple Wallet fields

Advanced Features

  • Date Conflict Resolution: Automatically prefixes numeric values that could be interpreted as dates
  • Template Hardcoded Value Fixing: Automatically corrects common template configuration issues
  • Comprehensive Logging: Detailed generation logs for debugging and verification
  • Fallback Support: Graceful handling of missing data with sensible defaults
  • Template Bundle Management: Support for multiple template variations

Using PassKit Generation

  1. Navigate: Go to Person Edit, Active Members table, or Memberships page
  2. Click Generate: Click the "Generate Pass" button for the desired person/member
  3. Wait for Processing: System will show "Generating..." status during creation
  4. Download: Pass file will automatically download when complete
  5. Test: Add the pass to Apple Wallet to verify it works correctly

File Manager ✓ Working

Advanced file management with automatic archive extraction

The File Manager provides comprehensive file and folder management capabilities with special support for PassKit (.pkpass) and ZIP archive files. The system automatically extracts archives when uploaded to the Passes folder.

Core Features

File Operations
  • ✓ Working Upload files with drag & drop support
  • ✓ Working Download files with proper authentication
  • ✓ Working Delete files (renamed to .deleted format)
  • ✓ Working File backup system (renames existing files to .bak.001)
  • ✓ Working File search and filtering
Folder Operations
  • ✓ Working Create folders and subfolders
  • ✓ Working Navigate folder hierarchy
  • ✓ Working Delete folders (renamed to .deleted format)
  • ✓ Working Breadcrumb navigation
  • ✓ Working Default folder structure

Default Folders

Automatically Created Folders
  • Documents: General document storage
  • Images: Image file storage
  • Templates: Template file storage
  • Passes: PassKit and archive files with auto-extraction

Archive Extraction Features

Automatic Extraction in Passes Folder

When you upload .pkpass or .zip files to the Passes folder, they are automatically extracted:

  • PkPass Files: Apple Wallet passes are extracted to show manifest.json, pass.json, signature, and assets
  • ZIP Files: Standard ZIP archives are extracted to access their contents
  • Conflict Resolution: If extraction folder exists, timestamp is added for uniqueness
  • Success Feedback: Clear messages indicate extraction success or failure

Manual Extraction

For archive files in any folder, you can manually extract them:

  • Extract Button: Appears next to .pkpass and .zip files in the file list
  • One-Click Extraction: Click "Extract" to create a folder with the same name as the archive
  • Automatic Refresh: File list updates automatically after extraction
  • Error Handling: Clear error messages if extraction fails

Using the File Manager

  1. Navigate: Use breadcrumbs or click folder names to navigate
  2. Upload Files: Click "Upload File" or drag files to the page
  3. Create Folders: Click "Create Folder" to add new directories
  4. Download Files: Click "Download" button next to any file
  5. Extract Archives: Click "Extract" button next to .pkpass or .zip files
  6. Delete Items: Click "Delete" button to remove files or folders
  7. Search Files: Use the search box to find specific files

PassKit Development Workflow

Recommended Workflow for PassKit Development
  1. Upload your .pkpass file to the Passes folder
  2. File is automatically extracted to show all pass components
  3. Edit the extracted files (pass.json, manifest.json, etc.)
  4. Re-zip the files to create a new .pkpass
  5. Test the updated pass in Apple Wallet

Keyboard Shortcuts

  • Ctrl/Cmd + N: Create new folder
  • Ctrl/Cmd + U: Upload file
  • Escape: Close modals
  • Enter: Submit forms

Best Practices

  • Organization: Use folders to organize your files logically
  • Naming: Use descriptive file and folder names
  • PassKit Development: Use the Passes folder for all pass-related files
  • Backup Strategy: The system automatically backs up existing files
  • Archive Management: Extract archives to access their contents easily

Troubleshooting

Common Issues and Solutions
  • Upload Fails: Check file size limits and ensure you have proper permissions
  • Extraction Fails: Verify the file is a valid .pkpass or .zip archive
  • Download Issues: Ensure you're authenticated and the file exists
  • Folder Creation Fails: Check for invalid characters in folder names

Enhanced Table System ✅ New

Advanced table functionality with server-side processing, enhanced pagination, and XData-compatible queries.

Table Features ✅ Working

  • Server-Side Pagination: Efficient handling of large datasets
  • Detailed Record Counts: Shows "Showing 1-10 of 50 records"
  • Clickable Page Numbers: Jump to any page with smart ellipsis
  • Column Sorting: Click headers to sort with visual indicators
  • XData-Compatible Queries: Uses proper OData parameters
  • Responsive Design: Works on mobile and desktop

Pagination Features

Enhanced Pagination Controls
  • Record Information: "Showing 1-10 of 50 records" instead of simple page numbers
  • Page Navigation: Clickable page numbers: [1] [2] [3] ... [8] [9] [10]
  • Smart Ellipsis: Shows relevant pages with "..." for large datasets
  • Previous/Next: Standard navigation buttons
  • Page Size Options: Choose 10, 25, 50, or 100 records per page

Column Sorting

  • Visual Indicators: Arrows show current sort direction
  • Click to Sort: Click any sortable column header
  • Toggle Direction: Click again to reverse sort order
  • Server-Side: Sorting handled by server for better performance

Search and Filtering

  • Real-time Search: Filter results as you type
  • Server-Side Filtering: Efficient processing for large datasets
  • XData-Compatible: Uses proper OData filter expressions
  • Case-Sensitive: ⚠️ Filters must match exact case

Updated Tables

  • People Table: Enhanced with all new features
  • Locations Table: Full pagination and sorting
  • Members Table: Server-side processing enabled

Using Enhanced Tables

  1. Navigate to any table view (People, Locations, Members)
  2. Use page size dropdown to select records per page
  3. Click page numbers to jump to specific pages
  4. Click column headers to sort data
  5. Use search box for real-time filtering

Job Notifications ✓ Working

Comprehensive job alert system with real-time notifications and persistent tracking.

Core Features

  • Smart Badge Display: Red notification badge shows unread job count
  • Bootstrap Dropdown: Professional dropdown interface (400px width)
  • Persistent Storage: Job read states maintained across browser sessions
  • API Integration: Connected to Job API at 100.78.23.29/api/Job
  • Individual & Bulk Actions: Mark individual jobs or all jobs as read

Notification Features

  • Timestamp-based Detection: Intelligent new job detection
  • Status Intelligence: Color-coded status badges
  • Time Formatting: Relative time display (e.g., "2h ago")
  • Modal Interface: Detailed job information in modal view

Using Job Notifications

  1. Look for the bell icon in the top navigation bar
  2. Red badge appears when unread jobs exist
  3. Click the bell icon to open the dropdown
  4. View job details, status, and timestamps
  5. Mark individual jobs as read or use "Mark All Read"

Job Status Types

  • Completed - Successfully finished jobs
  • Failed - Jobs that encountered errors
  • In Progress - Currently running jobs
  • Pending - Queued jobs waiting to start

Data Management ✓ Working

Comprehensive data handling with CRUD operations, validation, and persistence.

CRUD Operations

  • Create: Add new records with validation
  • Read: View and list records with pagination
  • Update: Edit existing records with change tracking
  • Delete: Remove records with confirmation dialogs

Data Validation

  • Required Field Validation: Ensures mandatory fields are completed
  • Format Validation: Email, phone number format checking
  • Real-time Validation: Immediate feedback as you type
  • Server-side Validation: API-level validation and error handling

Data Persistence

  • API Storage: Primary data stored via REST API
  • Local Storage: Client-side caching for performance
  • Session Storage: Temporary data during user session
  • Form State: Automatic form data preservation

Unsaved Changes Indicator ✓ New

Visual feedback system that tracks form modifications and prevents data loss:

How It Works
  • Automatic Detection: System monitors all form fields for changes
  • Visual Indicator: Floating indicator appears in bottom-right corner when changes are detected
  • Field Highlighting: Modified fields get orange left border and background tint
  • Quick Save: "Save Now" button in the indicator for immediate saving
  • Navigation Protection: Warns before leaving pages with unsaved changes
Visual Elements
  • Pulsing Red Dot: Animated indicator to draw attention
  • "Changes Pending" Text: Clear status message
  • Save Button Animation: Main save buttons pulse when changes are pending
  • Smooth Animations: Fade-in/fade-out effects for professional appearance
Supported Forms
  • People add/edit forms
  • Location edit forms
  • All forms with data-entity attribute (automatic detection)

Inline Editing

Quick edit functionality available in table views:

  • Click the edit icon in any table row
  • Fields become editable inline
  • Save or cancel changes
  • Automatic validation and error display

Error Reporting & Support ✓ New

Advanced error reporting system with copy-to-clipboard functionality for technical support:

Automatic Error Detection
  • API Failures: Automatically captures failed network requests
  • JavaScript Errors: Catches and reports runtime errors
  • User-Friendly Display: Professional slide-in error notifications
  • Technical Details: Complete error information for debugging
Error Report Features
  • One-Click Copy: Copy complete error details to clipboard
  • Formatted Output: Structured error information for support teams
  • Context Information: Includes page URL, timestamp, and user agent
  • Stack Traces: Complete error stack for technical diagnosis
  • Visual Feedback: Confirmation when error details are copied
Using Error Reports
  1. When an error occurs, a red notification box appears
  2. Click "Copy Error Details" button
  3. Paste the copied information when contacting support
  4. Error box auto-dismisses after 10 seconds
For Support Teams

Error reports include: Error message, stack trace, page URL, timestamp, browser information, and any relevant API response data. This comprehensive information enables faster problem resolution.

Session Management & Auto-Logout ✓ Working

Comprehensive session management with automatic logout for security:

Session Monitoring
  • Background Checks: System monitors session validity every 60 seconds
  • Token Renewal: Automatically attempts to refresh tokens 5 minutes before expiry
  • Page Visibility: Checks session when you return to the browser tab
  • Secure Storage: Uses session storage that clears when browser closes
Auto-Logout Scenarios
  • Session Expiry: After 1 hour of inactivity (development mode)
  • Token Failure: When authentication tokens become invalid
  • Renewal Failure: When automatic token refresh fails
  • Security Issues: When token validation detects problems
User Experience
  • Silent Renewal: Tokens refresh automatically without interrupting work
  • Graceful Logout: Clear notification when session expires
  • Immediate Redirect: Automatic return to login page
  • Session Restoration: Valid sessions restored when returning to the system
Important Notes
  • Sessions automatically clear when you close the browser
  • Unsaved changes may be lost if session expires - use the unsaved changes indicator
  • Multiple browser tabs share the same session
  • System will attempt to save your work before logging out when possible

Recent Updates & Enhancements

Latest improvements and new features

Version 2025.1 - January Updates

🎉 Major Feature: PassKit Generation

Complete Apple Wallet Pass Generation System - Generate Apple Wallet passes directly from the CRM:

  • ✓ New Multiple Generation Points: Person Edit page, Active Members table, Memberships page
  • ✓ New Dynamic Template Variables: PersonName, MembershipLevel, Organization, etc.
  • ✓ New Apple Wallet Compliance: Correct identifiers, signatures, and validation
  • ✓ New Template Bundle System: Support for membership-level specific templates
  • ✓ New Secure Generation: PKCS#7 signing with proper certificate validation
  • ✓ New Automatic Download: Generated passes download automatically

Version 2024.1 - December Updates

UI Enhancements
  • ✓ New Modern dropdown action buttons on all tables
  • ✓ New Enhanced error dialogs with copy-to-clipboard functionality
  • ✓ New Updated green color scheme (#3a8f6f)
  • ✓ New Improved table column alignment and sort buttons
  • ✓ New UK currency display throughout membership system
Membership Management
  • ✓ Fixed API schema compliance for level creation
  • ✓ Enhanced Dropdown actions for all membership tables
  • ✓ Enhanced Delete functionality with proper confirmations
  • ✓ Enhanced Export features generate actual downloadable files
  • ✓ Enhanced Member details modal with comprehensive information
Technical Improvements
  • ✓ Enhanced Global state manager for page size persistence
  • ✓ Fixed API service method naming standardization
  • ✓ Enhanced Error handling with detailed diagnostic information
  • ✓ Enhanced Form validation and status saving across all entities
Data Management
  • ✓ Working Person status saving in edit forms
  • ✓ Working Location status saving in edit forms
  • ✓ Enhanced Consistent page size management across all pages
  • ✓ Enhanced Improved error reporting with contextual solutions

API Error Dialogs

When API errors occur (such as InvalidJsonProperty), the system now displays detailed error dialogs with:

  • Specific error codes and messages
  • Contextual solutions and recommendations
  • Technical details for debugging
  • Copy-to-clipboard functionality for error reporting

Dropdown Actions

All tables now feature modern dropdown action buttons that consolidate multiple actions into space-efficient menus:

  • People: Edit Person, View Location, Delete Person
  • Locations: Edit Location, View People, Delete Location
  • Membership Classes: Edit Class, Delete Class
  • Membership Levels: Edit Level, Manage Costs
  • Active Members: Edit Member, View Details, Remove Member

API Integration ✓ Working

Centralized API configuration with comprehensive endpoint management and error handling.

API Configuration

Base URL: https://100.78.23.29/api
Timeout: 30 seconds
Retries: 3 attempts
Format: JSON

Available Endpoints

  • Person API: /api/Person - People management
  • Member API: /api/Member - Member management
  • Location API: /api/Location - Location management
  • Job API: /api/Job - Job notifications
  • Auth API: /api/auth/* - Authentication endpoints

API Features

  • OData Support: Advanced filtering and querying
  • Search Filters: Automatic search query generation
  • Pagination: Configurable page sizes (10, 25, 50, 100)
  • Error Handling: Comprehensive error messages and retry logic
  • Mock Data: Fallback data for development and testing

Request Headers

Content-Type: application/json
Accept: application/json
X-Requested-With: XMLHttpRequest

Error Handling

  • Network Errors: Automatic retry with exponential backoff
  • HTTP Errors: User-friendly error messages
  • Validation Errors: Field-specific error display
  • Timeout Handling: Graceful timeout with user notification

Troubleshooting

Common Issues

Login Issues
  • Verify username and password are correct
  • Check internet connection
  • Clear browser cache and cookies
  • Try incognito/private browsing mode
Search Not Working
  • Ensure you've typed at least 2 characters
  • Check API connectivity
  • Refresh the page and try again
  • Clear search history if needed
Data Not Loading
  • Check network connection
  • Verify API server is accessible
  • Look for error messages in browser console
  • Try refreshing the page

Browser Console

For technical issues, check the browser console:

  1. Press F12 to open developer tools
  2. Click the "Console" tab
  3. Look for error messages in red
  4. Copy error messages for support

Performance Tips

  • Use modern browsers for best performance
  • Clear browser cache periodically
  • Close unused browser tabs
  • Ensure stable internet connection

Getting Help

If you continue to experience issues:

  • Document the steps that led to the problem
  • Note any error messages
  • Include browser and operating system information
  • Contact your system administrator

SMXiCore CRM User Manual - Last Updated: December 19, 2024 (Unsaved Changes & Error Reporting Features Added)
For technical support, contact your system administrator