OroCommerce isn't your typical e-commerce platform. It's an enterprise solution built specifically for B2B segment: manufacturers, distributors and wholesalers. Magento founders developed OroCommerce from scratch considering corporate sales specifics — complex pricing, customer hierarchies, RFQ processes and ERP integrations.
This guide shows when to choose OroCommerce, how to install on THE.Hosting VPS, and what distinguishes this platform from universal solutions like WooCommerce or Shopify. Only practice for B2B business.
What is OroCommerce
OroCommerce is an open-source B2B ecommerce platform on PHP/Symfony launched in 2015. Developed by Magento founders but completely rewritten for corporate segment. Used by manufacturers and distributors from mid-market to enterprise level.
Key Differences from B2C Platforms:
This isn't WooCommerce with B2B plugins. OroCommerce built for corporate sales where one client is a company with multiple users, purchasing departments, approval limits and individual price lists. There's no shopping cart in usual sense — there are Request for Quote (RFQ) processes, order approvals and integrations with client procurement systems (SAP Ariba, Coupa, Jaggaer).
What's Included in Platform:
OroCommerce isn't just a store — it's comprehensive solution. eCommerce functionality includes product catalog, cart, checkout process, order management. OroCRM built into platform giving lead management, deals, customer accounts, segmentation. PIM/DAM modules manage product attributes, digital assets, images and documentation. CMS system allows creating content pages, landings, blogs. Invoicing & Payments manage invoicing and payment through OroPay or integrations.
Everything works in unified system through common database without workarounds between modules. For enterprise companies this means fewer integrations and licenses for third-party systems.
Architecture and Technologies:
Built on Symfony 6 — production-grade PHP framework. Uses PostgreSQL or MySQL as main database, Redis for caching, Message Queue for background tasks, Elasticsearch for catalog search. Supports headless architecture through REST API if need to build separate frontend or mobile apps.
When to Choose OroCommerce
OroCommerce created for specific segment. Not universal solution for everyone.
OroCommerce perfectly fits if:
You're manufacturer or distributor with B2B clients. You have corporate customers needing personal prices, order approvals within their company, purchases through punchout catalogs. You need RFQ (Request for Quote) process. Clients don't buy at fixed prices — they request quotes, negotiate terms, get individual discounts. This is B2B standard.
You have complex customer hierarchies. One client is corporation with headquarters and branches. Each branch has own users, order limits, roles (buyer, manager, approver). OroCommerce manages this out-of-box. You integrate with ERP systems. NetSuite, SAP, Microsoft Dynamics, JD Edwards, Infor — OroCommerce has ready connectors or API for syncing products, prices, inventory and orders.
You need unified portal for sales and CRM. Sales reps work in same system as clients — see order history, can help complete complex order, track leads and deals. Don't need separate CRM.
OroCommerce does NOT fit if:
You sell B2C or D2C to end consumers. Yes, OroCommerce can work in B2C mode but it's overkill. WooCommerce or Shopify handle better and cheaper. You're small business with limited budget. OroCommerce requires development, configuration and powerful VPS. Ownership cost higher than simple platforms.
You need quick start. OroCommerce deployment takes 3-6 months including process setup, integrations and training. Not ready-to-go solution. You don't have technical team. Need developers for customization and support. Without Symfony experience will be difficult.
System Requirements
OroCommerce demanding on resources due to Symfony framework and many built-in modules.
Minimum Requirements:
Configuration 4 vCPU / 4 GB RAM / 60 GB SSD suitable only for testing with small catalog. In production this insufficient. PostgreSQL 12+ or MySQL 8.0+ as main database. PostgreSQL recommended for large catalogs and complex queries. PHP 8.3+ with extensions: gd, intl, soap, mbstring, xml, zip, bcmath, opcache, pdo_mysql/pdo_pgsql. Node.js 20 LTS for building frontend assets. Redis 7.2+ for caching. Elasticsearch 8.x for full-text search (optional but recommended).
Recommended Configuration for Production:
For real B2B store with 5000+ products catalog and traffic need minimum 8 vCPU / 16 GB RAM / 160 GB NVMe SSD. Why so much? PHP-FPM workers handle requests — 8-12 processes at 128 MB each = 1.5-2 GB. PostgreSQL under load — 4-6 GB RAM. Redis caching — 1-2 GB. Elasticsearch if used — 2-4 GB. Background jobs (Message Queue consumers) — 500 MB-1 GB. Operating system and buffers — 2 GB.
Total really need 12-16 GB RAM for comfortable operation. On 8 GB runs but will have slowdowns under load.
Choosing VPS on THE.Hosting:
For testing suitable Standard VPS with 4 vCPU / 8 GB RAM / 80 GB NVMe for ~€20/month. For production take Hi-CPU VPS with 8 vCPU / 16 GB RAM / 160 GB NVMe for ~€40/month or Dedicated server if planning large catalog and high loads.
NVMe drives critical for PostgreSQL performance. THE.Hosting uses exactly NVMe on all plans plus Anti-DDoS protection and 24/7 support.
Installing OroCommerce on Ubuntu 24.04
We'll install Community Edition manually. Docker images exist but for production better to control each component.
System Preparation
Connect via SSH and update:
sudo apt update && sudo apt upgrade -y
Install basic dependencies:
sudo apt install -y software-properties-common curl wget git \
unzip supervisor nginx
Installing PostgreSQL 16
sudo apt install -y postgresql postgresql-contrib
sudo systemctl start postgresql
sudo systemctl enable postgresql
Create database:
sudo -u postgres psql
CREATE USER oro WITH PASSWORD 'secure_password';
CREATE DATABASE oro OWNER oro;
\c oro
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
\q
Installing PHP 8.3
Ubuntu 24.04 comes with PHP 8.3:
sudo apt install -y php8.3 php8.3-fpm php8.3-cli php8.3-pdo \
php8.3-pgsql php8.3-xml php8.3-soap php8.3-gd php8.3-zip \
php8.3-intl php8.3-mbstring php8.3-opcache php8.3-curl \
php8.3-bcmath php8.3-ldap
Configure PHP in /etc/php/8.3/fpm/php.ini:
memory_limit = 1G
max_execution_time = 300
upload_max_filesize = 100M
post_max_size = 100M
Restart PHP-FPM:
sudo systemctl restart php8.3-fpm
Installing Redis
sudo apt install -y redis-server
sudo systemctl start redis
sudo systemctl enable redis
Installing Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
Installing Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
composer --version
Installing OroCommerce
Create user and directory:
sudo useradd -m -s /bin/bash oro
sudo mkdir -p /var/www/orocommerce
sudo chown oro:oro /var/www/orocommerce
sudo su - oro
Clone repository:
cd /var/www/orocommerce
git clone https://github.com/oroinc/orocommerce-application.git .
git checkout 6.0
Install dependencies:
composer install --prefer-dist --no-dev
This takes 10-15 minutes.
Create .env.local file:
nano .env.local
Content:
APP_ENV=prod
APP_SECRET=generate_random_32_char_string_here
ORO_DB_DSN=postgresql://oro:secure_password@localhost/oro
ORO_DB_DRIVER=pdo_pgsql
ORO_REDIS_DSN=redis://localhost:6379/0
ORO_REDIS_SESSION_DSN=redis://localhost:6379/1
ORO_WEBSOCKET_SERVER_DSN=//localhost:8080
ORO_WEBSOCKET_FRONTEND_DSN=//*:8080
ORO_WEBSOCKET_BACKEND_DSN=tcp://localhost:8080
Installing Application
Run installer:
php bin/console oro:install \
--application-url=https://your-domain.com \
--organization-name="Your Company" \
--user-name=admin \
--user-email=admin@example.com \
--user-firstname=Admin \
--user-lastname=User \
--user-password=AdminPassword123 \
--sample-data=n \
--env=prod \
--timeout=3000
Installation takes 15-30 minutes depending on server power. Creates tables, indexes, loads fixtures.
Setting Permissions:
exit
sudo chown -R oro:www-data /var/www/orocommerce
sudo chmod -R 755 /var/www/orocommerce
sudo chmod -R 775 /var/www/orocommerce/var/cache
sudo chmod -R 775 /var/www/orocommerce/var/logs
sudo chmod -R 775 /var/www/orocommerce/public/media
sudo chmod -R 775 /var/www/orocommerce/public/uploads
Configuring Nginx
Create configuration:
sudo nano /etc/nginx/sites-available/orocommerce
server {
listen 80;
server_name your-domain.com www.your-domain.com;
root /var/www/orocommerce/public;
index index.php;
client_max_body_size 100M;
location / {
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
fastcgi_buffers 64 64k;
fastcgi_buffer_size 128k;
internal;
}
location ~* ^[^(\.php)]+\.(jpg|jpeg|gif|png|ico|css|pdf|txt|js)$ {
access_log off;
expires 1h;
add_header Cache-Control public;
}
error_log /var/log/nginx/orocommerce_error.log;
access_log /var/log/nginx/orocommerce_access.log;
}
Activate:
sudo ln -s /etc/nginx/sites-available/orocommerce /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
SSL Certificate
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
Configuring Message Queue
Create systemd service for queue processing:
sudo nano /etc/systemd/system/oro-consumer.service
[Unit]
Description=Oro Message Queue Consumer
After=network.target postgresql.service redis-server.service
[Service]
Type=simple
User=oro
WorkingDirectory=/var/www/orocommerce
ExecStart=/usr/bin/php /var/www/orocommerce/bin/console oro:message-queue:consume --env=prod
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Start:
sudo systemctl daemon-reload
sudo systemctl enable oro-consumer
sudo systemctl start oro-consumer
Configuring Cron
sudo crontab -e -u oro
Add:
*/1 * * * * /usr/bin/php /var/www/orocommerce/bin/console oro:cron --env=prod > /dev/null
Open https://your-domain.com — OroCommerce main page should load. Admin login: https://your-domain.com/admin with credentials specified during installation.
Initial Configuration
Configuring Organization
System → User Management → Organizations. Manage organizational units if need multi-org structure. For most companies one organization enough.
Creating Corporate Accounts
Customers → Accounts. Create test corporate account. Specify company name, contacts, addresses. In Users section add company users with roles: Buyer, Manager, Approver (order approver).
Configuring Price Lists
Sales → Price Lists. Create base price list and personal for VIP clients. OroCommerce supports multiple prices with priorities, automatic calculation rules, volume discounts.
Adding Products
Products → Products → Create Product. Fill SKU, name, description, prices, images, attributes. Can create product families with attribute sets for different product categories.
Configuring Shipping Methods
System → Shipping Rules. Create shipping zones, methods (courier, pickup, transport companies), rates. Integrations with logistics systems through API or extensions.
Configuring Payments
System → Payment Rules. OroCommerce supports OroPay (built-in system), integrations with processing systems, invoice payment (B2B classic).
B2B Features That Distinguish OroCommerce
RFQ (Request for Quote)
Client adds products to list and instead of "buy" clicks "request quote". Request goes to CRM where manager forms commercial proposal with individual prices, delivery terms, deadlines. After negotiation client accepts quote and it becomes order.
Punchout Catalogs
Integration with client procurement systems (SAP Ariba, Coupa, Jaggaer). Buyer works in their corporate system, clicks on supplier, redirected to your OroCommerce catalog, selects products and returns back with cart. Everything automated through cXML or OCI protocols.
Approvals and Limits
Client company user places $10,000 order. If their limit is $5,000 — order automatically goes for approver approval. They get notification, review, approve or reject. Everything within platform, no email chains.
Customer Portal
Each client gets personalized portal where sees only their catalog (according to contract), their prices, order history, invoices, shipment tracking, documents. Can reorder repeating order in two clicks.
Performance and Scaling
PostgreSQL Optimization
Edit /etc/postgresql/15/main/postgresql.conf:
shared_buffers = 4GB
effective_cache_size = 12GB
work_mem = 128MB
maintenance_work_mem = 1GB
random_page_cost = 1.1
Restart:
sudo systemctl restart postgresql
Redis Caching
OroCommerce actively uses Redis. Check settings in .env.local and ensure Redis works without memory limits.
Elasticsearch for Search
For 10,000+ product catalogs install Elasticsearch:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update
sudo apt install -y elasticsearch
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
Configure in OroCommerce: System → Configuration → System Configuration → General Setup → Search → Elasticsearch.
Horizontal Scaling
For high loads separate components:
- Dedicated PostgreSQL server
- Separate Redis server
- Elasticsearch cluster (3+ nodes)
- Load balancer before multiple web servers
- Separate workers for Message Queue
Frequently Asked Questions
How does OroCommerce differ from Magento?
Same founders but OroCommerce completely rewritten for B2B. No Magento legacy code. Modern Symfony instead of Zend. Built-in CRM and PIM. Focus on corporate processes not B2C features.
Can you use OroCommerce for B2C?
Technically yes — there's B2C mode. But it's overkill. Platform optimized for complex B2B scenarios. For B2C take WooCommerce, Shopify or PrestaShop.
What minimum VPS needed?
Testing: 4 vCPU / 8 GB RAM. Production: minimum 8 vCPU / 16 GB RAM.
How long does implementation take?
From 3 to 6 months including setup, ERP integrations, staff training. No quick solutions in B2B enterprise.
Does it support multilingual?
Yes, full support for multiple languages, currencies, warehouses. Can launch sites for different regions with unified admin.
How does it integrate with ERP?
Through REST API, ready connectors (NetSuite, SAP, Microsoft Dynamics) or middleware (Mulesoft, Dell Boomi). Product, price, inventory, order synchronization in real-time or scheduled.
Conclusion
OroCommerce is powerful platform for companies needing more than just a store. It's comprehensive solution for B2B sales unifying ecommerce, CRM, PIM and CMS in single system. Built-in features for corporate clients (RFQ, approvals, punchout, account hierarchies) make it ideal for manufacturers and distributors.
But this isn't plug-and-play system. Requires Symfony experience, good VPS, time for configuration and integrations. If you have enterprise B2B business with serious processes — OroCommerce gives tools not found in universal platforms.
On THE.Hosting servers you get performant VPS with NVMe SSD suitable for PostgreSQL loads, full root access for installing entire stack and 24/7 tech support help.