v2 API
The release notes for updates to v2 of the Propeller Platform.
Version 2.65 - 10th November
Orderlist
Bugs
- Fixed an issue where adding cluster products to cart or tender failed when the user had a positive orderlist applied. The system now correctly validates cluster products and their options against orderlists, allowing clusters in orderlists to be added to carts and tenders as expected.
Attributes
Bugs
- Fixed an issue where the
isSearchablefield was incorrectly reset to false (N) when updating attribute descriptions via REST bulk endpoint. TheisSearchablesetting now correctly retains its configured value during bulk attribute updates.
Pricing
Bugs
- Resolved an issue where pricesheet discounts were not being applied when using user group assignments. Pricesheets assigned to user groups now correctly apply their configured discounts when calculating prices for companies that have those user groups assigned via the
SYSTEM_USER_GROUPSattribute.
Version 2.64 - 5th November
Order
New Features
- Added order status name federation to orders and tender queries. When querying orders or tenders via GraphQL, the response now includes the full order status name (e.g., "Unfinished", "Quote") alongside the status code, providing better clarity and improving the user experience when working with order data.
Valueset
New Features
- Extended
valuesetCreatemutation to support creating valuesets with items in a single operation. You can now include valueset items and their descriptions directly when creating a new valueset, streamlining the creation process and reducing the number of API calls required.
Cart
New Features
- Added carrier federation to cart postage data. The cart postage data now includes the full carrier object with all carrier details, not just the carrier name. This enhancement provides access to carrier ID and other carrier information directly within cart queries, improving data completeness for checkout flows.
Version 2.63 - 24th October
Media
New Features
- Increased the maximum length of the
sourceIdfield for media images from 64 to 128 characters. This enhancement provides greater flexibility when importing images with longer external reference identifiers.
Version 2.62 - 22nd October
Business Rules
New Features
- Extended business rules functionality to support dynamic control of shipping costs, transaction costs and payment methods based on cart/order/quote contents. This includes:
- New rule types for
orderShippingCostsandorderTransactionCoststhat allow dynamic fee calculation - Payment method rules that control which payment options are available based on order conditions
- Automatic application of shipping and transaction costs through rules unless manually overridden
- Removed deprecated and unused rule types (
orderShippingMethods,orderPickupLocations,orderICP,userEvent,userAction,userPricing,productEvent)
- New rule types for
Order
New Features
- Added override toggle for Tender for postage and transaction costs (
overruledfield), allowing manual override of rule-calculated values when needed.
Bugs
- Fixed an issue where empty orders were being created when customers encountered frontend errors during checkout. Orders now properly validate and include all items before creation.
- Fixed an issue where
tenderUpdatePostagefailed to recognize existing warehouses when setting pickup locations.
Version 2.61 - 8th October
Categories
Bugs
- Fixed an issue where querying categories would return internal system categories (such as "System", "E-marketing", etc.) instead of only returning categories under the PDM structure. Category queries now correctly filter out internal categories and only display appropriate product categories.
Version 2.60 - 1st October
Authorization
Bugs
- Fixed an issue where magic tokens were incorrectly assigned system roles. Magic tokens now properly inherit the appropriate user roles for authentication.
Pricing
Bugs
- Resolved CSV import validation error when importing price data. The PriceCsvImport mutation now correctly validates bulk discount types and other price-related fields, allowing successful import of pricing information via CSV.
Attributes
Performance Improvements
- Optimized the database query used for attribute cleanup after deletion.
Version 2.59 - 25th September
Checkout
Bugs
- Fixed timestamp validation error in the paymentCreate mutation.
Version 2.58 - 24th September
Checkout
Bugs
- Fixed validation error when querying payments by ID. The payment query now correctly accepts valid payment IDs without throwing integer validation errors.
Order
Bugs
- Resolved connection timeout issues when generating PDF documents for orders. PDF generation now completes successfully within reasonable time limits instead of failing with connection errors.
Pricing
Technical Improvements
- Reduced unnecessary error logging for products without prices. The system now properly handles products that don't have prices without generating error logs, significantly reducing log clutter.
Product
Bugs
- Fixed an issue in the machines query where spare parts would cause "Cannot return null for non-nullable field SparePart.id" errors. The query now correctly handles spare part data retrieval.
Version 2.57 - 19th September
Product
Bugs
- Fixed an issue where creating a product option using the
clusterProductUpdatemutation would incorrectly add the product as both a product option AND a cluster product. Product options are now correctly created without being duplicated as cluster products, ensuring proper product catalog management.
Version 2.56 - 18th September
Media
Bugs
- Fixed an issue where media queries would fail with "Cannot return null for non-nullable field MediaImage.tags" error. The tags field now properly returns an empty array instead of null when no tags are present, ensuring media images can be retrieved successfully for all products.
Version 2.55 - 10th September
Pricing
Bugs
- Fixed an issue with the discounts bulk REST endpoint where omitting the
quantityFromfield would result in an "unknown upsert error" despite documentation indicating it was optional. ThequantityFromfield is now correctly handled as mandatory with improved error messaging when missing.
Version 2.54 - 3rd September
Tax
New Features
- Extended tax code support by adding 'M' (Medium) and 'CUST' (Custom) values to the tax code enum, enabling support for Belgium and other countries with additional tax requirements.
Order
Bugs
- Fixed an issue where tender creation would fail with surcharge validation errors for certain companies. The system now correctly validates surcharge values against the allowed tax codes (H, L, N, M, CUST).
- Fixed the claims query in Order V1 that was incorrectly referencing
companyIdsfield instead ofcompanyId, causing validation errors.
Warehouse
New Features
- Added sorting capabilities to warehouse searches with support for createdAt and lastModifiedAt fields, improving data retrieval flexibility.
Attributes
Bugs
- Fixed authorization issues where certain attribute mutations were missing required role checks, ensuring proper access control.
- Resolved HTTP 500 errors when posting attributes without values via REST API. The system now properly handles bulk attribute updates when value properties are omitted.
User Management
Bugs
- Fixed an issue preventing company deletion where the system would incorrectly report "Company not found" for existing companies due to data inconsistencies.
Version 2.53 - 27th August
Order
New Features
- Added support for multiple source systems on orders. Orders can now have a
sourcesarray field containing source objects withidandname, enabling proper tracking when different order items originate from different systems. The existingexternalIdfield has been deprecated in favor of this new approach.
Bugs
- Fixed an issue where tax totals in order revision history were displaying the latest calculation instead of the historical values from when each revision was created. Historical revisions now correctly preserve their original tax percentages and totals.
- Resolved an issue where updating the tax code on order items was not being persisted correctly. Tax code changes are now properly saved when updating order items.
- Fixed an issue where revision sorting was not working correctly when fetching revisions for multiple orders. Revisions are now properly sorted according to the specified sort order.
- Resolved synchronization issues between the latest non-public order revision and the main order data, ensuring consistency across order states.
Attributes
Bugs
- Fixed an issue where
attributeResultByProductIdquery was returning empty values for product attributes. The query now correctly returns the attribute values for the specified products.
External Reference
New Features
- Added bulk delete endpoint for external references, allowing efficient removal of multiple references in a single operation.
Bugs
- Fixed caching issue where searches with source and source ID would incorrectly return "no results" from cache instead of checking the database. The system now properly searches the database when cache returns empty results.
User Management
Bugs
- Resolved an error when fetching orderlists that occurred when no companies were assigned to an orderlist. The pagination calculation now handles empty result sets correctly.
Version 2.52 - 20th August
Pricing
Bugs
- Resolved an issue where bulk creation of ZoneTaxCodes would fail with a "Cannot return null for non-nullable field ZoneTaxCode.id" error. Bulk zone tax code creation now works correctly.
- Fixed an error when using the pricesheets field in contact queries that resulted in invalid input syntax errors. The pricesheets field now correctly handles contact ID parameters.
Order
Bugs
- Fixed an issue where bonus items could not be removed from orders/tenders, resulting in "TENDERITEM_NOT_FOUND" errors. Bonus items can now be properly deleted from orders and quotes.
- Resolved an issue where the orderItemId field always returned null for all tender items. The field now correctly returns the associated order item ID.
Deprecations
- Deprecated the
validateBudgetfield in tender operations as it is no longer in use.
User Management
Deprecations
- Deprecated manager-related queries, fields, and mutations as no v2 tenants are using this functionality. This includes all manager-specific endpoints and fields.
Product
Bugs
- Fixed pagination issues in the machines query where page and offset values were being swapped. The query now correctly interprets page as page number and offset as the number of items to skip.
Version 2.51 - 13th August
Revision History for Quote Requests, Quotes & Orders
New Features
We're introducing comprehensive revision history across all order types - quote requests, quotes, and orders - to provide complete traceability and meet audit requirements. This feature captures every change made throughout the entire sales cycle, from initial customer request to final order fulfillment.
Key Benefits:
- Complete Audit Trail: Every modification to quote requests, quotes, and orders is automatically captured in an immutable revision history, ensuring compliance with audit requirements and providing a permanent record for dispute resolution.
- Full Data Snapshots: Each revision stores a complete snapshot of all order data including items, prices, shipments, addresses, and tracking information, along with who made the change and when.
- Regulatory Compliance: Meet regulatory and internal compliance requirements with tamper-proof historical records that cannot be modified or deleted once created.
- Accountability: Track all changes made by sales representatives, customers, or system processes, providing clear accountability throughout the order lifecycle.
How It Works:
- Revisions are automatically created whenever an order status changes or when public-facing documents are modified
- Each revision is assigned a sequential revision number and timestamp
- All revisions are immutable - they cannot be changed once created
- The system maintains a complete chain of custody from initial request through final order
- Historical revisions remain accessible for reference, reporting, and audit purposes
Quote Versioning
New Features
Alongside revision history, we're introducing intelligent quote versioning that revolutionizes how sales teams manage quotations while maintaining a clear, customer-friendly experience.
Key Benefits:
- Draft Capability: Sales representatives can work on draft versions without immediately exposing changes to customers, enabling internal review and iteration.
- Public Version Numbers: Customer-facing quotes automatically receive sequential version numbers (v1, v2, v3), making it easy to reference specific proposals during negotiations.
- Version Invalidation: Mark outdated quotes as invalid while keeping them visible for reference, preventing customers from accepting superseded proposals.
- Parallel Workflows: Sales teams can prepare multiple quote variations while customers continue to view the current public version.
How It Works:
- Quotes are marked as either public (customer-visible) or draft (internal only)
- Only public quotes receive customer-friendly version numbers that increment sequentially
- Sales reps can create and modify draft versions without affecting what customers see
- When ready, drafts can be published to become the new public version
- Previous versions remain accessible but can be invalidated to prevent acceptance
Implementation Flexibility: Partners have complete control over how quote versioning is presented in their frontend implementations:
- Minimal Approach: Show only the latest public version to keep the customer experience simple
- Transparent Approach: Display all public versions, allowing customers to compare different proposals
- Selective Approach: Show all valid versions while hiding invalidated quotes to reduce confusion
- Hybrid Approach: Combine strategies based on customer type or quote value
This flexibility ensures that each implementation can align with specific business processes and customer expectations, whether prioritizing simplicity or complete transparency in the quotation process.
Cart
New Features
- Added support for child items in bulk cart operations. The
CartItemBulkInputnow acceptschildItemsfor clusters, enabling efficient bulk creation of complex product configurations. - Added ability to set requested delivery dates on order items through the cart, allowing customers to specify desired delivery dates at the line item level.
Bugs
- Fixed an issue where custom prices were not applied when adding items to cart using
cartAddItemmutation. Custom prices are now correctly set when provided. - Fixed an issue where custom prices were not applied in bulk cart operations using
cartItemBulkmutation. Bulk operations now properly respect custom pricing.
Pricing
Bugs
- Improved error messaging when updating pricesheets with duplicate codes. The system now clearly indicates when a pricesheet code already exists instead of returning a generic error.
Order
Bugs
- Fixed incorrect calculation of
priceTotalNetfield for order items. The field now correctly calculates based on the actual item quantity instead of defaulting to quantity 1. - Fixed an issue where order item sequence would change unexpectedly when adding new items to existing orders. Items now maintain their original position when orders are modified.
- Resolved tender processing failures caused by missing
export_statusdefault values. Tenders can now be successfully converted to orders. - Fixed pagination issues in the orders query where incorrect numbers of items were returned regardless of the offset value. Pagination now works correctly and returns all orders as expected.
Order Status
Bugs
- Fixed security issue where admin users could incorrectly delete system order statuses. System order statuses are now properly protected from deletion by non-system users.
Valueset & PayMethod
Bugs
- Fixed REST endpoint functionality for Valueset and PayMethod services, ensuring proper operation of these services via REST API.
Version 2.50 - 6th August
Product
Bugs
- Fixed an issue where searching for products by manufacturer name failed when the name contained spaces. Product searches now correctly return results for manufacturers with spaces in their names (e.g., "Turtle Wax").
User Management
Bugs
- Resolved an issue where the parentUsergroupId field incorrectly returned null in various queries and mutations. This non-nullable field now properly returns the expected value in contact and company operations.
Order
Bugs
- Improved error handling when deleting Order Status Sets. The system now provides clear guidance that all order statuses must be removed from a set before it can be deleted, replacing the previous generic error message.
Version 2.49 - 23rd July
Order
Bugs
- Fixed an issue where order creation via REST API failed with "Failed to fetch product ids by sources" error. Orders can now be created successfully when referencing products by their source identifiers.
- Resolved an issue where order REST API responses included empty arrays for addresses and shipments when these fields were not expanded. These fields are now only included in the response when explicitly requested via expand parameters.
Attributes
Bugs
- Fixed an issue where default values were not created when bulk importing attribute descriptions via REST API. Default values are now properly saved when included in the bulk payload.
Media
New Features
- Increased the maximum file name length for media uploads to 255 characters (including file extension), aligning with industry standards for better compatibility with various file naming conventions.
Version 2.48 - 16th July
Product
Bugs
- Fixed validation error messages when importing products with attributes via REST API. The system now returns accurate error messages for v2 attribute payload validation, making it easier to identify and resolve import issues.
Pricing
Bugs
- Fixed an issue where product group discounts created through REST API were not visible in GraphQL queries or the backoffice interface. Product group discounts are now correctly displayed and applied across all platform interfaces.
Version 2.47 - 9th July
Attribute
New Features
- Improved error messaging when creating text attribute descriptions without required default values.
User Management
New Features
- Deprecated List FavoriteList REST endpoint.
Product
Bugs
- Fixed error when creating products and clusters that prevented proper price creation response handling.
- Resolved catalog query error that occurred when filtering by color attributes.
Bugs
- Fixed pricesheet pricing REST endpoint error for bulk discount operations.
Version 2.47 - 25th June
Pricing
Bugs
- Fixed discount bulk issue when updating existing discount per pricesheet.
Version 2.46 - 18th June
Product
Bugs
- Fixed bulk product creation always setting hidden value to Y regardless of payload value
Order
Bugs
- Fixed
exportStatusfield not being returned in order REST API response - Fixed search by empty
exportStatusnot working correctly for non-exported orders
Event Actions & Templates
New Features
- Added custom fields to standard payload for event actions (
ORDER_CREATED,ORDER_UPDATED,ORDER_SEND_CONFIRMATION,QUOTE_SEND,QUOTE_SEND_REQUEST,QUOTE_SEND_VALIDATION) - Added
referencefield, order addresses andtaxPercentagesdetails to event payloads - Implemented error logging for template rendering and custom query failures with 1-month retention
- Added GraphQL queries for
templateErrorLog,templateErrorLogsandtemplateErrorLogStats
Webhooks
New Features
- Added authentication support for webhooks with HMAC-SHA256 signature verification
- Added basic HTTP authentication support for webhook endpoints
Pricing
Bugs
- Fixed VAT calculation not updating correctly when changing delivery country on orders
- Fixed tax calculations for discounted postage and payment amounts
Cart
Bugs
- Fixed
cartUpdateItemmutation not calculating correct prices for clusters with options
User Management
Bugs
- Fixed REST API returning all amount fields as strings instead of numbers (except
postageData.tax)
Business Rules
Bugs
- Fixed
businessRuleDecisionTableUpdatemutation not updating decision table names
Version 2.45 - 10th June
Product
Bugs
- Fixed issue causing cluster products to disappear due to incorrect routing and deletion behavior.
- Ensured hidden products and clusters are fully excluded from search results.
- Resolved GraphQL error where null
SparePart.idcaused spare parts queries to fail when migrating from V1 to V2.
Version 2.44 - 28th May
Order
New Features
- Added support for updating a single address via the
orderUpdatemutation to increase flexibility in order editing.
Bugs
- Updated validation for
postage.requestDateandpayment.statusDateto accept ISO 8601 date strings, resolving unnecessary 400 errors. - Fixed tender creation flow failure, ensuring stability of order initialization.
Product
New Features
- Improved cluster creation time by avoiding unnecessary calls to pricing and attribute services when no products are present.
Bugs
- Prevented GraphQL crash when moving products from a cluster to a PDM category.
- Fixed
externalreferenceREST API to properly return IDs for existing imported machines instead of 404 errors.
Pricing
Bugs
- Fixed bundle price calculation issue for “no discount” bundles. The bundle price now correctly sums up the applied product prices instead of using only the first item’s price.
Other
Bugs
- Resolved valueset type issue where newly created valuesets defaulted to SYSTEM instead of CUSTOM, blocking edits in backoffice.
- Corrected filter behavior: multiple selections in a filter group are now allowed, and value sorting defaults to descending by count.
Version 2.43 - 21th May
Order
New features
- Improved error handling for price imports by splitting payloads into 1,000-record batches when limits are exceeded.
- Included postage and payment taxes in
order.total.taxPercentagesgrouping in the API response.
Bugs
- Fixed sync issue where
externalIdupdates on orders weren’t reflected in related tender queries. - Fixed issue where setting tender discount to 0 didn’t overwrite previous discount on order during tender processing.
- Fixed duplication of surcharges for bonus items when
tenderProcesswas run multiple times aftertenderApplyIncentives.
Pricing
New features
- Added backend support to wipe all pricesheet prices in one action instead of requiring full pricesheet deletion.
Bugs
- Ensured bulk prices return correctly from the API regardless of
validFromorvalidTodates. - Fixed bug where deleting a user didn’t remove them from pricesheets, causing pricing page to break.
- Fixed API error when searching pricesheets using
json_search, ensuring stability across environments.
Deprecation
- Flagged the deprecated
shippingcostfield on carrier objects across all V2 API definitions. - Deprecated unused fields in
OrderStatusobject (isExportable,isConfirmable,isArchivable).
Version 2.42 - 14th May
Order
New features
- Deprecated the
total.orderIdfield in the order object since the order ID is already present in the parent structure.
Business rules
New features
- Enabled business rules to set transaction costs automatically, expanding rule-based pricing capabilities.
Bugs
- Fixed carrier rule logic so that defined conditions correctly apply in both the sales portal and webshop checkout flow.
Product
New features
- Made it possible to add hidden products and clusters to quotes or orders in the back office, while still keeping them hidden on the frontend.
- Removed unused or incomplete options from the rule builder: removed “User path” and “User parent usergroup id” from IF conditions, and “Add valuepoints to order” from THEN actions.
Pricing
Bugs
- Corrected tax values shown on the order overview page and PDF to match actual calculations and basket totals.
Other
New features
- Added
WAREHOUSE_CREATEDandWAREHOUSE_UPDATEDevents to the warehouse service for better cross-service data replication. - Removed
SEND_WELCOME_EMAILfrom the list of available event triggers, as it was incorrectly exposed in the back office.
Version 2.41 - 7th May
Product
Bugs
- Fixed an error in the
ClusterOptionCreatemutation that occurred when thedefaultLanguagefield was provided. This field is no longer accepted and must be omitted to successfully create cluster options. - Resolved an issue where
machineCreatemutation failed due to an internal fetch error from the SpareParts service. Creation now works as expected with valid inputs.
Pricing
Bugs
- Fixed a bug in VAT calculation where changing the delivery country on an order did not correctly recalculate VAT rates (e.g. low/high/zero) based on the new tax zone. The calculation now reflects the appropriate rate when updating the order address.
Business Rules
Bugs
- Fixed a forbidden resource error when users with proper roles tried to edit business rules in the rule builder.
Version 2.40 - 29th April
Event actions, webhooks and templates
You can now configure automated actions in response to key platform events using the new Event Action Manager.
Key capabilities
-
Event Actions Define actions triggered by platform events (e.g. order placed, quote approved, account created). Supports multiple actions per event.
-
Webhooks Send structured JSON payloads to external systems in real-time. Useful for syncing with CRMs, ERPs, or internal services.
-
Template Rendering Render HTML or PDF content using customizable templates. Supports multi-tenant setups, per-channel logic, and language variants. Handlebars syntax with custom helpers is supported.
Use cases
- Automatically send transactional emails using tenant-specific templates.
- Trigger external updates via webhook when a quote is accepted.
- Generate and attach a rendered PDF offer when an event is fired.
This reduces the need for custom code by allowing event-driven behavior to be configured declaratively.
Documentation: Event Actions & Templates
Shipments
The shipment model in our v2 API has been completely rebuilt to support structured shipment tracking and integration with external systems. This includes shipments, shipment items and track & trace.
Key changes
- New shipment model
A shipment is tied to an order (1:N). Multiple shipments per order are supported. Each shipment can have one or more tracking codes and carrier info via the
TrackAndTraceentity. Shipments now reference order items explicitly. This allows partial delivery tracking and aligns with ERP integration expectations.
API coverage
-
GraphQL Full read/write coverage for
Shipment,ShipmentItem, andTrackAndTracevia query and mutation types. Supports filtering, sorting and pagination. -
REST Create, update, delete and bulk import shipments through REST endpoints.
Order address create, update and retrieve improvements
Address handling for orders has been extended and standardized across GraphQL and REST APIs.
Key changes
-
Create with order Addresses can now be created as part of the
orderCreatemutation (GraphQL) or the corresponding REST endpoint. No need for a separate call during order creation. -
Update address Address updates now use a clearly named standalone mutation/endpoint for both GraphQL and REST. This replaces older implicit flows.
-
Retrieve address When fetching an order (REST or GraphQL), you can now include associated address data. This wasn’t available in REST before.
Removed fields, queries and objects
Fields
-
Order Type (GraphQL & REST)
- shipments
- accountingId
- pickupStoreId
- siteId
-
Order Item Type (GraphQL & REST)
- minimumQuantity
-
Order Create Input (GraphQL & REST)
- accountingId
-
Order Update Input (GraphQL & REST)
- accountingId
Query
- GraphQL
- orderSendConfirmationEmail Note: the mutation with the same name remains available
Objects
- GraphQL & REST
- Shipment
- TrackAndTrace
Other changes
New Features
- Added
hiddensupport to both REST endpoints and GraphQL functionality for products, categories and clusters. This allows controlling visibility of these objects via API during creation, updates and filtering—useful for preparing content before webshop publication. - Added pagination support to pricesheet companies, contacts, and customers to improve performance when handling large datasets.
- Made
name,supplier, andsupplierCoderequired fields when creating or updating tender order items to prevent null values in the database.
Bugs
- Fixed an issue where the title and content language of password reset and initial password emails for back office users did not match.
- Fixed an issue where the attribute products CSV import only processed the first product ID, ignoring subsequent rows.
- Fixed an issue that caused order creation from a cart to fail due to invalid or missing address fields in the order validation process.
- Fixed a regression where bonus items were no longer added to the cart based on incentive rules when subtotal thresholds were met.
- Fixed an issue where incentives with the "repeat" setting did not apply to all order items as expected.
- Fixed a bug where tender item prices ignored the updated cost price from bulkCostPrices and still used the deprecated cost field.
- Corrected tax calculation on tender updates to apply the appropriate tax percentage based on the actual tax code and delivery address, instead of defaulting to high VAT.
- Fixed an issue where
tender.postageData.requestDatewas not persisted when processing a tender into an order. - Fixed a bug where the default delivery address was not selected correctly on order creation and switching the delivery address resulted in an error.
Version 2.39 - 23th April
Product
New Features
- Implemented the ability to mark cluster products as hidden, extending hidden functionality to clusters in addition to products and categories.
- Added new mutations
clusterProductAttachandclusterProductDetachin Product Search V2 to enable easier linking and unlinking of products to clusters. - Clarified GraphQL and REST API conventions for product-cluster association to avoid ambiguity between creation and linking operations.
User Management
New Features
- Enabled access to
triggerPasswordSendResetEmailEventandtriggerPasswordSendInitEmailEventusing admin-level tenant credentials, supporting platform-level onboarding workflows.
Bugs
- Fixed mismatch in contact data returned between
companySearchandcompany(id)queries. - Fixed a bug where deleting all contacts on the last page caused
itemsFoundto return zero in subsequent queries, even though contacts still existed on previous pages. - Deprecated usergroup queries and mutations as they were no longer in use.
- Resolved a GraphQL 413 "Payload Too Large" error that prevented order lists from loading due to excessive payload in user paginated results.
Attributes
Bugs
- Fixed an issue where importing attribute values in multiple languages failed due to backend validation, now allowing multilingual attribute input.
Version 2.38 - 16th April
Authorization & Authorization Limit
Introduced support for purchase authorization roles and limits to reduce risk and enable more controlled delegation of purchasing responsibility. Tenants can now assign ‘purchaser’ and ‘authorization manager’ roles to contacts and configure authorization limits per company-contact pair. The platform enforces these limits during cart and tender flows, blocking purchases that exceed the defined thresholds unless approved. Carts now supports authorization requests, tracks status, and emits relevant events for integration with approval workflows.
Product
New Features
- Added support for product statuses like Out of Stock, Presale, and Restricted to ensure these can be added to carts and other flows like favorites and business rules.
Order
Bugs
- Fixed an issue where tenderStart failed if only a customerId was provided, ensuring proper support for order creation via tender.
User Management
Bugs
- Resolved a bug where creating new companies failed due to a missing parent company reference.
Other
Bugs
- Resolved an issue where machine queries to the GraphQL API would incorrectly return “Forbidden resource” errors when using limited API keys.
Version 2.37 - 2nd April
User Management
Bugs
- Fixed issue where contact and customer sources were not populated when using larger offset values in the user management API.
- Improved error handling on registration page when trying to register with an already existing email address.
Product
Bugs
- Fixed cluster field resolving issue in product queries using offset > 500.
Version 2.36 - 26th March
Magic Tokens for PunchOut Catalogs
We introduced magic token-based authentication to support OCI punchout catalog integrations and user impersonation, enabling seamless connections between Propeller tenants and their B2B customers’ ERP systems.
This release allows contacts to automatically log into a Propeller self-service portal directly from their ERP system. It also enables Propeller users to impersonate a contact or customer, providing support or placing orders on their behalf. These features help companies manage procurement via their own ERP while leveraging Propeller for real-time product data, pricing and stock.
Key Highlights:
-
Magic Token Authentication
- Secure, time-limited login links (magic tokens) can now be generated for contacts or customers. These enable ERP systems or Propeller users to start a session without static credentials or exposing sensitive user data.
-
OCI Integration Support
- ERP systems can now initiate punchout sessions using the standard OCI protocol. On login, contacts are automatically directed to a webshop session, with their identity managed through impersonation via magic token. Requires front-end integration support.
-
Impersonation by Propeller Users
- Propeller users can now log into the webshop on behalf of a contact or customer using magic token-based impersonation. This is useful for sales support or managing orders on behalf of B2B buyers.
Product
New Features
- Added lastModifiedAt timestamps to bundle events to improve tracking and debugging of changes.
- Added source and source ID to GraphQL product type to support ERP migration and data audits.
Bugs
- Fixed GraphQL error handling on surcharge deletion by applying proper cascade logic on delete and update.
- Investigated and improved performance of category queries by optimizing pricing bottlenecks.
- Fixed issue where product sources would not populate when using large offsets in GraphQL queries.
- Fixed manufacturerCode update mutation for cluster/option products by allowing the field in input schema.
Pricing
Bugs
- Fixed duplication of price sheet results in priceExplain query by ensuring correct de-duplication.
Order
Bugs
- Fixed an issue where orders placed for a non-primary company were incorrectly linked to the primary company.
- Corrected behavior of Tender so it now returns the debtor ID of the company an order is placed for, instead of the user’s default company.
User Management
New Features
- Added lastModifiedAt timestamps to UserRoleCreated and UserRoleUpdated events for better audit tracking.
- Added lastModifiedAt field to AdminUserCreated and AdminUserUpdated events to improve traceability in admin user management.
- Password reset events now include the user's language for localized emails.
Bugs
- Negative orderlists are now correctly enforced for anonymous users in the frontend.
- Fixed an issue where newly created companies were not immediately searchable due to race conditions in event handling.
- Fixed customerRegister mutation failing due to missing parent fields in the payload.
Other
Bugs
- Resolved issue where user 'source' field displayed inconsistently across paginated views in back office.
- Attribute description changes now emit create, update and delete events.
Version 2.35 - 27th February
Pricing
New Features
- Implemented bulk cost pricing, ensuring that when a bulk cost price is set for a specific quantity, customer pricing is correctly calculated based on the bulk cost price rather than the base cost price.
- Deprecated
shippingCoston the carrier object, complex shipping costs including carrier logic can be set with the rule builder in Backoffice.
Rule Builder
Bugs
- Fixed an issue where carrier rules were not applied correctly to carts and orders.
- Resolved a bug where shipping cost-related rules were removed after the rules were applied.
Cart
Bugs
- Corrected an issue where searching by
productIdwould return the wrong product. - Resolved an issue where bulk cart mutations did not properly update cart items.
- Fixed a problem where
cartItemsBulkmutations did not add items to the cached cart.
Media
Bugs
- Fixed a bug where deleting a media image using the
mediaImageDeletemutation would fail with a "No Such Object" error. The mutation now correctly removes media images and documents.
Product
Bugs
- Resolved a bug where an order list containing a cluster would prevent the products query from returning any results.
- Fixed search behavior where clusters were not returned when searching for the first word in their name.
- Fixed an issue where querying
sparePartProductsunder a machine would throw an API error.
Version 2.34 - 19th February
Categories
Bugs
- Resolved an issue where deleted categories were still being marked as folders and entities instead of only having the
deletedproperty. This caused deleted categories to appear in query results.
Order
Bugs
- Fixed an issue where the
Allsetting in the Rule Builder broke rule execution, preventing correct order processing.
User Management
Bugs
- Resolved an issue where pagination for federated contacts in the
companyquery returned incorrect results. The second page of contacts now correctly retrieves only the expected items instead of duplicating records from the first page.
Version 2.33 - 12th February
CSV Import
New Features
- Added the ability to import customers via CSV.
- Automatically sets
USERGROUP_ID,USERGROUP_SOURCE_NAME, andUSERGROUP_SOURCE_IDwhen importing companies, products, contacts, customers, categories and inventory via CSV.
Bugs
- Fixed an issue where category CSV imports by source ID were duplicating categories instead of updating them.
Order
Bugs
- Resolved an issue where an applied rule would remain active even if the conditions were no longer met, unless a new rule became true.
- Fixed an issue where bulk cart mutations did not correctly update cart items.
- Ensured correct tax calculation for cart and orders, resolving discrepancies in VAT calculations.
- Fixed an issue where order processing failed if no carrier rules were configured for a tenant.
Version 2.32 - 5th February
Product
New Features
- Improved search and filtering by adding metadata indexing for products, clusters and categories, enhancing search performance and filter accuracy.
Bugs
- Category updates now work correctly after fixing an issue that prevented updates to PDM categories due to an invalid parent ID.
Order
New Features
- Enhanced order processing with improved REST API error handling, ensuring specific error messages for failed order operations instead of generic errors.
Bugs
- Accurate order search by fixing an issue where searching for orders returned a 500 error instead of a valid response.
Pricing
Bugs
- Refined pricing logic to ensure bulk cost prices are properly factored into final pricing calculations.
- Consistent discounts in orders by resolving an issue where customer-specific price discounts were only applied to a single order item instead of all applicable items.
- Bulk cost price application now correctly uses bulk cost prices for pricing calculations when applicable.
User Management
Bugs
- Product import stability improved by addressing a problem where imported companies would throw errors when accessed in the back office.
Version 2.31 - 29th January
User Management
New Features
- Added mutations in User Management V2 to manually trigger welcome email events for contacts and customers.
Logistics
Bugs
- Fixed an issue with fetching warehouses, resolving checkout process issues for anonymous users.
Version 2.30 - 16th January
CSV Import
Features
- Added support for importing cluster instances through CSV.
Bugs
- Fixed a bug where attribute product CSV imports only respected the first product ID, ignoring subsequent rows.
Product
Features
- Implemented automatic deletion of cross-sell/up-sell items when a cluster is deleted to maintain data consistency.
Cart
Bugs
- Addressed an issue preventing clusters from being added to the shopping cart under certain configurations.
Order
Bugs
- Fixed an issue where tender items total was set to 0 on tender process for certain company contacts.
Rule Builder
Bugs
- Resolved an issue where the rule builder with attribute conditions did not apply shipping costs as expected.
Version 2.29 - 8th January
Cart
New Features
- Introduced a
cartItemsBulkUpdatemutation to allow bulk creation and updates of cart items in a single API call, improving efficiency and reducing the number of required requests.
CSV Import
New Features
- Categories can now be imported via CSV, enhancing the platform's data import capabilities.
Bugs
- Updated CSV import services to default IDs to
0, simplifying data import workflows and ensuring consistent handling across all services.
Order
Bugs
- Fixed an issue where the carrier value from
CartandTenderwas not transferred to theOrder, ensuring the carrier is correctly set during the order creation process.
Attributes
Bugs
- Fixed an issue where sorting functionality for
CREATED_AT,LAST_MODIFIED_AT, andNAMEfields inattributeDescriptionsdid not work as expected, ensuring proper ordering in ascending or descending order based on the selected input. - Resolved an issue in the CSV import functionality for
attributeDescriptionswhere thegroupfield was not populated, ensuring that attribute groups are imported correctly.
Clusters
Bugs
- Fixed an issue where deleting a product option within a cluster caused all options for that cluster to disappear. This issue also prevented proper cluster option updates until a new product option was added. Cluster options now update correctly after product deletions.
Companies
Bugs
- Fixed an issue where the
notesfield incompanyCreateandcompanyUpdatemutations always returned null. Thenotesfield now properly reflects the value input during company creation or updates.
Version 2.28 - 24th December
CSV Data Import
New Features
- Updated CSV import functionality to default IDs to
0in all services that supportcsvImport, simplifying workflows and ensuring consistency in data imports. - Added CSV import functionality for discounts, enabling seamless bulk updates or imports for discount-related data.
Bugs
- Fixed an issue with
discountCsvImportwherevalidFromandvalidTofields always triggered errors, ensuring successful imports regardless of whether these optional fields are included.
Order
Bugs
- Fixed an issue where tenders would throw an error if the original product of a tender item was deleted, ensuring tenders are no longer dependent on the product's current price.
- Resolved an issue where item discounts in order and quotation responses always returned
0, ensuring that accurate discount values are now included in the response. - Fixed an issue where tenders would throw an error if the original product of a tender item was deleted, ensuring tenders are no longer dependent on the product's current price.
- Fixed an issue where
tenderUpdatePostagedid not allow settingpostageData.priceback to 0 after it was set to a value greater than 0, ensuring accurate updates to postage costs.
Product
Bugs
- Fixed an issue where duplicate products appeared in exports (e.g., Channable integration), ensuring that each product is included only once per export.
User Management
Bugs
- Resolved an issue where existing contacts added to a company were not returned properly, ensuring contacts are visible immediately after being added.
Pricing
Bugs
- Fixed an inconsistency in customer-specific prices (
price.gross) whenbulkPriceswere queried inCatalogProductDetailsQuery, ensuring accurate and consistent price values regardless of bulk pricing data.
Version 2.27 - 18th December
CSV Data Import
- This release consists of the back-end for allowing to import Propeller tenant data through CSV files. This has several benefits:
- For Prospects: Prospects can import their data into the Propeller platform for testing purposes, experiencing the platform in their business context. This allows for faster evaluation and exploration of Propeller's full potential.
- For Existing Tenants: Propeller tenants can use data import tools to enrich their platform with additional configurations or datasets without requiring costly integrations for one-time updates.
Supported Data Imports:
- Pricing Data:
- Product prices
- Pricesheets
- Cost prices
- Bulk prices
- Attributes:
- Attributes
- Attribute descriptions
- Users:
- Contacts
- Companies
- Inventory
User Management
New Features
- Password reset emails can now be fully customized with tenant-specific logos, sender domains, and email content, enhancing branding and providing a tailored user experience.
Product
Bugs
- Product search queries now correctly return no results when positive order lists are empty, ensuring accurate filtering and preventing unintended product visibility.
- Fixed errors related to integer and decimal range filters in product queries, ensuring seamless data retrieval without null field errors.
Cart
Bugs
- Resolved an issue where starting a new cart triggered an “Unauthorized use of companyId” error, ensuring smooth cart initialization.
Version 2.26 - 10th December
Product
Bugs
-
Improved product and cluster queries to consistently apply order lists in singular queries, ensuring aligned behavior across all query types when handling product visibility and access.
-
Fixed an issue with deleting settings from cluster configurations where some settings erroneously returned “not found” errors. The deletion and update processes for cluster settings are now more reliable, ensuring consistent handling of cluster configuration operations.
Version 2.25 - 2nd December
User Management
Bugs
- Resolved an issue where querying sources on a contact resulted in an unknown error. API users can now fetch contact sources without encountering errors.
Cart
New Features
- The GET cart endpoint now returns surcharge details, providing more comprehensive cart information for API users.
Version 2.24 - 27th November
Data Import
New Features
- Introduced a productCsvImport mutation for importing products via CSV files, allowing users to map CSV columns to database fields for efficient product creation or updates.
Version 2.23 - 20th November
Order
Bugs
-
Batch updates for orderlists now skip duplicates without errors, ensuring smoother imports and updates.
-
Deployed a fix on ICP (ICS in English), so it is applied correctly to carts, setting tax to 0% when applicable.
Version 2.22 - 13th November
User Management
New Features
-
Added phone and email fields to the company entity, enhancing accessibility to key contact information.
-
Added company debtorId to search functionality, enabling searches based on company rather than contact debtor IDs. Also made “email” searchable for improved usability in quote and order creation processes.
Order
Bugs
- Fixed an issue causing errors in fetching user claims during order updates and tender processing. This resolves interruptions in the order and tender workflows on staging and production environments.
Product
New Features
- Added a query to retrieve products associated with a specific clusterOptionId, streamlining access to products within defined cluster options.
Bugs
-
Resolved an issue causing connection errors during attribute creation in clusters.
-
Fixed an issue where linked products were not returned in queries when getDescendants was set to false, ensuring accurate product data retrieval across categories.
Version 2.21 - 5th November
Category
New Features
- Introduced new functionality ‘Product in multiple categories’. This update enhances the B2B commerce platform by enabling products and clusters to belong to multiple categories. This flexibility improves product organization and visibility, ensuring that items can be associated with various categories to meet complex business needs. Each product or cluster maintains a primary category for backward compatibility, while symlink relationships support additional categories. Managing this feature through the Back Office is expected soon, as can then be read in the release notes.
Product
New Features
- Added functionality to set a default product within a cluster. Additionally, the first product created in a cluster will now automatically be set as the default, streamlining product organization and management.
Bugs
-
Fixed issues with cross-upsell creation for both product-to-cluster and cluster-to-cluster scenarios. Resolved errors causing null returns for non-nullable fields Crossupsell.productFrom and Crossupsell.productTo. Now, users can create cross-upsells successfully, and related products display correctly after a page refresh.
-
Updated the packageUnit field in the productUpdate/productCreate mutations to accept string values instead of numbers, aligning with expected data formatting. This adjustment ensures that packageUnit can store descriptive text as intended.
Order
New Features
- Added additional validation to ensure that a Contact belongs to the specified Company, preventing the creation of Carts, Orders, or Quotes with invalid contact-company combinations.
Version 2.20 - 29th October
Order
New Features
- Enabled deletion of payments via eventing when an order is deleted, ensuring associated payments are removed automatically and preventing orphaned data in the checkout process.
User Management
New Features
- Updated authentication and email settings to make the redirectUrl parameter optional, providing flexibility in cases where a redirect is not needed.
- Implemented validation across services to ensure that Carts, Orders, and Quotes are only created for valid contact and company combinations, preventing mismatches when a contact does not belong to the selected company.
Pricing
New Features
- Added functionality for user groups/tags in to support customized pricing.
Version 2.19 - 28th October
Cart
Bugs
- Fixed an issue where cartStart didn’t work in requests without an accessToken.
Version 2.18 - 24th October
Cart
Bugs
- Fixed an issue where the wrong error message was displayed when a product did not exist in the cart. The system now correctly shows “Product does not exist” instead of “Pricing information not found” when attempting to add a non-existent product.
Media
Bugs
- Fixed an issue where .avif images were not being transformed correctly.
Order
Bugs
- Fixed an issue where the priceTotalNet field was returning null when querying order details. The system now correctly calculates and displays the net total price for ordered items.
User Management
Bugs
- Fixed an issue where the customerCreateAccount and contactCreateAccount mutations were throwing errors related to the password field.
Version 2.17 - 15th October
Media
New Features
- Users can now securely manage and retrieve order-related attachments, improving the workflow for processes that require additional documentation, such as signed forms. This functionality allows multiple files to be attached to orders, with access secured through credentials to ensure data protection. Attachments can be retrieved via an API, providing a seamless integration into existing systems. This release allows only attachments to be managed by admin users, but this will be extended in the next release.
User Management
New Features
- Updated the password reset emails to replace the long URL link with a more user-friendly “click here to reset your password” text.
Bugs
-
Added the middle name field to company contact selections, ensuring that it is now included in all relevant search results, such as creating quotes and orders.
-
Resolved an issue where the middle name was incorrectly marked as mandatory when creating a company address. Now, middle name is optional as expected.
-
Resolved an issue where the isDefault field was not being updated correctly through the companyAddressUpdate mutation for invoice addresses.
Order
New Features
- Updated the orderStatusUpdate mutation so that orderType is no longer mandatory.
Product
New Features
- Added support for retrieving multiple products by productId, allowing for more efficient queries and better handling of bulk product requests.
Bugs
-
Resolved an issue where the deletion of a product assigned to cross-sell or upsell relationships would cause errors in the crossUpsells query. Now, the system handles deleted products correctly.
-
Resolved an issue with the cross-sell and upsell functionality for Clusters.
Pricing
New Features
- Improved the pricing system to fully support user groups, allowing for greater flexibility and scalability in managing pricing across multiple users and entities. This change simplifies price management and ensures better alignment with group-based pricing strategies.
Bugs
-
Resolved an issue where the bundle net price was being calculated incorrectly. The net price for bundles now reflects accurate values, ensuring that discounts and product prices are applied correctly across all bundle components.
-
Resolved an issue with the price priority logic in the Explain Price function for bulk pricing. Prices are now displayed correctly based on the configured priorities for NET bulk price, List price, and Cost price calculations across different quantities.
Version 2.16 - 3rd October
User Management
New Features
- Enabled the ability to create a webshop account for existing contacts via API, allowing them to log in to the B2B commerce frontend portal. Also added functionality to connect a Propellor contact to an existing user account, improving account management for existing B2B users.
Order
New Features
- Added createdAt and lastModifiedAt filters to queries for orders, order lists, tax and valuesets. This ensures that displayed numbers are accurate for selected time filters.
Bugs
- Optimized data fetching and caching to reduce query loading times, resulting in a faster experience when accessing order, quote, or request details.
Product
Bugs
- Fixed an error when sorting products by price in certain categories. Sorting now works reliably across all categories.
- Fixed an issue where adding the same product to its own CrossUpSell resulted in an error. A validation has been added to prevent adding a product as its own accessory, enhancing the user experience.
- Fixed an issue where updating the product quantity did not update lastModifiedDate in the cart. Now, any change in product quantity correctly updates the timestamp, ensuring accurate tracking of cart modifications.
Pricing
New Features
- Enhanced the explainPrice query to include the name of associated pricesheets, providing users with greater clarity on how explained prices relate to their respective pricesheets.
Bugs
- Fixed an issue where bulk sales prices were incorrectly added to the price stack when the discount type was set to cost price plus.
- Fixed an issue where the ICS setting was not applied to carts, orders, requests, or quotes. Now, when ICS is set to “yes” for a delivery address, the tax percentage is correctly set to 0.
- Fixed an issue where the end-to-end flow for action codes was not working correctly. Now, action codes are properly created, applied to carts, and accurately impact pricing as expected.
Attributes
Bugs
- Fixed an issue where listing attributes with includeDefaultValue was not working for non-product and non-category attributes. The query now correctly returns attributes with values for the specified contact.
Cart
Bugs
- Resolved an error that occurred when executing the “carts” query, enhancing stability and ensuring consistent query execution.
Version 2.15 - 25th September
User Management
New Features
- Implemented a new mutation to facilitate password reset emails. The publishPasswordResetEmailEvent mutation generates a password reset link and appends it to the email content, improving the user experience for password recovery.
- Added the debtorId to Company and include it in both creation and update processes. Deprecated the use of Contact debtorId, ensuring debtor IDs are consistently managed at the Company level.
Order
New Features
- Added createdAt and lastModifiedAt filters to improve the filtering of orders, order lists, tax information and value sets within specific timeframes (last day, week, month, or year).
- Orders created for a company will now correctly store the company debtorId.
- Introduced a new mutation for updating order addresses, either as a separate orderUpdateAddress mutation or as an action within orderUpdate, providing a more flexible way to modify order address details.
Bugs
- Resolved an issue causing errors when querying an order with the exportStatus field due to an enum case mismatch. The exportStatus is now correctly handled.
Pricing
New Features
- Implemented support for product-specific tax codes based on tax zones. This ensures accurate tax calculation according to the tax zone associated with each product, improving pricing accuracy during the checkout and tender processes.
Bugs
- Fixed an issue preventing order processing when the tax zone or percentage could not be resolved. Orders will now default to a 0% tax rate when the tax information is unavailable, ensuring smooth order creation without errors.
Cart
Bugs
- Fixed an error when updating a cart that required the “uuid” field in certain cases. Now, carts can be updated successfully without this issue.
Product
New Features
- Clusters will now be hidden if all associated products are unavailable, preventing customers from viewing or attempting to order out-of-stock clusters. Clusters will remain visible as long as at least one product within them is available. This update enhances the ordering process and improves user experience.
Bugs
- Fixed an issue where creating a product resulted in packageUnitQuantity being set to an empty string, causing errors during order processing. Now, packageUnitQuantity is correctly initialized, preventing errors when adding products to a tender.
Media
New Features
- Media can now be imported in bulk via REST.
Version 2.14 - 17th September
Product
New Features
- Improved searching for products, where filtering by SKUs returned products containing partial matches rather than only those that fully match the specified SKU.
Order
Bugs
- Resolved an issue where large orders displayed an incorrect total sum on order and order lines, capping amounts at €100,000.
Version 2.13 -11th September
User Management
New Features
- Added GraphQL mutations to associate and disassociate a Contact with multiple Companies using contactIds and companyIds. These mutations return the full Contact entity with all available fields.
- Implemented GraphQL federation to allow retrieval of all related contact, company, and customer data when fetching a Cart, Order, or Tender. This reduces the need for multiple API calls.
- Enabled the ability to search for a Company using linked Contact data. This allows easier discovery of companies associated with specific contacts, improving search functionality for administrators.
- Added a guard to the passwordResetLink.
Bugs
- Fixed pagination issue for Companies, ensuring it starts at page 1 with correct offset, start, and end values based on the number of items displayed.
- Resolved issue with the contactRemoveFromCompanies mutation. The mutation now returns a success response confirming the contact has been successfully removed from the specified companies.
- Fixed the contactUpdate mutation failure by ensuring that the parentCompanyId field returns a valid, non-null integer. Additionally, the parentCompanyId field has been marked as mandatory in the GraphQL schema.
- Fixed an issue where the company query returned an empty array for contacts after using the contactAddToCompanies mutation when the company had no users. The contact is now correctly associated with the company and is returned in the company query immediately after being added.
- Fixed an issue where querying by userId with a limited access API key could return data for other users. The query now properly restricts access to the correct user’s data.
Order
New Features
- Updated the logic for sale margin calculation on quotes and orders.
- Updated the source field logic for quotes, orders and requests to reflect the correct creation source.
- Added the ability to create orders and quotes for a Contact and Company combination.
Bugs
- Breaking change: Fixed an issue where the Tender query threw an error when using the orderId returned from the tenderProcess mutation. Orders can now be created and fetched correctly.
- Fixed issue where item.package was returning null in GraphQL despite being available in the database.
- Fixed the orderUpdate mutation.
- Fixed an issue preventing orders from being placed in the checkout process. Resolved an error related to shipping cost calculations that caused the order total to display incorrectly.
Pricing
New Features
- Updated PriceCalculateInput to allow contactId, customerId, and companyId fields to be nullable.
Bugs
- Fixed an issue where the explainPrice API returned incorrect tax codes for certain tax zones. The correct tax code is now returned based on the taxZone, productId, and priceId.
- Fixed an issue with the price sheet search functionality. The search feature now correctly returns a list of price sheets matching the entered name.
- Fixed issue with bulksalesprice added incorrectly for COSTPRICEPLUS discount type.
Cart
New Features
- Breaking change: Enabled the application of action codes to carts. Standardized the naming to “actionCode” across all relevant areas to ensure proper functionality and consistency.
- Implemented the ability to create a Cart linked to both a contactId and companyId. The Cart now correctly applies company-specific pricing and order lists. Deprecated the userId field, ensuring backward compatibility while encouraging the use of contactId and companyId.
- Added a new GraphQL query to list existing carts based on contactId, companyId, or customerId. This allows retrieval of multiple carts for B2B or B2C scenarios, with pagination support and user-based permission validation.
Bugs
- Fixed an issue where the lastModifiedAt field was not updating when a Cart was modified. The field now correctly updates whenever a Cart is updated or items are added, removed, or modified.
- Fixed an issue where totalGross in the Cart total incorrectly included postage costs when no postage information was provided. Postage data is now only applied when explicitly added to the cart.
Product
New Features
- Enhanced product search functionality to support viewing products as a contact with a selected company. Product restrictions now apply based on both contactId and companyId, ensuring the correct order lists are applied in the search results.
Bugs
- Resolved bundle error when adding products to a quote. Products can now be successfully added to the quote without errors.
- Resolved inconsistency in the class field type, ensuring correct filtering in product search.
- Fixed an issue with inconsistent maxPrice values in product search results when adjusting the price filter. The maxPrice now consistently reflects the correct value across queries.
Version 2.12 - 2nd September
Attributes
Bugs
- Fixed an issue where retrieving attributes for companies, contacts, and customers returned an empty array instead of the expected attribute values.
Product
New Features
- Added new sortable and filterable fields partnerEntity and active (default: Y) to the order list.
Bugs
- Product search now returns only active order lists by default.
- Resolved an issue where the order list in products was not returning the selected filter values; the retrieved filter values were previously always null but now return correctly.
Order
Bugs
- Added fields to prevent duplicate order exports, making it easier and more reliable to integrate with third-party systems.
Version 2.11 - 26th August
Pricing
Bugs
- Fixed an issue with sale margin percentages, ensuring they are now calculated correctly in quotes and orders.
- Resolved a problem where deleting a user linked to a price sheet could cause errors.
- Corrected an error when adding multiple bulk price discounts to a product, allowing you to apply these discounts without issues.
Order
New Features
- Enhanced the search functionality, allowing you to search for quotes, orders, and requests by their respective IDs and company names for quicker access.
- Added the ability to sort requests, orders and quotes by company name, status and total amount.
Bugs
- Fixed an issue where the orderlistUpdate mutation was not properly clearing products from the order list, despite returning a successful response. Now, the cleanup works as expected.
- Resolved an issue where the orderUpdate mutation was causing errors.
Product
Bugs
- Resolved an issue where updating a product could unintentionally reset certain quantity fields. These fields will now retain their values unless specifically updated.
Version 2.10 - 20th August
Pricing
New Features
- Added the property ‘price display’ to indicate how a price should be shown on the front-end.
- Pricesheets can now also be assigned to a user group.
- It is now possible to filter pricesheets based on specific companies, contacts, and customers.
Order
New Features
- Added additional fields for orders and order lines.
Version 2.9 - 13th August
Attributes
Bug Fixes
- Changed the validation pattern for the name field in the attributeDescriptionCreate mutation.
Product
Bug Fixes
- Fixed an issue with sorting of products by price filter.
- Fixed an issue with searching products using range filters.
- Fixed an issue where the Orderlist query would incorrectly throw an error if ProductSearchInput was not provided, despite it not being mandatory.
Pricing
New Features
- You can now assign multiple companies, customers or contacts to a pricesheet by using an array of sources.
Bug Fixes
- Fixed an issue with product prices showing as null, even when prices are set.
- Pricesheet names are now nullable.
- Fixed an issue where the pricesheetDelete mutation incorrectly would throw an error.
- Aligned the discount service with the recent changes to pricesheet entities.
- Updated the priceUpdate mutation to allow setting prices, including list, suggested, cost and store prices, to 0.
Address
New Features
- Mutations now include ICP.
GraphQL Playground
- The GraphQL playground in-browser IDE has been removed from production environments’ URLs for security reasons. Please use alternative tools like Altair or Insomnia to explore and test GraphQL on the same URLs, and remember to add your API key to the headers for schema polling.
Version 2.8 - 7th August
User Management
New Features
- Enhanced contact management by listing all associated companies with pagination support for efficient querying.
- Improved handling of user data, ensuring smooth processing even with incomplete user IDs.
Cart
New Features
- Improved cart management by adding additional order detail fields.
- Fixed an issue where carts were not properly being deleted.
Product
New Features
- Improved the character limitations of product descriptions, ensuring a better fit for business needs.
Bug Fixes
- Ensured that filters are applied correctly when searching by attribute name for accurate results.
- Improved product queries to handle non-existing slugs appropriately, providing better error messages.
- Addressed issues with missing information in product search results, ensuring comprehensive data retrieval.
- Fixed a selection of mutations for product availability.
- Fixed filtering functionality to allow effective product status searches.
Category
Bug Fixes
- Resolved issues with category name updates in new languages, ensuring accurate reflection of changes.
Pricing
New Features
- Enhanced pricing customization by adding the ability to manage prices by user group, allowing for more precise pricing strategies.
Order
New Features
- Added support for tracking orders by company, enhancing multi-company environment capabilities.
Bug Fixes
- Ensured that searching by INVOICE_ADDRESS_COMPANY or RECIPIENT_COMPANY returns results.
Favorite Lists
New Features
- Added support for looking up and adding items (products, companies, contacts, customers) by their source IDs. This enhancement improves the organization and management of favorite items.
Platform - Version 2.5 - Preliminary Staging Release
This is the first official Beta release of the Propeller v2 platform. It contains the current status of all Propeller services together for the first time.
Not all features are expected to be fully functional, but releasing the services in this manner will provide insights internally and to our partners about the scope of changes throughout the v2 platform and allow us to complete the work necessary to bring this into full production-ready status.
Completely new in v2
- Attribute
- Business Rule Builder
- Carrier
- Favorites
- Orderlist
- Order Status
- Pay Method
- Price
- User Roles
- ValueSet
Lots of changes between v1 and v2
- Cart v2
- Crossupsell
- Order & Order helper
- Product Search
- Surcharges
- Tax
- User Management
- Warehouse
Only minor or no changes between v1 and v2
- Address
- Category
- Checkout
- External Reference
- Inventory
- Media
- Product Bundle
Completely new in v2
Attribute
The attribute service provides the means to add metadata to objects in a dynamic manner suited to your own use cases.
Attributes are available on the following models:
- Products
- Clusters
- Categories
- Companies
- Contacts
- Customers
The service includes the following entities:
- AttributeDescription
- AttributeValue
- Attributes
AttributeDescriptions define the attribute, holds the type and class and also the high level information.
AttributeValues are the specific values that are assigned. AttributeDescriptions have a default value, and the default value is an instance of attributeValue that is connected to the attributeDescription.
Attributes are the instance that’s assigned to an object.
When a product needs a new attribute, you first define the attributeDescription and the default value as an attributeValue.
Then when you want to add this to a product, you create an attribute and attributeValue with the custom specific value.
Key changes in the v2 release
- No longer supports attribute inheritance, all objects need to have a value-set on them explicitly
- Uses a default value field that can be used for all underlying objects. It’s also possible to set a non-value for an object.
- Queries can be modified to include or exclude default values in result sets.
Business Rule Builder
The Rule Builder is a powerful tool that can use a series of and/or arguments to select the exact set of data and then perform a number of actions to add, modify or remove this or related data.
There is a high level setting regarding the rules that determines how multiple rows are treated when applying the rules within the table. This setting is called the "Hit Policy":
- FIRST: Return the first applicable rule in the table
- COLLECT (ALL): Apply all the applicable rules in the table cumulatively
Key Business Rule changes in the v2 release
- Brand new in v2 with no backwards compatibility or data migration possible
- Currently only supports rule creation using the backoffice
- Rules are implemented for Incentives and Carriers with further rule sets in development