Post

Worst Thing I Ever Witnessed In It In 20 Years

Worst Thing I Ever Witnessed In It In 20 Years

Worst Thing I Ever Witnessed In It In 20 Years

In two decades of working in IT infrastructure and DevOps, I’ve seen my share of disasters—from catastrophic data center failures to security breaches that made my stomach turn. But nothing quite compares to the moment I witnessed a production ERP demo go horribly wrong, live on screen share, with an AI note taker recording every second for posterity.

This incident perfectly encapsulates the dangers of poor infrastructure management, inadequate testing procedures, and the catastrophic consequences of mixing production and development environments. What started as a routine vendor demonstration quickly devolved into a masterclass in what not to do when managing enterprise systems.

The story begins with a seemingly innocent call to evaluate an ERP provider’s solution. The vendor, using Odoo Community Edition, was demonstrating their deployment capabilities to potential clients. Like many modern meetings, the session included an AI note taker to record the demo for colleagues who couldn’t attend. This seemingly benign setup would soon become the perfect storm for disaster.

Understanding The Topic

ERP (Enterprise Resource Planning) systems are the backbone of modern business operations, integrating everything from accounting and inventory to human resources and customer relationship management. When these systems fail or expose sensitive data, the consequences can be devastating—not just technically, but legally and reputationally.

The specific incident involved a third-party provider using Odoo Community Edition, which is the open-source version of Odoo’s ERP platform. Community Edition lacks many of the enterprise features and security enhancements found in the Enterprise version, making proper infrastructure management even more critical.

What made this situation particularly egregious was the apparent lack of environment segregation. The vendor was demonstrating on what appeared to be a shared or poorly isolated instance, where switching between “demo” and “production-like” environments was as simple as clicking a few buttons. This fundamental security lapse exposed potentially sensitive business data to unauthorized viewers.

The AI note taker, designed to provide meeting transcripts and recordings, added another layer of risk by creating a permanent record of whatever appeared on screen—including any sensitive information that might have been accidentally displayed during the demo.

Prerequisites

Before attempting any ERP demonstration or deployment, several critical prerequisites must be in place:

Infrastructure Requirements:

  • Dedicated demonstration environment isolated from production systems
  • Sufficient compute resources (minimum 4 CPU cores, 8GB RAM for basic Odoo Community)
  • Separate database instance for demo data
  • Network segmentation to prevent unauthorized access
  • Backup and recovery procedures tested and documented

Software Dependencies:

  • Odoo Community Edition (specific version matching your deployment needs)
  • PostgreSQL database (version compatible with Odoo)
  • Web server (Nginx or Apache)
  • Python runtime environment
  • SSL certificates for secure connections

Security Considerations:

  • Role-based access control configured and tested
  • Data anonymization procedures for demo environments
  • Network firewall rules properly configured
  • Regular security patching and updates
  • Audit logging enabled and monitored

User Permissions:

  • Dedicated demo user accounts with appropriate access levels
  • Administrative access for setup and configuration
  • Read-only access for evaluators when appropriate

Installation & Setup

Setting up a proper ERP demonstration environment requires careful planning and execution. Here’s how to do it correctly:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Create dedicated demo environment
sudo mkdir -p /opt/odoo-demo
sudo chown -R odoo:odoo /opt/odoo-demo

# Install required packages
sudo apt-get update
sudo apt-get install python3 python3-pip python3-dev python3-venv libpq-dev
sudo apt-get install postgresql postgresql-contrib nginx git

# Create PostgreSQL user and database
sudo -u postgres createuser -s odoo
sudo -u postgres createdb -O odoo odoo_demo

# Clone Odoo Community Edition
git clone https://github.com/odoo/odoo.git /opt/odoo-demo/odoo
cd /opt/odoo-demo/odoo
git checkout 15.0  # Use appropriate version

# Create virtual environment
python3 -m venv /opt/odoo-demo/venv
source /opt/odoo-demo/venv/bin/activate
pip install -r requirements.txt

# Configure Odoo
cat > /opt/odoo-demo/odoo.conf << EOF
[options]
admin_passwd = YOUR_SECRET_ADMIN_PASSWORD
db_host = False
db_port = False
db_user = odoo
db_password = False
addons_path = /opt/odoo-demo/odoo/addons
data_dir = /opt/odoo-demo/data
EOF

Critical Security Configuration:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# nginx.conf for demo environment
server {
    listen 80;
    server_name demo.yourcompany.com;

    # Security headers
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";

    # Rate limiting
    limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
    limit_req zone=api burst=20 nodelay;

    location / {
        proxy_pass http://localhost:8069;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Configuration & Optimization

Proper configuration is essential for maintaining separation between environments and preventing accidental data exposure:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# Proper environment configuration
import os

class EnvironmentConfig:
    def __init__(self):
        self.is_demo = os.getenv('DEMO_MODE', 'false').lower() == 'true'
        self.is_production = os.getenv('PRODUCTION_MODE', 'false').lower() == 'true'
        
        if self.is_demo and self.is_production:
            raise EnvironmentError("Cannot run in both demo and production modes simultaneously")
        
        self.database_prefix = 'demo_' if self.is_demo else 'prod_'
        self.data_anonymization = self.is_demo

    def get_database_name(self, base_name):
        return f"{self.database_prefix}{base_name}"

config = EnvironmentConfig()

Security Hardening:

1
2
3
4
5
6
7
8
9
10
11
# Database security
sudo -u postgres psql -c "ALTER USER odoo PASSWORD 'strong_password_here';"
sudo -u postgres psql -c "REVOKE ALL ON DATABASE odoo_demo FROM PUBLIC;"

# File system permissions
sudo chmod 750 /opt/odoo-demo
sudo chown -R odoo:www-data /opt/odoo-demo

# Firewall configuration
sudo ufw allow from 192.168.1.0/24 to any port 80
sudo ufw deny 80

Performance Optimization:

1
2
3
4
5
6
7
# PostgreSQL configuration for demo environment
shared_buffers = 256MB
effective_cache_size = 1GB
work_mem = 4MB
maintenance_work_mem = 64MB
checkpoint_completion_target = 0.9
random_page_cost = 1.0

Usage & Operations

Operating a secure ERP demonstration environment requires strict protocols:

Pre-Demo Checklist:

1
2
3
4
5
6
7
8
9
10
11
# Verify environment isolation
echo $DEMO_MODE
psql -l | grep demo

# Check for sensitive data
sudo -u odoo python3 /opt/odoo-demo/odoo/odoo-bin -c /opt/odoo-demo/odoo.conf \
  --database=odoo_demo --password=YOUR_PASSWORD \
  --dump-data --output=/tmp/demo_data_check.json

# Verify AI note taker settings
ps aux | grep "AI note taker"

Demo Execution Protocol:

  1. Always start with a clean, pre-configured demo instance
  2. Never switch between environments during a live demonstration
  3. Have a backup demo instance ready in case of issues
  4. Monitor system resources throughout the demo
  5. Keep a checklist of approved demonstration paths

Post-Demo Procedures:

1
2
3
4
5
# Reset demo environment
/opt/odoo-demo/reset_demo.sh

# Clear AI note taker recordings
rm -f /var/log/ai_note_taker/*

Troubleshooting

When things go wrong in ERP demonstrations, they can go very wrong very quickly:

Common Issues and Solutions:

  1. Environment Confusion ```bash

    Verify current environment

    echo “Current database: $(psql -t -c “SELECT current_database();”)” echo “Demo mode: $DEMO_MODE”

Force environment reset if needed

export DEMO_MODE=true export PRODUCTION_MODE=false

1
2
3
4
5
6
7
8
2. **Data Exposure**
```bash
# Check for sensitive data patterns
sudo -u odoo python3 /opt/odoo-demo/odoo/odoo-bin -c /opt/odoo-demo/odoo.conf \
  --database=odoo_demo --password=YOUR_PASSWORD \
  --test-enable --stop-after-init \
  --init=privacy_check
  1. Network Isolation Issues
    1
    2
    3
    
    # Verify network segmentation
    sudo nmap -sS -O localhost
    sudo iptables -L -n -v
    
  2. AI Note Taker Privacy Concerns
    1
    2
    
    # Check what's being recorded
    lsof -p $(pgrep -f "AI note taker") | grep -E "(pipe|socket)"
    

Debug Commands:

1
2
3
4
5
# Comprehensive system check
sudo /opt/odoo-demo/health_check.sh

# Log analysis
tail -f /var/log/odoo/odoo-demo.log | grep -E "(ERROR|WARNING|CRITICAL)"

Conclusion

The incident I witnessed—where a vendor accidentally exposed sensitive production data during what should have been a routine ERP demonstration—serves as a stark reminder of why proper infrastructure management matters. In today’s world of remote work, screen sharing, and AI-powered meeting tools, the potential for catastrophic mistakes has never been higher.

The key lessons from this experience are clear: never mix production and demonstration environments, always implement proper data anonymization for demo instances, be aware of what AI note takers and recording tools are capturing, and establish strict protocols for vendor demonstrations.

For organizations considering ERP implementations or working with third-party providers, this story should serve as a cautionary tale. The cost of inadequate infrastructure management isn’t just technical—it can include legal liability, reputational damage, and loss of client trust.

Moving forward, I’ve implemented strict demonstration protocols at every organization I work with, including dedicated demo environments, comprehensive pre-demo checklists, and clear guidelines about what can and cannot be shown during vendor evaluations. The few extra minutes spent on proper setup are trivial compared to the potential consequences of a single mistake.

Remember: in IT infrastructure, as in many areas of life, an ounce of prevention is worth a pound of cure. The worst thing I ever witnessed in IT wasn’t a technical failure—it was a human failure that could have been prevented with proper processes and attention to detail.

This post is licensed under CC BY 4.0 by the author.