Pas ASD-PMA aan uw werkwijze aan
# Admin > Settings > Branding
# Upload logo en stel kleuren in via de UI
# System Console > Customization > Custom Branding
MATTERMOST_SITE_NAME=My Company
MATTERMOST_SITE_DESCRIPTION=Team Communication
# Setup > Settings > Website Settings
# Upload logo en favicon
# superset_config.py
APP_NAME = "My Company Analytics"
APP_ICON = "/static/assets/images/logo.png"
| Rol | Rechten |
|---|---|
| Admin | Volledige toegang |
| Agent | Tickets beheren |
| Customer | Eigen tickets bekijken |
| Rol | Rechten |
|---|---|
| Manager | Project beheer |
| Developer | Issues bewerken |
| Reporter | Issues aanmaken |
| Rol | Rechten |
|---|---|
| System Manager | Volledige toegang |
| Projects User | Projecten beheren |
| Sales User | CRM en verkoop |
# Zammad LDAP
ZAMMAD_LDAP_HOST=ldap.example.com
ZAMMAD_LDAP_PORT=389
ZAMMAD_LDAP_BASE_DN=dc=example,dc=com
# Mattermost LDAP
MATTERMOST_LDAP_SERVER=ldap.example.com
MATTERMOST_LDAP_PORT=389
Automatiseer acties op basis van ticket events:
# Voorbeeld: Auto-assign op keyword
Trigger: Auto-assign billing
Condition:
- ticket.title contains "billing"
- ticket.title contains "invoice"
Action:
- ticket.group = Finance
- ticket.owner = finance-team
Configureer status transities per tracker:
| Van Status | Naar Status | Rollen |
|---|---|---|
| New | In Progress | Developer, Manager |
| In Progress | Resolved | Developer |
| Resolved | Closed | Manager |
Maak eigen integraties:
// Voorbeeld: Custom notificatie
const ticket = $input.first().json;
if (ticket.priority === 'high') {
// Stuur naar Mattermost
await $http.post(webhookUrl, {
text: `Urgent: ${ticket.title}`
});
}
# Admin > Objects > Ticket
# Voeg nieuwe attributen toe
| Veld | Type | Gebruik |
|---|---|---|
| redmine_id | Integer | Link naar Redmine |
| customer_type | Select | Enterprise/SMB |
| product | Select | Product categorie |
# Admin > Custom fields > New
| Veld | Type | Gebruik |
|---|---|---|
| T-shirt Size | List | Estimation |
| Sprint | Version | Planning |
| Epic | Issue | Groupering |
# Customize > Custom Field
| DocType | Veld | Type |
|---|---|---|
| Project | redmine_id | Int |
| Task | external_ref | Data |
<!-- Ticket bevestiging -->
<p>Beste #{ticket.customer.firstname},</p>
<p>Wij hebben uw verzoek ontvangen met referentie
<strong>#{ticket.number}</strong>.</p>
<p>Wij nemen zo spoedig mogelijk contact met u op.</p>
<p>Met vriendelijke groet,<br/>
Support Team</p>
<!-- Offerte email -->
<p>Geachte {{ doc.customer_name }},</p>
<p>Hierbij ontvangt u onze offerte {{ doc.name }}.</p>
<p>Totaalbedrag: {{ doc.grand_total }}</p>
Datasets aanmaken
Charts maken
Dashboard samenstellen
-- Tickets per dag
SELECT
DATE(created_at) as datum,
COUNT(*) as tickets
FROM tickets
GROUP BY DATE(created_at)
ORDER BY datum DESC
LIMIT 30;
-- Open issues per project
SELECT
p.name as project,
COUNT(*) as open_issues
FROM issues i
JOIN projects p ON i.project_id = p.id
WHERE i.status_id NOT IN (5, 6)
GROUP BY p.id;
Configureer waar notificaties naartoe gaan:
| Event | Channel | Bot |
|---|---|---|
| Nieuwe P1 ticket | #support-urgent | Zammad Bot |
| Issue status change | #development | Redmine Bot |
| Deal gewonnen | #sales | ERPNext Bot |
# Zammad naar Mattermost
ZAMMAD_MATTERMOST_WEBHOOK=https://mattermost.example.com/hooks/xxx
# Redmine naar Mattermost
REDMINE_MATTERMOST_WEBHOOK=https://mattermost.example.com/hooks/yyy
| Service | Instelling |
|---|---|
| Zammad | Admin > Settings > Localization |
| Redmine | Admin > Settings > Display |
| ERPNext | Setup > Settings > System Settings |
| Mattermost | System Console > Localization |
# Algemeen
TZ=Europe/Amsterdam
# Per service
ZAMMAD_TIMEZONE=Europe/Amsterdam
ERPNEXT_TIME_ZONE=Europe/Amsterdam
Maak eigen API endpoints via n8n:
// Webhook endpoint voor externe systemen
app.post('/webhook/custom', async (req, res) => {
const data = req.body;
// Verwerk data
await createTicket(data);
res.json({ success: true });
});
# Caddy rate limiting
CADDY_RATE_LIMIT=100
CADDY_RATE_LIMIT_WINDOW=1m
# Alleen specifieke databases
BACKUP_DATABASES=zammad,redmine
# Exclude grote tabellen
BACKUP_EXCLUDE_TABLES=sessions,logs
# Automatische restore test
BACKUP_VERIFY=true
BACKUP_VERIFY_SCHEDULE=0 4 * * 0
# PostgreSQL
POSTGRES_SHARED_BUFFERS=256MB
POSTGRES_WORK_MEM=64MB
# MariaDB
MARIADB_INNODB_BUFFER_POOL_SIZE=256M
# Redis configuratie
REDIS_MAXMEMORY=256mb
REDIS_MAXMEMORY_POLICY=allkeys-lru