Skip to main content

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_orders and requires manual resolution.

Business Central Export

How does BC Export work?

  1. Insert Operation: Pushes validated orders from rm_order to Business Central Sales Orders
  2. 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:

  1. Fetches all items from Business Central OData
  2. Updates rm_items table with current data
  3. 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:

  1. Site has inventory_sync=1 enabled
  2. Cron job is running (check inventory_last_run timestamp)
  3. Item exists in Business Central
  4. 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:

  1. Queries Business Central for shipped orders with tracking numbers
  2. Matches to rm_order records
  3. Posts tracking info back to e-commerce platforms
  4. 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:

  1. Site has tracking_sync=1 enabled
  2. Order has nav_sales_order_number populated
  3. Business Central has tracking data for that Sales Order
  4. No API errors in logs

Troubleshooting

Orders are stuck in "Pending Insert"

  1. Check cron jobs are running: wp cron event list
  2. Check for errors: tail -f /var/log/gsm-middleware/bc-insert-items.log
  3. Verify API connection: Test Connection in Control Panel
  4. 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"

  1. Verify user has manage_gsm_middleware capability
  2. Check nonce is included in request
  3. Clear browser cache
  4. Check for plugin conflicts

Site test connection fails

  1. Verify API credentials are correct
  2. Check site URL is accessible
  3. Test API endpoint directly (Postman/cURL)
  4. Check for IP restrictions on the e-commerce platform
  5. 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 (if WP_DEBUG_LOG enabled)
  • Plugin logs: /var/log/gsm-middleware/*.log
  • Database: rm_error_orders, rm_order_import_errors

How do I report a bug?

  1. Enable debug logging
  2. Reproduce the issue
  3. Collect logs and error messages
  4. Create an issue with full details

Where can I get help?

Next Steps