Skip to main content

Mage2Plenty v3.0 - New Product Export Engine & Order Improvements

· 6 min read
Soft Commerce Team
Mage2Plenty Development Team

We're excited to announce Mage2Plenty v3.0, a major release introducing a completely redesigned Product Export Engine built from the ground up for performance and reliability. This release also brings credit memo import with custom refund amounts, configurable order export retry, and important fixes across 10 modules.

What's New in v3.0

This release is centered around a new command-based product export architecture that replaces the legacy Generator/Processor pipeline. Alongside this, we've improved order handling with partial refund support, configurable retry limits, and better error notifications.

New Product Export Engine

Complete Architecture Redesign

The product export has been rebuilt using a modern Command/Collector/Executor pipeline that collects all export operations first, then executes them in optimized batches:

Export Pipeline:
1. COLLECT - Data builders generate commands per product
2. BATCH - Smart strategy groups commands by type
3. EXECUTE - Batch API calls (up to 100 variations per request)
4. PROCESS - Save results and update mappings

Why This Matters:

The old architecture processed products one at a time, making a separate API call for each. The new engine collects commands across all products and batches them together, dramatically reducing API calls.

ScenarioOld ArchitectureNew Architecture
10 simple products10 API calls1 API call
100 simple products100 API calls1 API call
50 configurables (200 variations)50 API calls2 API calls

Smart Change Detection

Every data builder compares the desired state against existing PlentyONE data. If a variation is already up-to-date, it's skipped entirely - no API call needed.

Supported data types with change detection:

  • Core data - status, name, number, external ID
  • Prices - sales prices, purchase prices (2 decimal precision)
  • Barcodes - GTIN, UPC, EAN, ISBN
  • Categories - assignments with position and inheritance
  • Properties - selection, global, and language-scoped values
  • Images - MD5 checksum comparison, upload and assignment
  • Dimensions - weight, width, length, height
  • Tax - VAT ID mapping
  • Client - webstore assignments

Automatic Dependency Resolution

Pre-processors ensure all dependencies exist in PlentyONE before the export begins:

Pre-Processors:
├─ CategoryPreProcessor - Creates missing categories
├─ PropertyPreProcessor - Creates missing properties
└─ AttributePreProcessor - Creates missing configurable attributes

Properties and their selection values are now saved to the local database immediately after creation, so they're available for the product export without waiting for async queue processing.

CLI Improvements

The plenty:item:export command now supports:

  • Dry-run mode (-d) - Preview what would be exported without making changes
  • SKU filtering (-s SKU1,SKU2) - Export specific products
  • Status filtering (-w pending) - Export by queue status
  • Real-time progress bar - Per-product progress during command collection and batch execution
# Preview export for specific SKUs
bin/magento plenty:item:export -s "SKU-001,SKU-002" -d

# Export only pending queue items
bin/magento plenty:item:export -w pending

Parent Product Auto-Resolution

When a child product is added to the export queue, the system now automatically resolves and includes its parent configurable product, ensuring complete product structures are always exported together.

Credit Memo Import with Custom Amounts

Partial Refund Support

The order import now supports credit memos with custom refund amounts, allowing partial refunds that don't match the original order line amounts:

Credit Memo Import:
├─ Custom item amounts - Refund partial item values
├─ Shipping refund - Include shipping in refund
├─ Credit note validation - Requires credit note order type
└─ Zero-quantity handling - Fixed null return for zero-qty items

This addresses a common real-world scenario where customer service issues partial refunds through PlentyONE that need to be reflected accurately in Magento.

Configurable Order Export Retry

Replace Hardcoded Retry with Configurable Limits

Previously, failed order exports retried indefinitely within a 12-hour window. Now you can configure:

  • Maximum retry attempts (default: 3) - Stop retrying after N failures
  • Email notifications - Get alerted when retries are exhausted
  • Unreliable lookup removed - External order lookup on failure removed due to PlentyONE indexing delays
Retry Configuration:
├─ retry_max_attempts: 3 # Configurable in profile
├─ retry_notification_enabled: Yes # Email on exhaustion
└─ Centralized via ProfileNotification service

Order Integrity Check

The duplicate order detection system has been renamed and enhanced into a full Order Integrity Check service:

  • Unified service architecture replacing scattered detection logic
  • CLI command with skip flags instead of opt-in for more intuitive usage
  • Migrated email notifications to the centralized ProfileNotification service

Additional Improvements

API Client

  • Sensible default timeouts - Connection: 60s, Request: 120s (previously unlimited when unconfigured)

Attribute Export

  • Immediate data persistence - Attribute data saved immediately after export to PlentyONE, available for subsequent operations without queue delay
  • Simplified cache reset - Full-clear only, removing unused selective reset complexity

Property Export

  • Immediate data availability - Property data (including selections and values) saved to local DB right after export
  • Skip redundant exports - Property groups already existing in PlentyONE are no longer re-exported
  • Shared REST API interfaces - Unified property group collection using shared interfaces

Admin Notifications

  • Email notification service - New centralized service for sending admin alert emails
  • Order export retry alerts - Automatic email when retry attempts are exhausted

Compatibility

  • PHP 8.4 - Fixed gc_collect_cycles() compatibility in batch message aggregation
  • Magento 2.4.8 - Verified compatibility across all modules

Upgrade Guide

Prerequisites

  • Magento 2.4.6+ (2.4.8 recommended)
  • PHP 8.1+ (8.3 or 8.4 recommended)
  • Mage2Plenty v2.3.x

Quick Upgrade

# Update via Composer
composer require softcommerce/mage2plenty-os:^3.0

# Run Magento updates
bin/magento setup:upgrade
bin/magento setup:di:compile
bin/magento cache:flush

Post-Upgrade Steps

  1. Review Order Export Retry Settings - The new configurable retry defaults to 3 attempts. Adjust in your order export profile if needed.
  2. Test Product Export - Run a dry-run to verify the new engine works with your catalog:
    bin/magento plenty:item:export -s "YOUR-SKU" -d
  3. Configure Notifications - Enable email notifications for order export retry exhaustion if desired.

Updated Modules

ModuleVersionKey Changes
module-plenty-item-profile3.0.0New product export engine
module-plenty-item2.3.0Parent product resolution, data providers
module-core2.3.0Email notification service
module-plenty-order-profile2.4.0Credit memo import, configurable retry
module-plenty-order2.0.4Zero-quantity fix, API client improvements
module-plenty-attribute2.0.2Immediate data persistence after export
module-plenty-client2.1.1Default API timeouts
module-plenty-profile2.1.1System property setup improvements
module-plenty-property2.0.3Immediate save, skip redundant groups
module-profile-notification2.0.1Admin notification formatting

What's Next

v3.1 Preview:

  • Dedicated PIM endpoints for relation entities (properties, prices, categories)
  • Pagination support for large catalog exports
  • Incomplete product export prevention
  • Remaining data builders (unit, supplier, warehouse)

Resources


Ready to supercharge your product exports? Upgrade to v3.0 today!