Skip to main content

Changelog

[3.7.2] - 2026-07-03

Added

  • Dedicated rotating log files per connector area under log/AgiqonConnector/:
    • api_<env>.log — License API HTTP calls
    • oci_<env>.log — OCI login and function controllers
    • cxml_<env>.log — cXML login controller
    • connector_<env>.log — general connector events Each file rotates with up to 14 files at DEBUG level.
  • Typed exception classes for license API errors:
    • LicenseValidationException — thrown on 4xx responses (carries HTTP status code)
    • LicenseApiUnavailableException — thrown on network/connection failures
    • OciAuthenticationException — for failed OCI authentication flows
  • License check result caching to reduce live HTTP calls on every login:
    • Results cached for 10 minutes via Symfony cache.object
    • 24-hour stale fallback: logins continue to work during temporary license API outages
    • Cache is invalidated on 401/403 responses so invalid licenses are never served from cache
  • Structured server-side logging to OCI login controller: every failure branch (wrong credentials, inactive system, missing fields, invalid URL, invalid license) is logged as WARNING; successful logins are logged as INFO; function dispatch errors as ERROR.
  • Structured server-side logging to cXML login controller: equivalent coverage for all failure and success paths.
  • Structured logging to OciDownloadJsonController: unhandled errors in the download JSON flow are now logged as ERROR.
  • errorType and hint fields in the test-connection API response to help administrators diagnose configuration issues:
    • missing_config — Client ID or Client Secret not set
    • network_error — license API unreachable
    • auth_error — credentials rejected by the license API
  • Structured server-side logging to CxmlAuthController: all failure paths (invalid/expired auth key, customer not found, system not found, malformed stored XML) are logged as WARNING; successful auth flows as INFO.
  • OciUndefinedFunctionController now logs unsupported OCI function names as WARNING.

Changed

  • All Symfony DI service configuration files migrated from XML to YAML (.xml.yaml). Plugin developers extending the service container should use the .yaml format going forward.
  • Transmission detail page redesigned: improved layout and visual structure across all tabs.
  • Transferred transmissions now allow adding, editing and removing cart items as long as no order has been created yet.

Fixed

  • Removed dead HTTP request method validation blocks in OciLoginController and CxmlLoginController that referenced an undefined class (HTTPRequestMethod) and lacked a return statement, causing a potential fatal PHP error at runtime. The OciLoginController now correctly validates the configured HTTP method of the customer's OCI system after authentication.
  • Replaced deprecated utf8_encode() with mb_convert_encoding() in CxmlDuplicateController (deprecated since PHP 8.2, removed in PHP 9).
  • CxmlLoginController and CxmlInspectController now catch SimpleXMLElement parse exceptions and return a proper error response instead of an unhandled 500.
  • CxmlInspectController Twig template path corrected from @Storefront/... to @AgiqonConnector/... (template was never found at runtime).
  • CxmlDuplicateController now correctly extends AbstractController instead of StorefrontController; storefront-scoped base class was incompatible with the API route scope.
  • OciProductService::addProductToCart() now returns the recalculated cart from CartService::add() instead of the original cart object, ensuring prices are always up to date after adding a line item.
  • OciCustomerService::deleteOldTempCustomers() no longer filters by languageId; temporary customers created in any language context are now cleaned up correctly.
  • CxmlLoginController URL decoding unified to html_entity_decode() to handle all HTML entities, not just &amp;.
  • ConnectorTransmissionController::updateCart() and CxmlDuplicateController::duplicateSystem() now validate the incoming ID as a valid UUID before executing any DAL queries, preventing invalid input from reaching the database layer.
  • OciCustomerService and OciProductService single-result queries now set Criteria::setLimit(1) to avoid fetching unnecessary rows when only the first match is needed.

Refactored

  • ConnectorResponseGenerator promoted to abstract class; shared resolveDataFieldValue() and getConfigKey() methods extracted from OciConnectorResponseGenerator and CxmlConnectorResponseGenerator to eliminate duplication.
  • OCI login controller credential-presence check extracted into an explicit $credentialsPresent variable for improved readability.

[3.7.1] - 2026-06-23

Added

  • Refactored all route names to be constants for better usage in twig templates and controllers.
  • Added more twig block in twig templates for easier customization.

Fixed

  • No frame login now works with new Connector version.

[3.7.0]

Added

  • Complete architectural rewrite of the plugin (version 3.x series).
  • OCI and cXML protocol logic moved from storefront/checkout classes into a dedicated Connector domain layer.
  • Each OCI function (DETAIL, VALIDATE, SOURCING, BACKGROUND_SEARCH, DOWNLOADJSON, QUANTITYCHECK) now has its own dedicated controller.
  • Each cXML transfer type (Inspect, TransferCart, TransferDirect) now has its own dedicated controller.
  • Shipping method extension to mark shipping methods as OCI/cXML-compatible directly in the Shopware shipping method administration.
  • Unified administration module: OCI and cXML systems are now managed in a single consolidated plugin module with improved navigation and ACL support.
  • Role-based access control (ACL) for all connector administration views.
  • New DataField system: a typed, registry-based mapping layer for product, order, line item, shipping, context and system fields. Custom fields can be registered via the Symfony service container without manual configuration.
  • New transmission management in the administration: a list view and a detail view for all connector transmissions, including status tracking (open, order created, transferred, closed, cancelled).
  • Transmissions now have a dedicated number range for unique transmission numbers.
  • Transmission customers are recorded per transmission to track which customer was logged in.
  • Dashboard in the administration showing transmission statistics and key metrics.
  • Transmission mode can be configured per system: "manual" (transfer triggered by the user) or "auto" (transfer happens automatically on logout).
  • Cart payload and active rule IDs are saved on the transmission for reproducibility.
  • Payment method and shipping method can now be configured per OCI and cXML system. If no method is configured, the customer's last used methods are applied automatically.
  • New order settings card added to the cXML system detail view.

Changed

  • Session is now an immutable value object (ConnectorSession) shared by both OCI and cXML, replacing the mutable OciSession entity.
  • Minimum PHP version raised to 8.2.

[2.2.3]

Added

  • cXML post url now decodes query parameters.

[2.0.2]

Fixed

  • Bug where systems could no longer be created
  • Bug where direct product transfer in punchout level 2 was not working

[2.0.1]

Added

  • Login URL display in OCI and cXML systems configuration
  • New login test functionality for OCI systems

Fixed

  • Bug with cXML inspect when session is not available

[2.0.0]

Added

  • Support for Shopware 6.7
  • Compatibility with new structures in Shopware 6.7

[1.2.1]

Fixed

  • Bug with the no frame login.

[1.2.0]

Added

  • Support for older Shopware 6.5 versions.

[1.1.2]

Fixed

  • Bug within the migration order.

[1.1.1]

Fixed

  • Bug with cXML session and config property.

[1.1.0]

Changed

  • Fixed X-Frame-Options option for newer Shopware versions.

Added

  • New option for OCI systems to show the 'Your account' button.

[1.0.4]

Fixed

  • Bug with token login.

[1.0.3]

Fixed

  • Unit handling.
  • Removing of guest session.

[1.0.2]

Changed

  • Required composer components and versions are adjusted.

[1.0.1]

Changed

  • Compatibility with Shopware 6.6.7.1.

[1.0.0]

  • Initial commit.