Skip to main content

QuantumLock™ Enterprise Adoption Guide

Complete Enterprise Adoption Guide


📋 Table of Contents

  1. Introduction
  2. Assessment & Planning
  3. Environment Preparation
  4. Technical Integration
  5. Code Protection with Nuitka
  6. Licensing Configuration
  7. License Management
  8. Compliance e Auditoria
  9. Monitoring & Analytics
  10. Troubleshooting
  11. Best Practices
  12. Checklist de Go-Live

Introduction

Sobre Este Guia

This guide is intended for technical teams and decision-makers who want to adopt QuantumLock™ in their commercial products. It covers everything from initial evaluation to go-live in production.

Target Audience

  • CTOs/Tech Leads: Architecture and integration decisions
  • Developers: Technical implementation and SDK
  • DevOps/SRE: Build pipelines e deployment
  • Security Teams: Compliance e auditoria
  • Product Managers: Modelos de licenciamento

Prerequisites

RequirementMinimumRecommended
Python3.103.11+
OSLinux, macOS, WindowsLinux (production)
KnowledgeBasic PythonCI/CD experience
ConectividadeOpcional (offline-first)Internet para sync

Assessment & Planning

Phase 1: Requirements Analysis

Questões a Responder

  1. Modelo de Licenciamento

    • Por tempo (subscription)?
    • Perpetual (one-time)?
    • Por features?
    • Per machine/user?
    • Floating (concurrent)?
  2. Execution Environment

    • Desktop (Windows/macOS/Linux)?
    • Server (on-prem/cloud)?
    • Air-gapped (sem internet)?
    • Container (Docker/K8s)?
  3. Protection Level

    • Apenas licenciamento?
    • Code protection (Nuitka)?
    • Advanced obfuscation?
    • Anti-tampering?
  4. Compliance

    • NIS2 (EU)?
    • GDPR?
    • SOC2?
    • ISO27001?
    • Sector-specific regulation?

Template de Requisitos

project:
name: "MeuProduto Enterprise"
version: "3.0.0"
type: "desktop" # desktop, server, container

licensing:
model: "subscription" # subscription, perpetual, feature, floating
duration: "365 days"
features:
- basic
- advanced
- api_access
machine_lock: true
max_machines: 5
grace_period: 7 # days

protection:
nuitka: true
obfuscation: "medium" # none, low, medium, high
anti_debug: true

compliance:
frameworks:
- NIS2
- GDPR
evidence_bundles: true
retention_days: 2555 # 7 anos

deployment:
platforms:
- linux_x64
- windows_x64
- macos_arm64
offline_capable: true
sync_interval: 900 # seconds

Fase 2: Prova de Conceito (POC)

Objetivos da POC

  1. Validate SDK integration
  2. Test Nuitka protection
  3. Verificar performance (< 5ms validation)
  4. Confirmar funcionamento offline
  5. Avaliar experience do utilizador final

Timeline POC (2 semanas)

SemanaAtividades
1Environment setup, SDK integration, basic tests
2Nuitka protection, stress tests, report

Success Criteria

  • Offline validation in < 10ms
  • Build Nuitka funcional em todas as plataformas
  • Zero impacto na funcionalidade do produto
  • License revocation verified
  • Complete integration documentation

Environment Preparation

Setup de Desenvolvimento

1. Tools Installation

# Criar ambiente virtual
python -m venv .venv
source .venv/bin/activate # Linux/macOS
# ou .venv\Scripts\activate # Windows

# Instalar SDK e CLI
pip install quantumlock-sdk quantumlock-cli

# Verify installation
quantumlock --version
python -c "from quantumlock.sdk import HybridLicenseValidator; print('SDK OK')"

2. Credentials Configuration

# Environment variables (development)
export QUANTUMLOCK_API_KEY="dev_key_xxxxx"
export QUANTUMLOCK_API_URL="https://quantumlock.softquantus.com"

# Or configuration file
cat > ~/.quantumlock/config.yaml << EOF
api:
url: https://quantumlock.softquantus.com
key: dev_key_xxxxx
license:
path: ./dev.qlicense
grace_days: 7
sync:
enabled: true
interval: 900
EOF

3. Generate Development License

# Via CLI
quantumlock license generate \
--customer-id "dev-team" \
--product-id "myapp" \
--features basic,advanced \
--valid-days 30 \
--output dev.qlicense

# Via API
curl -X POST https://quantumlock.softquantus.com/v1/licenses/generate \
-H "X-API-Key: $QUANTUMLOCK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer_id": "dev-team",
"product_id": "myapp",
"features": ["basic", "advanced"],
"valid_days": 30
}' > dev.qlicense

Setup de CI/CD

GitHub Actions Example

# .github/workflows/build-protected.yml
name: Build Protected Release

on:
push:
tags:
- 'v*'

env:
QUANTUMLOCK_API_KEY: ${{ secrets.QUANTUMLOCK_API_KEY }}

jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]

runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v4

- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.11'

- name: Install dependencies
run: |
pip install quantumlock-sdk quantumlock-cli nuitka
pip install -r requirements.txt

- name: Build with Nuitka
run: |
quantumlock build \
--input myapp.py \
--output dist/ \
--include-package myapp \
--onefile

- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: myapp-${{ matrix.os }}
path: dist/

Technical Integration

Basic Integration Pattern

Estrutura Recomendada

myapp/
├── src/
│ ├── __init__.py
│ ├── main.py
│ ├── licensing.py # QuantumLock integration
│ └── features/
│ ├── basic.py
│ └── premium.py
├── quantumlock/
│ └── config.yaml # QuantumLock config
├── build/
│ └── build_protected.py
├── requirements.txt
└── pyproject.toml

licensing.py - Integration Module

"""
QuantumLock Integration Module
==============================

Centralizes all licensing logic.
"""

import os
import sys
import logging
from pathlib import Path
from typing import Optional, List
from dataclasses import dataclass

from quantumlock.sdk import HybridLicenseValidator
from quantumlock.sdk.exceptions import (
LicenseNotFoundError,
LicenseExpiredError,
LicenseRevokedError,
LicenseInvalidError,
)

logger = logging.getLogger(__name__)


@dataclass
class LicenseStatus:
"""License status."""
valid: bool
customer: str
expires_at: str
features: List[str]
days_remaining: int
in_grace: bool
message: str


class LicenseManager:
"""
QuantumLock license manager.

Usage:
manager = LicenseManager()
if not manager.validate():
sys.exit(1)

if manager.has_feature("premium"):
enable_premium()
"""

def __init__(
self,
license_path: Optional[str] = None,
api_url: Optional[str] = None,
api_key: Optional[str] = None,
sync_enabled: bool = True,
grace_days: int = 7,
):
"""
Initializes the license manager.

Args:
license_path: Caminho para o ficheiro .qlicense
api_url: URL da API QuantumLock
api_key: Chave de API (opcional, para sync)
sync_enabled: Enable background synchronization
grace_days: Tolerance days after expiration
"""
self._license_path = license_path or self._find_license()
self._api_url = api_url or os.getenv(
"QUANTUMLOCK_API_URL",
"https://quantumlock.softquantus.com"
)
self._api_key = api_key or os.getenv("QUANTUMLOCK_API_KEY")
self._sync_enabled = sync_enabled
self._grace_days = grace_days

self._validator: Optional[HybridLicenseValidator] = None
self._status: Optional[LicenseStatus] = None

def _find_license(self) -> str:
"""Searches for license file in standard locations."""
search_paths = [
Path(os.getenv("QUANTUMLOCK_LICENSE_PATH", "")),
Path.cwd() / "license.qlicense",
Path.cwd() / ".quantumlock" / "license.qlicense",
Path.home() / ".quantumlock" / "license.qlicense",
Path("/etc/myapp/license.qlicense"),
]

for path in search_paths:
if path.exists():
logger.info(f"License found: {path}")
return str(path)

raise LicenseNotFoundError(
"License file not found. Please set QUANTUMLOCK_LICENSE_PATH "
"or place license.qlicense in the application directory."
)

def validate(self) -> bool:
"""
Validates the license.

Returns:
True if license is valid, False otherwise.

Raises:
LicenseNotFoundError: License file not found
LicenseExpiredError: License expired (outside grace period)
LicenseRevokedError: License revoked
LicenseInvalidError: License corrupted or invalid
"""
try:
self._validator = HybridLicenseValidator(
license_path=self._license_path,
api_url=self._api_url,
api_key=self._api_key,
sync_enabled=self._sync_enabled,
grace_period_days=self._grace_days,
)

result = self._validator.validate()

self._status = LicenseStatus(
valid=result.valid,
customer=result.customer,
expires_at=str(result.expires_at),
features=result.features,
days_remaining=result.days_remaining,
in_grace=result.in_grace_period,
message=result.message if hasattr(result, 'message') else "",
)

if not result.valid:
logger.warning(f"License invalid: {result.reason}")
return False

if result.in_grace_period:
logger.warning(
f"License in grace period. Expires in {result.days_remaining} days. "
"Please renew."
)

logger.info(
f"License valid. Customer: {result.customer}, "
f"Expires: {result.expires_at}"
)
return True

except LicenseNotFoundError:
logger.error("License file not found")
raise
except LicenseExpiredError:
logger.error("License has expired")
raise
except LicenseRevokedError:
logger.error("License has been revoked")
raise
except Exception as e:
logger.error(f"License validation error: {e}")
raise LicenseInvalidError(str(e))

def has_feature(self, feature: str) -> bool:
"""
Checks if a feature is enabled.

Args:
feature: Nome da feature a verificar

Returns:
True if the feature is enabled
"""
if not self._validator:
raise RuntimeError("License not validated. Call validate() first.")
return self._validator.check_feature(feature)

def get_features(self) -> List[str]:
"""Retorna lista de features ativadas."""
if not self._validator:
raise RuntimeError("License not validated. Call validate() first.")
return self._validator.get_features()

def get_status(self) -> Optional[LicenseStatus]:
"""Returns detailed license status."""
return self._status

def get_customer(self) -> str:
"""Retorna nome do cliente licenciado."""
if not self._status:
raise RuntimeError("License not validated. Call validate() first.")
return self._status.customer


# Singleton global (opcional)
_license_manager: Optional[LicenseManager] = None


def get_license_manager() -> LicenseManager:
"""Returns singleton instance of the license manager."""
global _license_manager
if _license_manager is None:
_license_manager = LicenseManager()
return _license_manager


def require_license(func):
"""
Decorator to require valid license.

Usage:
@require_license
def my_protected_function():
pass
"""
def wrapper(*args, **kwargs):
manager = get_license_manager()
if not manager.validate():
raise LicenseInvalidError("Valid license required")
return func(*args, **kwargs)
return wrapper


def require_feature(feature: str):
"""
Decorator to require specific feature.

Usage:
@require_feature("premium")
def premium_function():
pass
"""
def decorator(func):
def wrapper(*args, **kwargs):
manager = get_license_manager()
if not manager.has_feature(feature):
raise LicenseInvalidError(f"Feature '{feature}' not licensed")
return func(*args, **kwargs)
return wrapper
return decorator

main.py - Ponto de Entrada

"""
MyApp - Main Application
============================

Demonstrates integration with QuantumLock.
"""

import sys
import logging

from myapp.licensing import LicenseManager, require_feature
from myapp.features.basic import run_basic
from myapp.features.premium import run_premium

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)


def main():
"""Ponto de entrada principal."""

# 1. Validate license (required)
try:
license_manager = LicenseManager()

if not license_manager.validate():
print("❌ License validation failed. Please check your license.")
sys.exit(1)

except Exception as e:
print(f"❌ License error: {e}")
print("\nTo obtain a license, visit: https://portal.softquantus.com")
sys.exit(1)

# 2. Show license information
status = license_manager.get_status()
print(f"\n✅ Licensed to: {status.customer}")
print(f" Expires: {status.expires_at}")
print(f" Features: {', '.join(status.features)}")

if status.in_grace:
print(f" ⚠️ WARNING: License in grace period!")
print(f" Days remaining: {status.days_remaining}")

print()

# 3. Run features based on license
run_basic() # Always available

if license_manager.has_feature("premium"):
run_premium()
else:
print("💡 Upgrade to Premium for more features!")

# 4. Exemplo com decorator
try:
advanced_analytics()
except Exception as e:
print(f"Advanced analytics requires license: {e}")


@require_feature("analytics")
def advanced_analytics():
"""Feature that requires specific feature."""
print("📊 Running advanced analytics...")


if __name__ == "__main__":
main()

Code Protection with Nuitka

Build Configuration

build_protected.py

"""
Build Script for Nuitka Compilation
====================================

Compiles the application with QuantumLock + Nuitka protection.
"""

import subprocess
import sys
import platform
from pathlib import Path


def build():
"""Executa build protegido."""

# Detectar plataforma
system = platform.system().lower()
arch = platform.machine()

print(f"🔧 Building for {system}/{arch}")

# Configurar paths
src_dir = Path("src")
output_dir = Path("dist") / f"{system}-{arch}"
output_dir.mkdir(parents=True, exist_ok=True)

# Comandos base Nuitka
cmd = [
sys.executable, "-m", "nuitka",
"--standalone",
"--onefile",
f"--output-dir={output_dir}",
"--include-package=myapp",
"--include-package=quantumlock.sdk",
"--follow-imports",
"--assume-yes-for-downloads",
]

# Options per platform
if system == "windows":
cmd.extend([
"--windows-console-mode=disable", # Sem console window
"--windows-icon-from-ico=assets/icon.ico",
"--windows-company-name=MyCompany",
"--windows-product-name=MyApp",
"--windows-file-version=1.0.0.0",
"--windows-product-version=1.0.0.0",
])
elif system == "darwin":
cmd.extend([
"--macos-create-app-bundle",
"--macos-app-icon=assets/icon.icns",
"--macos-app-name=MyApp",
])

# Adicionar entry point
cmd.append(str(src_dir / "main.py"))

print(f"📦 Running: {' '.join(cmd)}")

# Executar
result = subprocess.run(cmd, check=True)

if result.returncode == 0:
print(f"\n✅ Build complete: {output_dir}")
else:
print(f"\n❌ Build failed")
sys.exit(1)


if __name__ == "__main__":
build()

Protection Options

Obfuscation Levels

# quantumlock/build-config.yaml

protection:
# Basic level: compilation only
level: basic
nuitka:
standalone: true
onefile: true

---

protection:
# Medium level: compilation + obfuscation
level: medium
nuitka:
standalone: true
onefile: true
obfuscation:
rename_symbols: true
remove_docstrings: true

---

protection:
# High level: everything + anti-debug
level: high
nuitka:
standalone: true
onefile: true
lto: yes # Link-time optimization
obfuscation:
rename_symbols: true
remove_docstrings: true
flatten_control_flow: true
anti_tamper:
integrity_checks: true
debugger_detection: true

Build Verification

# Verify exports after build
python scripts/verify_exports.py --docker myapp:1.0.0

# Test binary
./dist/linux-x64/myapp --help

# Verify that source is not exposed
strings dist/linux-x64/myapp | grep -i "password\|secret\|key"
# Should not find sensitive strings

Licensing Configuration

License Models

Subscription (Tempo)

{
"model": "subscription",
"valid_days": 365,
"renewable": true,
"auto_renew": false,
"grace_days": 7,
"notification_days": [30, 14, 7, 1]
}

Perpetual

{
"model": "perpetual",
"includes_updates_until": "2027-12-31",
"support_years": 1
}

Feature-Based

{
"model": "feature",
"base_features": ["core"],
"optional_features": {
"analytics": {"price": 50, "per": "month"},
"api_access": {"price": 100, "per": "month"},
"white_label": {"price": 200, "per": "month"}
}
}

Machine-Locked

{
"model": "machine_locked",
"max_machines": 1,
"transfer_allowed": true,
"transfer_cooldown_days": 30,
"fingerprint_components": [
"cpu_id",
"mac_address",
"disk_serial",
"hostname"
]
}

Floating

{
"model": "floating",
"concurrent_users": 10,
"checkout_timeout_minutes": 60,
"server_mode": "cloud"
}

Grace Period Configuration

# In code
validator = HybridLicenseValidator(
grace_period_days=7, # 7 days after expiration
grace_mode="full", # "full", "limited", "readonly"
)

# Comportamento durante grace period
if result.in_grace_period:
logger.warning("License expired! Please renew.")
# Ainda funciona por 7 dias

License Management

Administration Portal

QuantumLock™ includes a web portal for management:

  • Dashboard: Overview of active licenses
  • Licenses: Create, edit, revoke licenses
  • Customers: Customer management
  • Analytics: Usage statistics
  • Compliance: Evidence bundles and reports

Management API

List Licenses

curl -X GET https://quantumlock.softquantus.com/v1/licenses \
-H "X-API-Key: $API_KEY" \
| jq

Revoke License

curl -X POST https://quantumlock.softquantus.com/v1/licenses/{id}/revoke \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"reason": "Subscription cancelled"}'

Renew License

curl -X POST https://quantumlock.softquantus.com/v1/licenses/{id}/renew \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"valid_days": 365}'

Management Automation

"""
Example: Automatic renewal script
"""

from quantumlock.api import QuantumLockClient
from datetime import datetime, timedelta

client = QuantumLockClient(api_key="xxx")

# List licenses expiring in 30 days
expiring = client.licenses.list(
expires_before=datetime.now() + timedelta(days=30),
status="active"
)

for license in expiring:
# Verificar se cliente tem subscription ativa
if has_active_subscription(license.customer_id):
# Renovar automaticamente
client.licenses.renew(
license_id=license.id,
valid_days=365
)

# Send confirmation email
send_renewal_email(license.customer_email)

Compliance e Auditoria

Evidence Bundles Configuration

from quantumlock.api import QuantumLockClient
from quantumlock.api.compliance import EvidenceGenerator

client = QuantumLockClient(api_key="xxx")

# Gerar evidence bundle para compliance
generator = EvidenceGenerator(client)

bundle = generator.generate(
start_date="2026-01-01",
end_date="2026-03-31",
frameworks=["NIS2", "GDPR"],
include_events=[
"license.generated",
"license.validated",
"license.revoked",
"artifact.registered",
]
)

# Exportar bundle assinado
bundle.export("evidence_Q1_2026.json")

# Verificar integridade
is_valid = bundle.verify()
print(f"Bundle valid: {is_valid}")

Estrutura do Evidence Bundle

{
"bundle_id": "eb_2026_Q1_001",
"generated_at": "2026-04-01T00:00:00Z",
"period": {
"start": "2026-01-01T00:00:00Z",
"end": "2026-03-31T23:59:59Z"
},
"frameworks": ["NIS2", "GDPR"],
"statistics": {
"total_events": 15234,
"licenses_generated": 523,
"licenses_validated": 14456,
"licenses_revoked": 12,
"artifacts_registered": 89
},
"chain_hash": {
"algorithm": "SHA-256",
"value": "abc123...",
"previous_hash": "xyz789..."
},
"events_summary": [
{
"type": "license.generated",
"count": 523,
"first": "2026-01-02T08:15:00Z",
"last": "2026-03-31T22:45:00Z"
}
],
"signatures": {
"ed25519": "base64...",
"ml_dsa_65": "base64..."
},
"issuer": {
"name": "SoftQuantus QuantumLock",
"version": "2.1.1"
}
}

Compliance Reports

# Generate NIS2 report
report = client.compliance.generate_report(
framework="NIS2",
period="2026-Q1"
)

# Exportar para PDF
report.export_pdf("compliance_NIS2_Q1_2026.pdf")

# Verificar cobertura
coverage = report.get_coverage()
print(f"NIS2 coverage: {coverage['percentage']}%")
for control in coverage['controls']:
status = "✅" if control['covered'] else "❌"
print(f" {status} {control['id']}: {control['name']}")

Monitoring & Analytics

Available Metrics

MetricDescription
licenses.activeActive licenses
licenses.expiredExpired licenses
licenses.expiring_soonExpiram em 30 dias
validations.successSuccessful validations
validations.failedFailed validations
activations.newNew activations
features.usageUso por feature

Tools Integration

Prometheus/Grafana

# prometheus.yml
scrape_configs:
- job_name: 'quantumlock'
static_configs:
- targets: ['quantumlock.softquantus.com:9090']
metrics_path: '/metrics'
bearer_token: 'your_api_key'

Datadog

from datadog import initialize, statsd
from quantumlock.api import QuantumLockClient

initialize(api_key='datadog_key')
client = QuantumLockClient(api_key='ql_key')

# Send metrics
stats = client.analytics.get_summary()
statsd.gauge('quantumlock.licenses.active', stats.active_licenses)
statsd.gauge('quantumlock.validations.today', stats.validations_today)

Alertas

# Exemplo: Alertas para Slack
alerts:
- name: "Licenses expiring"
condition: "licenses.expiring_7days > 10"
channel: "#license-alerts"
message: "⚠️ {count} licenses expiring in 7 days"

- name: "High validation failures"
condition: "validations.failed_rate > 5%"
channel: "#security-alerts"
message: "🚨 Validation failure rate above 5%"

- name: "License revoked"
condition: "event.type == 'license.revoked'"
channel: "#security-alerts"
message: "🔒 License revoked: {license_id}"

Troubleshooting

Problemas Comuns

1. License Not Found

LicenseNotFoundError: License file not found

Solution:

# Check environment variable
echo $QUANTUMLOCK_LICENSE_PATH

# Verificar se ficheiro existe
ls -la license.qlicense

# Verificar permissões
chmod 644 license.qlicense

2. License Expired

LicenseExpiredError: License expired on 2026-01-01

Solution:

# Check expiration date
quantumlock info license.qlicense

# Renovar via API ou portal
quantumlock license renew --license-id xxx --days 365

3. Validation Timeout

ValidationError: API sync timeout

Solution:

# Aumentar timeout
validator = HybridLicenseValidator(
sync_timeout=30, # segundos
)

# Ou desativar sync (modo offline apenas)
validator = HybridLicenseValidator(
sync_enabled=False,
)

4. Nuitka Build Fails

ERROR: Nuitka compilation failed

Solution:

# Check dependencies
pip install nuitka --upgrade

# Verificar compilador C
which gcc || which clang

# Build com verbose
python -m nuitka --verbose myapp.py

Debug Mode

import logging

# Ativar logging detalhado
logging.getLogger("quantumlock").setLevel(logging.DEBUG)

# Validar com debug
validator = HybridLicenseValidator(debug=True)
result = validator.validate()
print(result.debug_info)

Best Practices

Security

  1. Never hardcode API keys - Use environment variables
  2. Protect license files - Restrictive permissions (600/644)
  3. Use HTTPS sempre - Nunca HTTP para API
  4. Key rotation - Rotate API keys periodically
  5. Monitor revocations - Alerts for suspicious activity

Performance

  1. Cache validation result - Do not validate on every request
  2. Async validation - Do not block main thread
  3. Grace period adequado - Evitar bloqueios por falhas de rede
  4. Sync interval - 15 min is generally sufficient

User Experience

  1. Clear messages - Explain why license failed
  2. Renewal link - Facilitate renewal
  3. Avisos antecipados - Notificar antes de expirar
  4. Grace period - Do not block immediately

DevOps

  1. Automatizar builds - CI/CD com Nuitka
  2. Testar em todas as plataformas - Windows, macOS, Linux
  3. Version pinning - Specific SDK versions
  4. Rollback plan - Strategy to revert if necessary

Checklist de Go-Live

Pre-Launch

  • SDK integrado e testado
  • Build Nuitka funcional em todas as plataformas
  • Offline validation verified (< 10ms)
  • Revocation tested
  • Grace period configurado
  • Mensagens de erro claras
  • End-user documentation

Infraestrutura

  • Production API keys generated
  • Environment variables configured
  • Monitoring active
  • Alertas configurados
  • Backup de dados de licenciamento

Processo

  • License generation workflow defined
  • Renewal process established
  • Equipa de suporte treinada
  • FAQ preparado
  • SLA de suporte definido

Compliance

  • Evidence bundles configurados
  • Frameworks de compliance mapeados
  • Data retention defined
  • DPO/Security approval

Suporte

Recursos

  • 📚 Documentation: docs.softquantus.com/quantumlock
  • 🎥 Videos: youtube.com/@softquantus
  • 💬 Community: discord.gg/softquantus
  • 📧 Email: support@softquantus.com
  • 📞 Phone (Enterprise): +372 XXX XXXX

Escalar Issues

  1. Community/Docs - Primeiro recurso
  2. Email Support - Tickets formais
  3. Priority Support - Resposta 24h (Professional+)
  4. Phone/Slack - Urgente (Enterprise)

QuantumLock™ - Protecting software today for the world of tomorrow.

© 2026 SoftQuantus innovative OÜ