Frequently Asked Questions
Common questions and answers about GSM Middleware.
General
What is GSM Middleware?
GSM Middleware is a WordPress plugin that synchronizes orders, inventory, and tracking data between multiple e-commerce platforms (BigCommerce and WooCommerce) and Microsoft Dynamics 365 Business Central (Navision).
What platforms does it support?
- BigCommerce (via API v3)
- WooCommerce (via REST API v3)
- Microsoft Dynamics 365 Business Central (via OData)
How many sites can I manage?
There's no hard limit. The plugin currently manages 50+ active sites in production.
Does it work with multisite?
No, GSM Middleware is designed for single-site WordPress installations managing multiple external e-commerce sites.
Installation & Setup
What are the system requirements?
- PHP: 8.2 or higher (compatible up to 8.4)
- WordPress: 6.0 or higher
- MySQL: 5.7 or higher (8.0+ recommended)
- Memory: 256MB minimum, 512MB+ recommended
- Composer: Required for dependency management
How do I install the plugin?
See Installation Guide.
Do I need an external database?
Yes, for production use. The plugin uses a separate database (rm_* tables) for order and inventory data. You can use the WordPress database for testing.
How do I configure cron jobs?
See Cron Setup Guide.
Order Sync
How often do orders sync?
By default, every hour. You can adjust the schedule or run manually from the Control Panel.
What happens if an order fails to sync?
Failed orders are logged in rm_error_orders with the reason. They can be reviewed and reprocessed manually using the Test Order feature.
Are orders ever synced twice?
No. Once an order is successfully synced (fully_import_from_website=1), it's never processed again.
What about test orders?
Orders under $1.00 are automatically skipped unless explicitly enabled in site settings.
Can I sync historical orders?
Yes, adjust the min_date_modified setting for the site or use the Test Order feature for specific orders.
SKU Verification
What happens if a SKU doesn't exist?
Orders with invalid SKUs are placed on hold in rm_error_orders. You must add the SKU to Business Central, run inventory sync, then reprocess the order.
How does kit expansion work?
When an order contains a kit parent SKU (defined in rm_kits), the plugin automatically expands it into component line items with calculated quantities.
What are "soft fails" vs "hard fails"?
- Soft Fail: SKU exists in Business Central but not yet in middleware (
rm_items). Order will retry automatically after next inventory sync. - Hard Fail: SKU doesn't exist in Business Central or has a blocked status. Order goes to
rm_error_ordersand requires manual resolution.
Business Central Export
How does BC Export work?
- Insert Operation: Pushes validated orders from
rm_orderto Business Central Sales Orders - Verify Operation: Checks Business Central for created Sales Order numbers and updates
rm_order.nav_sales_order_number
See BC Export Overview.
How long does export take?
- Insert: ~0.5-1 second per order
- Verify: ~0.3 seconds per order
Batch operations process 100 orders at a time.
What if BC export fails?
Failures are logged in rm_order_import_errors. Check the error message, resolve the issue (usually data validation), then retry from the Control Panel.
Can I skip BC Export?
No, it's a required step in the workflow. Orders must be exported to Business Central for fulfillment.
Inventory Sync
How does inventory sync work?
The inventory sync cron job:
- Fetches all items from Business Central OData
- Updates
rm_itemstable with current data - Pushes quantity updates to all active e-commerce sites
How often does inventory sync run?
Typically every 30 minutes, but configurable.
Why aren't inventory updates showing on my site?
Check:
- Site has
inventory_sync=1enabled - Cron job is running (check
inventory_last_runtimestamp) - Item exists in Business Central
- No API errors in logs
Can I exclude certain sites from inventory updates?
Yes, toggle inventory_sync off for that site.
Tracking Sync
How does tracking sync work?
The tracking sync cron job:
- Queries Business Central for shipped orders with tracking numbers
- Matches to
rm_orderrecords - Posts tracking info back to e-commerce platforms
- Updates order status to "Shipped"
When do tracking numbers appear?
Tracking numbers are synced after Business Central marks the Sales Order as shipped (usually within 1 hour).
What if tracking doesn't appear on the site?
Check:
- Site has
tracking_sync=1enabled - Order has
nav_sales_order_numberpopulated - Business Central has tracking data for that Sales Order
- No API errors in logs
Troubleshooting
Orders are stuck in "Pending Insert"
- Check cron jobs are running:
wp cron event list - Check for errors:
tail -f /var/log/gsm-middleware/bc-insert-items.log - Verify API connection: Test Connection in Control Panel
- Check database connection: Settings → DB Environments
"Maintenance window" message in logs
Business Central has maintenance every Sunday 19:00 - Monday 04:00 UTC. All sync operations are automatically paused during this time.
AJAX requests fail with "403 Forbidden"
- Verify user has
manage_gsm_middlewarecapability - Check nonce is included in request
- Clear browser cache
- Check for plugin conflicts
Site test connection fails
- Verify API credentials are correct
- Check site URL is accessible
- Test API endpoint directly (Postman/cURL)
- Check for IP restrictions on the e-commerce platform
- Verify API scopes/permissions
Performance
Does it slow down my WordPress site?
No. All heavy operations run via cron jobs outside web requests. The admin interface is React-based and highly optimized.
How much database space does it use?
Varies by order volume. Typical usage:
- 10K orders/month: ~500MB
- 100K orders/month: ~5GB
Can I archive old orders?
Yes, you can safely archive/delete orders older than 90 days from rm_order, rm_lineitems, etc. The plugin only works with recent orders.
Data & Security
Where is sensitive data stored?
- API credentials: Encrypted in WordPress options table
- Database credentials: Encrypted in
rm_db_environments - Order data: External database (configurable)
Is the plugin GDPR compliant?
Yes. Customer data is stored only as long as needed for order fulfillment. See your Business Central data retention policies.
Can I export/backup data?
Yes, use standard MySQL backup tools to backup the middleware database.
Customization
Can I add custom order fields?
Yes, extend the Normalized_Order DTO and modify the sync classes. Contact support for guidance.
Can I integrate other platforms?
Yes, create a new class extending Abstract_Order_Sync. The architecture supports any platform with a REST API.
Can I modify sync logic?
Yes, but carefully. Use WordPress filters and actions where provided. For major changes, consider forking the plugin.
Support
Where can I find logs?
- WordPress:
/var/log/wordpress/debug.log(ifWP_DEBUG_LOGenabled) - Plugin logs:
/var/log/gsm-middleware/*.log - Database:
rm_error_orders,rm_order_import_errors
How do I report a bug?
- Enable debug logging
- Reproduce the issue
- Collect logs and error messages
- Create an issue with full details
Where can I get help?
- Check Troubleshooting Guide
- Review Documentation
- Contact system administrator
Next Steps
- Installation - Get started
- Configuration - Configure the plugin
- Troubleshooting - Solve common issues