CRMconnect Azuvio · Docs

IT / Administrator

Roles covered: System Administrator · IT Manager · Super Admin · Platform Configurator
Primary modules: Settings · Staff · Roles & Permissions · Custom Fields · API · Webhooks · Workflow Automation · 2FA · Utilities · Theme · Import/Export


Who this guide is for

Role What they do in CRMConnect
System Administrator Full platform configuration, user management, security
IT Manager API/Webhook integrations, automations, data import/export
Super Admin Full access, role and permission configuration, activity auditing
Platform Configurator Custom fields, themes, menus, business-specific settings

IT/Admin responsibility map

USERS & ACCESS                   PLATFORM CONFIGURATION
──────────────                   ──────────────────────
Staff Management                 General Settings (all categories)
Roles & Permissions              Company Branding (logo, colours, CSS)
Two-Factor Authentication        Email / SMTP
Custom Fields                    Billing Config (invoice series)
Contact Permissions              Localization (language, date, currency)

INTEGRATIONS & AUTOMATIONS       MONITORING & AUDIT
──────────────────────────       ──────────────────
API Management                   Activity Log
Webhooks                         Ticket Pipe Log
Workflow Automation              Email Queue
Zapier / Make                    Webhook Debug Log
External CRM Sync

DATA & UTILITIES                 SECURITY
────────────────                 ────────
Excel Import                     2FA enforcement
Media Files                      Seat limit management
Bulk PDF Export                  Admin protection rules
Tag Management                   Password policies
Database / Backup

System Administrator routine

On initial setup (one-time)

1. Company details          /admin/settings (tab: General)
2. Logo + favicon           /admin/settings → upload logo
3. SMTP email               /admin/settings (tab: Email) → test
4. Invoice series           /admin/billing/config
5. VAT rates                /admin/taxes
6. Currencies + exchange    /admin/currencies
7. Payment methods          /admin/paymentmodes
8. Custom roles             /admin/roles
9. Departments              /admin/departments
10. Staff users             /admin/staff
11. 2FA for admins          /admin/authenticator_2fa
12. Custom fields           /admin/custom_fields
13. Core automations        /admin/workflow_automation
14. Webhooks                /admin/webhooks
15. API integration         /admin/api/api_management

Daily / Weekly (Monitoring)

  • Activity Log /admin/utilities/activity_log — who did what in the platform
  • Email Queue /admin/utilities → Email Queue — blocked or errored emails
  • Ticket Pipe Log /admin/utilities/pipe_log — email import errors
  • Webhook Logs /admin/webhooks → Logs per webhook — failed requests
  • API Usage /admin/api/api_management — API usage per token

General Settings

Where: /admin/settings

Settings are organised in tabs. Here is what you configure in each:

Tab: General

Setting Description
Company name Appears on all documents and emails
Logo (light mode) PNG/JPG — shown in admin header and on PDF documents
Logo (dark mode) Version for dark theme
Favicon Browser tab icon
Signature Stamp/signature image on documents
PDF logo width Logo width on PDF invoices
Physical address Company address on documents

Tab: Email

Setting Description
email_protocol smtp (recommended) / crmconnect (default server)
smtp_host SMTP server (e.g. smtp.gmail.com, mail.company.com)
smtp_port Port: 587 (TLS), 465 (SSL), 25 (plain)
smtp_email Sending address (From)
smtp_username SMTP authentication username
smtp_password Password (stored encrypted)
smtp_encryption tls / ssl / none
Email header/footer Custom HTML for all emails
Email signature Automatic signature on emails

SMTP Test: Send Test Email button after saving — verify emails arrive before activating the platform.

CRMConnect default server (fallback if you have no own SMTP):

Tab: Localization

Setting Description
Default language Admin interface language
Date format DD/MM/YYYY or MM/DD/YYYY
Thousands separator . or ,
Decimal separator , or .
Timezone Critical for correct timestamps

Tab: Clients (Client Portal)

Configure what the client sees and can do in their own portal:

  • Visible tabs on the client profile
  • Default contact permissions (what contacts can see)
  • Document visibility (invoices, proposals, contracts)

Tab: Cronjob

Configure the cron URL and check the last execution. The cron is essential for:

  • Recurring invoice generation
  • WooCommerce synchronisation
  • Email queue processing
  • Contract expiry notifications
  • Marketing Automation

Server cron job configuration:
* * * * * wget -q -O /dev/null "https://company.com/cron/index"
Or with curl: * * * * * curl -s "https://company.com/cron/index" > /dev/null

Tab: Security / E-Sign

  • Electronic signature configuration (for contracts and documents)
  • Authentication settings

Staff Management

Where: /admin/staff

Adding a new user

  1. Add Staff → fill in:
    • Email (unique in the system — is the username)
    • First name, Last name
    • Role (from the configured roles list)
    • Departments (can be in multiple)
    • Temporary password
  2. Tick Send welcome email (with password setup link)
  3. Save

Key fields from `tblstaff` (IT perspective)

Field Notes
email Username and notifications address (unique)
active 1 = can access CRM; 0 = blocked
admin 1 = full access without permission checks
role ID of the assigned role
last_login Last login timestamp
last_ip IP from last login
last_password_change Date password was changed
two_factor_auth_enabled 1 = 2FA enabled for the user
new_pass_key Password reset token (expires)

Deactivation vs. deletion

Action When Effects
Deactivate (active = 0) Employee on temporary leave or suspicious Cannot log in, data remains
Delete Employee who has left permanently All data (tickets, tasks, leads) reallocated to another selected staff member

Important: On deletion, the system forces selection of another staff member to take over all records — no deletion without reallocation.

Licensing limits (Seat Management)

The number of active users is limited by licence:

  • MEMBERS_INCLUDED — seats included in the base licence
  • extra_seats — additionally purchased seats

If you try to activate more staff than the licence allows → error. Deactivate an inactive user or purchase additional seats.

Administrator protection

The system prevents:

  • Deleting the last active administrator
  • Self-revoking admin rights (if you are the only admin)
  • Blocking your own admin account

Roles and Permissions

Where: /admin/roles

Access hierarchy

Super Admin (admin = 1)
  → Full access to everything, permissions not checked

Staff with Role
  → Inherit role permissions
  → Individual override via staff_permissions (if configured)

Client Contact
  → Separate permissions (what they can see in portal)
  → Configured per contact or as global default

Permission structure per module

Each module supports combinations of:

Permission Description
view Sees all records (everyone's)
view_own Sees only their own records
create Can create new records
edit Can edit records
delete Can delete records

Example "Sales Agent" role:

Leads:        view_own + create + edit
Proposals:    view + create + edit
Invoices:     view_own
Clients:      view + create
Settings:     — (no access)
Reports:      view

Creating a custom role

  1. /admin/rolesAdd Role
  2. Name the role (e.g. "Warehouse Operator", "Accountant", "Sales Manager")
  3. Tick permissions per module
  4. Save → role appears in dropdown when adding staff

Individual permission override

If one employee needs different permissions from their role:

  • From the staff record → Permissions tab
  • Set a specific override — takes priority over the general role

Client Contact Permissions (Portal)

Where: /admin/settings → Clients tab → Default Contact Permissions

Configure what a contact can see in the portal by default:

  • Invoices
  • Sales Orders
  • Proposals
  • Contracts
  • Projects
  • Tickets
  • Files

You can set different permissions per individual contact from the contact record.


Two-Factor Authentication (2FA)

Where: /admin/authenticator_2fa/userlist

Supported method

TOTP (Time-based One-Time Password) — compatible with:

  • Google Authenticator
  • Microsoft Authenticator
  • Authy
  • Any standard TOTP app

Activation flow per user

User activates themselves:

  1. From personal profile → Security section → Enable 2FA
  2. Scan QR code with authentication app
  3. Enter the 6-digit code for verification
  4. 2FA activated → two_factor_auth_enabled = 1

Admin resets 2FA:

  1. /admin/authenticator_2fa/userlist — list with status per user
  2. Identify the user who lost access (changed phone, etc.)
  3. Reset → enrollment_request = 1 → user can re-enrol

View 2FA status

List of users with:

  • User (staff or client contact)
  • Type: Admin / Customer
  • Status: Enrolled / Not enrolled / Reset requested
  • Actions: Reset, Revoke

Security recommendation

Enforce 2FA for all admins and staff with financial access (Finance, Legal). You can communicate the requirement via internal Announcement.


Custom Fields

Where: /admin/custom_fields

Entities that support custom fields

Entity Typical use
Leads Industry, employee count, estimated budget, detailed source
Clients VAT number, trade register number, ERP client code, credit category
Contacts Detailed function, LinkedIn, communication preferences
Invoices Customer order number, internal reference, project
Sales Orders Quote reference, special terms
Proposals Acceptance deadline, proposal version
Contracts File number, legal basis, confidentiality level
Expenses Receipt number, cost centre, approved by
Tickets Equipment serial number, software version, SLA priority
Tasks Sales order hours, difficulty level, external reference
Projects Internal project number, client manager, project type
Items Catalogue number, origin, warranty term
Staff Badge number, ID number, grade
Vendors ERP supplier code, category, internal rating

Available field types

Type Use
text Short text — code, number, reference
number Numeric value
textarea Long text — description, notes
select Dropdown — predefined values
checkbox Yes/No
date_picker Date selector
date_picker_time Date + time selector
email Email format validation

Field configuration

Option Description
required Mandatory field on creation
show_on_pdf Appears on PDF documents (invoices, contracts)
show_on_table Appears as a column in the module list
show_on_client_portal Visible/editable by client in portal
disallow_client_to_edit Visible but read-only for client
only_admin Visible only to admins (hidden from regular staff)
bs_column Column width in form (Bootstrap grid: 3/4/6/12)

API Management

Where: /admin/api/api_management

Creating an API token

  1. Add Token → fill in:
    • Name (e.g. "Zapier Integration", "Mobile App", "ERP Sync")
    • Associated staff (the token acts on behalf of that staff member)
  2. Token generated → copy it — shown only once
  3. The API client sends header: authtoken: {token} with every request

Entities accessible via API

The REST API covers all main modules:

CRM: Leads, Clients, Contacts, Opportunities, Contracts
Sales: Invoices, Sales Orders, Proposals, Payments, Items
Operations: Projects, Tasks, Tickets, Expenses, Milestones
HR: Staff, Departments, Roles
Finance: Currencies, Taxes, Expense Categories
Knowledge: Knowledge Base, Surveys, Goals
Warehouse: Warehouses, Commodities
Marketing: Marketing Campaigns
Misc: Custom Fields, Files, Tags

Base URL: https://company.com/api/
Auth header: authtoken: {token}

Monitoring API usage

The API dashboard shows:

  • Number of requests per token
  • Top accessed routes
  • Daily/weekly/monthly statistics
  • Errors and failed requests

Rate Limiting

Rate limiting is applied per token to prevent abuse.


Webhooks

Where: /admin/webhooks

Webhook configuration

Field Notes
name Internal webhook name
request_url Destination URL (HTTPS recommended)
request_method POST (most common), GET, PUT, DELETE, PATCH
request_format JSON / XML / URL-encoded
webhook_for The module/entity that triggers
webhook_action Specific events (create, update, delete, status change)
request_header Custom headers (e.g. Authorization: Bearer token)
request_body Custom fields in payload
active 1 = active / 0 = disabled
debug_mode 1 = logs every request and response in detail

Debugging a webhook

When a webhook isn't working:

  1. Enable debug_mode = 1 on the webhook
  2. Send a test event
  3. From the webhook list → View Logs → see the request sent and response received
  4. Identify the problem (wrong URL, authentication, payload format)
  5. Fix and disable debug mode

Clearing logs

Debug logs can grow quickly — clear them periodically or after resolving the issue.


Workflow Automation — admin perspective

Where: /admin/workflow_automation

What the admin configures

Element Description
Workflow definitions Create/edit/delete automations
Enable/Disable Activate or stop a workflow without deletion
Private workflows Workflows visible only to their creator
Task templates Templates for tasks automatically created by workflows
Execution logs Run history — what worked, what failed
Categories Organising workflows by category

Entities supported as triggers (50+ types)

Leads, Clients, Opportunities, Proposals, Sales Orders, Contracts, Invoices, Payments, Tasks, Projects, Tickets, Expenses, Purchase Orders, Receipt Notes, Manufacturing Orders, Staff, Recruitment, etc.

Monitoring execution

From tbwa_flows_logs and tbwa_action_logs:

  • Which workflows executed
  • Result of each action (success/error)
  • Execution timestamp
  • Entity that triggered execution

Automatic task templates

Configure templates for tasks created by automations:

  • Task title (with merge fields)
  • Assigned person
  • Followers
  • Start date, due date (relative to trigger)
  • Description
  • Priority

Email Queue — queue management

Where: /admin/utilities → Email Queue (or directly from Settings → Email)

What you find in the email queue

All platform emails (notifications, invoices, proposals, ticket notifications) pass through the queue before sending. Blocked emails remain in the queue.

Action When
Process All Force sending all pending emails
Send Single Send a specific email immediately
Retry Failed Resend errored emails
Delete Delete emails you no longer want sent

Common causes for blocked emails

Problem Cause Solution
Authentication failed Wrong SMTP password Reconfigure SMTP in Settings → Email
Connection refused Wrong host or port Verify with email provider
SSL/TLS error Wrong encryption Switch from ssl to tls or vice versa
Rate limit exceeded Too many emails per hour Configure throttling or upgrade email plan

Audit & User Action Monitoring

CRMConnect has two parallel systems for recording actions, plus specialised logs per channel.

1. Global Activity Log

Where: /admin/utilities/activity_log

Records chronologically any action across the entire system called via log_activity(). Fields stored in tblactivity_log:

Field Content
description Action text (e.g. Invoice Created #INV-0042 for ACME Ltd)
date Exact timestamp YYYY-MM-DD HH:MM:SS
staffid Full name of the user; [CRON] if automatic

Recorded actors: Logged-in staff · portal clients (with contact name) · automatic cron ([CRON])

Recorded actions (examples):

Module Example descriptions
Clients New Client Added · Client Deleted: ACME Ltd · Client Updated
Invoices Invoice Created #INV-0042 · Invoice Sent · Payment Recorded
Leads New Lead Added · Lead Status Changed · Lead Converted to Client
Staff Staff Member Added · Staff Member Deleted: John Doe · Password Changed
Settings Settings Updated (any change, without field detail)
Roles Role Created · Role Updated · Role Deleted
Proposals Proposal Accepted by Client · Proposal Declined
Contracts Contract Signed Digitally
Automations Workflow Automation Executed: [Name]

Filtering:

  • By date — isolate activity from a period (incident, audit)
  • By user — everything a specific staff member did

Export: CSV for external audit or compliance archiving.

Clear: Permanently deletes the entire log — irreversible. Always export before clearing.


2. Entity Activity Log (per record)

Where: "Activity" tab from any record's detail view

Each lead, client, invoice, project, ticket has its own change timeline visible directly in the interface. Stored in tblgeneral_activity_log.

Key fields:

Field Content
full_name The user who acted
description What happened to that record
additional_data Old → new values (for modified fields)
date Exact timestamp

Use case: When a client claims something changed on their account, open the record → Activity tab → see exactly who, when and what was modified.


3. Specialised logs

Log URL What it records
Email Pipe Log /admin/utilities/pipe_log Emails received via pipe: sender, subject, status, exact error
WhatsApp Activity /admin/whatsapp/activity_log Messages, campaigns, bot triggers, template sends
API Usage Stats /admin/api/usage_stats API calls per endpoint, per token, per day
Innoship Audit /admin/innoship/audit Each AWB request: request sent, response, errors

Audit scenarios — how to investigate

"Who deleted record X?"

  1. /admin/utilities/activity_log → filter approximate date
  2. Search Deleted + record name in description field
  3. staffid column = responsible user

"What did user Y do yesterday?"

  1. Activity Log → filter yesterday + user name
  2. Complete list of their actions in chronological order

"Who changed a lead's status?"

  1. Open the lead → Activity tab
  2. The Lead Status Changed line shows the user + exact timestamp

"Settings were modified — who and when?"

  1. Activity Log → search Settings Updated
  2. Note: the log records that settings changed but not the exact field — also check by comparing current config with backup

"Activity outside working hours?"

  1. Export log for a period (CSV) → filter in Excel by hour in the date column
  2. Actions at unusual hours (e.g. 3:00 AM) are a warning signal

"Why was an unexpected automatic email sent?"

  1. Activity Log → search Workflow Automation Executed or [CRON]
  2. Identify the responsible automation → /admin/workflow_automation → check the trigger

Compliance recommendations

Action Frequency
Export Activity Log Monthly — archive the CSV
Check users with admin rights Quarterly — /admin/staff → "Admin" column
Review roles and permissions Every staff departure/hire
Clear old log Annually — after archiving
Check active API tokens Semi-annually — /admin/api/api_management → delete expired or unused tokens

Theme & Branding — visual customisation

Where: /admin/settings → General (logo, favicon) + /admin/theme_style (CSS)

Logo and images

Element Where Format
Logo (light) Settings → General PNG/JPG, transparent recommended
Logo (dark mode) Settings → General PNG/JPG, white/light version
Favicon Settings → General ICO or PNG 32×32
PDF Signature/Stamp Settings → General Transparent PNG

Custom CSS

You can add CSS that overrides the platform's default style:

Field Application
theme_style_custom_admin_area Admin interface only
theme_style_custom_clients_area Client portal only
theme_style_custom_clients_and_admin_area Both

Custom CSS example:

/* Change accent colour from purple to blue */
:root { --accent: #0066cc; }

/* Larger logo in sidebar */
.brand { padding: 20px; }
.brand img { max-width: 180px; }

Data Import (Excel Import)

Where: /admin/excelimport/import_data

What you can import

Entity Mapped fields
Clients Name, VAT number, address, contact, email, phone
Leads Name, email, phone, company, source, status
Staff Email, first name, last name, department, role
Items Code, name, price, VAT, group
Commodities (Warehouse) Code, name, initial stock, purchase price
Expenses Date, amount, category, payment method

Import process

1. Download Excel template for the desired entity
   ↓
2. Fill in data in the template
   ↓
3. Upload Excel file to CRM
   ↓
4. Map Excel columns → CRM fields
   ↓
5. Dry run / Simulation (preview errors without actual import)
   ↓
6. Confirm actual import
   ↓
7. Results report: imported / errors / duplicates

Recommendation: Always do a dry run before the actual import — identify format errors without compromising existing data.


Media Files Manager

Where: /admin/utilities/media

File manager based on elFinder — visual browser for the /uploads/ directory:

  • Browse folder structure
  • Upload new files
  • Create/delete folders
  • Preview images
  • Download individual files
  • Delete unused files

Useful for: cleaning old files, checking uploads, managing PDF templates.


Tag Management

Where: /admin/settings → Misc tab → Tags

Available operations

Operation Description
Create tag Add new tags at global level
Merge tags Combine two tags into one (e.g. "client" + "clients" → "clients")
Compress Remove duplicates and unused tags
Delete Delete a tag from all entities where it appears

Tags apply to: Leads, Clients, Contracts, Tasks, Projects and others.


Ticket Pipe Log Management

Where: /admin/utilities/pipe_log

Logs all emails processed via pipe.php:

  • Accepted emails (ticket created or reply added)
  • Rejected emails (spam filter, loop detection, rate limit)
  • Processing errors

Useful for debugging when clients report "the email didn't create the ticket".

Logged fields:

  • Date and time
  • Sender address
  • Email subject
  • Action (ticket creation / reply addition / blocked)
  • Reason for blocking (if applicable)

Clear log: Clear Pipe Log button — permanently deletes (archive if needed).


Complete initial setup checklist

Recommended order for a new instance:

Phase 1 — Basic configuration

  • Company details + Logo + Favicon /admin/settings
  • SMTP Email — test send /admin/settings → Email
  • Timezone + Date format + Currency /admin/settings → Localization
  • VAT rates /admin/taxes
  • Payment methods (bank accounts) /admin/paymentmodes
  • Invoice series /admin/billing/config
  • Currencies (if multi-currency) /admin/currencies

Phase 2 — Users and access

  • Custom roles /admin/roles
  • Departments /admin/departments
  • Staff users /admin/staff
  • 2FA for admins /admin/authenticator_2fa
  • Client contact permissions /admin/settings → Clients

Phase 3 — Data customisation

  • Custom fields per entity /admin/custom_fields
  • Contract templates /admin/contracts/templates
  • Contract types /admin/contracts/types
  • Lead statuses + pipelines /admin/leads/statuses
  • Ticket statuses + priorities /admin/tickets/statuses
  • Predefined ticket replies /admin/tickets/predefined_replies

Phase 4 — Integrations

  • API tokens for external integrations /admin/api/api_management
  • Webhooks for external notifications /admin/webhooks
  • WooCommerce/Shopify store config /admin/woocommerce/stores
  • Innoship API credentials /admin/innoship/settings
  • SAGA/WinMentor connection /admin/saga or /admin/winmentor

Phase 5 — Automation

  • Workflow Automation — essential flows /admin/workflow_automation
  • Cron job configured on server
  • Custom email templates
  • Spam filters /admin/spam_filters

Phase 6 — Security and audit

  • 2FA enabled for all admins
  • Activity Log verified (logging is working)
  • Backup plan defined
  • Complete end-to-end test on all main flows

REST API — Complete Architecture

Where: /admin/api/api_management
Base URL: https://company.com/api/
API Reference: crmconnect_api_docs.md

CRMConnect exposes a complete REST API built on CodeIgniter with the REST_Controller extension. It covers 101 controllers organised by module.

Authentication:

Method Token header Expires Use
API Token (standard) authtoken: {token} ~10 years Server-to-server integrations
JWT (Flutter/Mobile) Authorization: Bearer {jwt} 7 days Mobile applications

Supported response formats:

Format Query param Use
JSON default All modern integrations
XML ?format=xml Legacy systems, EDI-adjacent
CSV ?format=csv Tabular data export
JSONP ?format=jsonp Browser cross-origin
HTML ?format=html Debug/preview

Available endpoints — complete map

CRM & Sales:

GET/POST/PUT/DELETE  /api/leads
GET/POST/PUT/DELETE  /api/opportunities
GET/POST/PUT/DELETE  /api/clients
GET/POST/PUT/DELETE  /api/contacts
GET/POST/PUT/DELETE  /api/contracts
GET/POST/PUT/DELETE  /api/proposals
GET/POST/PUT/DELETE  /api/estimates
GET/POST/PUT/DELETE  /api/invoices
GET/POST/PUT/DELETE  /api/payments
GET/POST/PUT/DELETE  /api/expenses
GET/POST/PUT/DELETE  /api/projects
GET/POST/PUT/DELETE  /api/tasks
GET/POST/PUT/DELETE  /api/tickets
GET/POST/PUT/DELETE  /api/milestones
GET/POST/PUT/DELETE  /api/goals
GET/POST/PUT/DELETE  /api/surveys
GET/POST/PUT/DELETE  /api/marketing_campaigns

WMS — Warehouse Management System:

GET/POST/PUT/DELETE  /api/wms/warehouses
GET/POST/PUT/DELETE  /api/wms/commodities
GET/POST/PUT/DELETE  /api/wms/goods_receipt
GET/POST/PUT/DELETE  /api/wms/goods_delivery
GET/POST/PUT/DELETE  /api/wms/stocks
GET/POST/PUT/DELETE  /api/wms/transfers

Purchase Management:

GET/POST/PUT/DELETE  /api/purchase/vendors
GET/POST/PUT/DELETE  /api/purchase/purchase_orders
GET/POST/PUT/DELETE  /api/purchase/purchase_requests
GET/POST/PUT/DELETE  /api/purchase/vendor_invoices

OmniSales:

GET/POST/PUT/DELETE  /api/omni_sales/orders
GET/POST/PUT/DELETE  /api/omni_sales/channels
GET/POST/PUT/DELETE  /api/omni_sales/returns

Config & Reference Data:

GET  /api/departments
GET  /api/roles
GET  /api/staff
GET  /api/taxes
GET  /api/currencies
GET  /api/countries
GET  /api/payment_modes
GET  /api/expense_categories
GET  /api/custom_fields
GET  /api/items

Pagination

GET /api/leads?nr_page=1&per_page=50

Standard response

{
  "status": true,
  "data": [...],
  "total_pages": 10,
  "current_page": 1
}

Mobile Applications — Android & iOS

CRMConnect has native mobile apps for Android and iOS, available in the Google Play Store and Apple App Store.

The mobile apps are 1:1 with the web platform — any module, feature and data available in the web interface is also accessible from the mobile app, adapted for mobile screens. Users work with the same data in real time, regardless of whether they access CRMConnect from a browser or from their phone.


Deployment: Cloud (AWS) and On-Premise

Application architecture

Component Technology
Backend PHP (CodeIgniter)
Database MySQL / MariaDB
Web Server Apache or Nginx
Containerisation Docker + Kubernetes
Cron jobs Kubernetes CronJob
Cache Redis / Memcached

Cloud — AWS with Kubernetes (CRMConnect standard infrastructure)

CRMConnect runs on Amazon Web Services using Kubernetes as the container orchestration platform. Each client receives their own dedicated instance — complete single-tenant architecture.

Single-tenant model — why it matters:

Aspect Single-Tenant (CRMConnect) Multi-Tenant
Data isolation Complete — separate instance Partial — data in the same DB
Customisation Per client, no impact on others Limited by common schema
Performance Dedicated, predictable Shared, variable
Security Complete segregation at pod level Logical isolation in DB
Updates Controlled per client Simultaneous for all

On-Premise (Self-hosted)

CRMConnect can also be installed on-premise, on the client's own infrastructure — physical server, VMware/Hyper-V or private cloud.

Minimum requirements:

  • PHP 7.4+ (8.1+ recommended)
  • MySQL 5.7+ / MariaDB 10.3+
  • Apache 2.4+ or Nginx
  • PHP extensions: mysqli, curl, mbstring, gd, zip, json, openssl
  • SSL/HTTPS — mandatory for mobile apps and API
  • Cron job configured on server

Open Platform

CRMConnect as a platform, not a fixed product

CRMConnect is an open platform — not a rigid product with fixed features. The modular architecture allows extending and adapting the platform to any business need without compromising stability or updateability.

Core principles:

Principle Description
Open API Any external system can integrate CRMConnect via REST API — ERP, WMS, e-commerce, BI, RPA
Module system Any new functionality is built as an independent module without modifying the core
Shared modules Any custom module developed can be activated on any other client's instances
Dev freedom Clients can work with their own dev team or own development partners
No vendor lock-in Integrates with any ERP, WMS, e-commerce platform or third-party app

EDI & AS2 — EDIconnect

CRMConnect offers native EDI capability via EDIconnect — an integrated module that makes CRMConnect not just an EDI data consumer, but an EDI service provider for its clients.

EDI (Electronic Data Interchange) = automatic exchange of commercial documents (orders, confirmations, invoices, delivery notes, manifests) between trading partners' IT systems, without human intervention.

AS2 (Applicability Statement 2) = the secure transport protocol for EDI over HTTPS, with mutual authentication and digital signature (EDIINT/RFC 4130 standard). AS2 is the preferred protocol in retail, automotive, logistics and global supply chains.

Where: /admin/edi

EDIconnect manages the exchange of commercial documents with business partners using EDI standards.

Supported EDI formats:

Standard Typical use Industries
ANSI X12 USA/Canada supply chain Retail, Automotive, Healthcare
EDIFACT International Logistics, Shipping, Europe
UBL 2.1 European eInvoicing Public administration, EU
JSON/XML Modern API integrations Tech, SaaS, Fintech

External ERP integrations

CRMConnect connects bidirectionally with multiple Romanian and international ERPs:

  • Merlin ERP — 23-step bidirectional sync (items, partners, documents, transactions)
  • Triton ERP (SoftOne) — 15-step sync (references, partners, transactions); imported invoices are locked in CRM
  • MerchantPro — bidirectional e-commerce sync (products, clients, orders, stock, prices)
  • SmartCRM — REST API sync
  • SAGA & WinMentor — accounting integrations (see Finance Department)
  • ParsePilot — OCR for scanning and extracting data from received invoices (PDF, image)

International ERP & Accounting integrations

CRMConnect integrates with major international ERP and accounting platforms via REST API, Zapier, Make, Boomi, MuleSoft or custom middleware:

  • SAP (S/4HANA, Business One, ECC) — via OData / Service Layer / RFC; invoices, clients, payments, stock
  • QuickBooks Online — via Zapier or direct OAuth 2.0 API; invoices, clients, payments, expenses
  • Oracle NetSuite — via SuiteScript, Celigo, or direct REST API; sales orders, invoices, stock
  • Xero — via Zapier or direct OAuth 2.0 API; invoices, credit notes, clients, payments

Advanced security checklist

Infrastructure

  • HTTPS/SSL on all endpoints (mandatory for mobile apps + API)
  • Firewall — restrict MySQL port access to web server only
  • Fail2ban or similar — block IPs after repeated login failures
  • WAF (Web Application Firewall) — recommended in cloud (AWS WAF, Cloudflare)
  • Automated backup DB + /uploads/ with at least 30 days off-site retention

Application

  • Mandatory 2FA for all admins and users with financial access
  • API tokens rotated periodically (at least annually)
  • Webhook URLs — use HTTPS with secret header validation
  • SMTP credentials — rotated and never in plain text in repository
  • Activity Log — monitored weekly for suspicious actions
  • Seat management — accounts deactivated immediately when employee leaves

Quick reference

Modules: General Settings · Custom Fields · GDPR · Two-Factor Authentication · My Profile · Utilities · Miscellaneous · Team Password Manager · API Management · Webhooks · Workflow Automation · Excel Import · Staff · Roles & Permissions · Departments

Workflows: Workflow Automation · Webhooks

← Back to Department Guides

Tip

Test every integration (SMTP, API tokens, webhooks) immediately after configuration using the platform's built-in test functions — a broken integration discovered at 9 AM on Monday when invoices aren't sending is always more urgent than it needed to be.

Note

Offboarding is as important as onboarding. Staff account deactivation, role permission removal, and API/portal credential revocation should be executed on the last day as a single checklist — not discovered weeks later during an access audit.