Skip to main content

v2 - Release Notes

The release notes for updates to v2 of the Propeller Platform.

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
  • Email
  • 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

Carrier

The carrier service provides the ability to set up delivery and fulfillment options for customers purchasing through the platform.

Combined with the Warehouse service, the carrier information can be setup as simply or complex as required. It’s connected to the rule builder service allowing for a dynamic enabling of carriers based on the contents of the basket or profile of the user.

Key Carrier changes in the v2 release

  • Dynamic visibility provided by the rule builder

Favorites

The favorites service provides the functionality to connect a list of products with a user.

While a user can have only 1 default favorites list, it’s possible to create multiple lists for a single user, allowing them to crate and curate lists for different purposes.

Favorites lists can also be created for companies, allowing all contacts within that company to share the same lists.

Key Favorites changes in the v2 release

  • While the feature is available in v1, it is not compatible with the previous backoffice UI.

Orderlist

Orderlists provide the ability to create custom product sets for individual companies and users. The two types of orderlist allow this to be setup according to the type of catalog required. A positive orderlist results in only those products included being visible to the user, where a negative orderlist gives the user access to the entire catalog but excludes the products specified.

Key Orderlist changes in the v2 release

  • This service is present in v1 without a backoffice interface.
  • Replaces previous customer specific catalog functionality.
  • The ability to assign orderlists by rules will be added in the future.

Order Status

The order status service manages the flow of statuses that an order goes through starting at requesting a quotation through to fulfillment and archival.

This service ensures that the flow can be customized to the setup of the webshop.

There are order statuses and order status sets - the sets are mapped to the tabs in the backoffice UI to group similar statuses together.

Additionally, each status has a number of settings that refer to the orders with the status:

  • Default
    • Default statuses are provided by Propeller and cannot be modified
  • Public
    • Orders that are not public cannot be viewed by the associated customer. This is typically used for draft orders that have not yet been finalized.
  • Editable
    • This denotes if the order can be modified.
  • Deletable
    • This denotes if the order can be deleted. Non-deletable orders are usually required for financial record-keeping purposes.
  • Exportable
    • Typically exportable orders are set to allow an integration (e.g. with an ERP) to only pick up relevant orders.
  • Confirmable
    • The confirmation process for an order normally occurs before the order is sent out for fulfillment, so only placed (and paid) orders are typically set to confirmable.
  • Archivable
    • Archivable orders are removed from the active screens whilst not being removed from the database. It’s normal to only allow fully completed and fulfilled orders to be archived.

Key Order Status changes in the v2 release

  • This new service exposes this functionality within the new backoffice and allows the statuses to be maintained by the webshop admin.

Pay Method

The pay method service gives the high level information about different payment methods that can be used in the webshop. This includes online as well as offline payments.

While Propeller itself doesn’t handle the front end payment process, the payment methods are required to be present to provide the options at the checkout and include this in the order details.

Key Pay Method changes in the v2 release

  • Completely new service with this v2 release.
  • Replaces the current setup which is based on standard user attributes.

Price

The new price service replaces the existing v1 implementation with a streamlined and optimized set of functionality. The price service takes care of all pricing information on products and includes the data models for default, bulk and cost prices all mapping to the same unified structure.

All prices are applied through price sheets that contain a set of products and their associated net or modified pricing data. These prices can be assigned to users through a standard id pairing, or can be dynamically applied using the rule builder.

Key Price changes in the v2 release

  • All customer specific prices now need to be applied with price sheets.
  • There is no data migration for v2, so pricing details need to be fully created.
  • As of the current release, the backoffice UI is still in development however the data models for prices are already available.

User Roles

The new user roles provide the access rights for the underlying services in the platform. There are a number of available roles that span the platform, dividing the functionality into suitable pieces that are frequently associated together.

When assigning a role to a user, it’s possible to give a access level from:

  • Viewer
  • Editor
  • Owner

Viewers have only read only data access, while the owner has full access. The editor has some write capabilities but it’s limited.

With this change we’re also pulling the internal users out of the webshop user set removing any potential confusion with internal and external user credentials.

Key User Roles changes in the v2 release

  • This feature completely replaces the existing user permissions and access implementations.
  • We’re initially focusing on the Viewer and Owner roles with the Editor role being developed over time.

ValueSet

The value-set service provides management of sets of data. The platform is delivered with a standard list of system value-sets that cover a large number of common functionalities such as country lists, currencies, character sets and date formats.

The service additionally supports custom value-sets that can be created, modified and maintained per environment for any use case where a specific list or dropdown needs to be populated with a curated list of data.

Key ValueSet changes in the v2 release

  • Introduction of non-modifiable system value-sets means if a non-standard list is required, these will need to be created as a custom value-set alongside the system.

Lots of changes between v1 and v2

Cart

The cart service manages the shopping cart for users in the webshop. The service uses the order helper that calculates the accurate pricing and availability of all products and ensures that any incentive rules are applied realtime.

Key Cart changes in the v2 release

  • Due to the new rules engine, the cart service has been significantly modified to work with the new manner of calculating product carts and orders.
  • In this process, the relevant order fields have been standardized to meet the current platform requirements such as capitalization.

Crossupsell

Manages the related product relationships that are frequently used to up-sell in the customer journeys.

These exist as a sub-object on a product and can be populated with a number of different relationships.

There’s a type of crossupsell which is one of:

  • ACCESSORIES
  • ALTERNATIVES
  • OPTIONS
  • PARTS
  • RELATED

In addition, the service supports a custom sub-type that can be used to create groups within these types supporting incredibly flexible implementation patterns.

Key Crossupsell changes in the v2 release

  • Introduction of subtype support in both the API as well as the backoffice UI

Order & Order helper

The order service processes incoming quotations and orders. Utilizing the rule builder as part of the order helper, the order service calculates the correct product values to ensure that orders are placed and processed correctly.

Key Order changes in the v2 release

  • Due to the new rules engine, the order service has been significantly modified to work with the new manner of calculating orders.
  • In this process, the relevant order fields have been standardized to meet the current platform requirements such as capitalization.

The product search service provides the extensive search functionality for products in both the webshop as well as the backoffice. Based on a scalable search index, the service takes the plethora of product data and attributes to power searches across even the largest of product catalogs.

Key Product Search changes in the v2 release

  • Most of the changes are to bring it inline with the updates to the product and catalog services.
  • No major changes to functionality with this release.

Surcharges

The surcharges service provides the ability to add a standardized fee to any product purchase. This is applied in the order and is most frequently used for deposits on recyclable products, but has many other potential use cases.

Key Surcharges changes in the v2 release

  • The service is in v2 fully supported by the backoffice UI.

Tax

The tax service adds VAT (or equivalent sales tax) to purchases made through the webshop. With the ability to define tax on multiple levels for each supported country, the tax service allows for the webshop to always charge the correct tax values.

There is additionally ICP support for EU countries that allows non-taxable purchases to take place where applicable.

Key Tax changes in the v2 release

  • The service is in v2 fully supported by the backoffice UI.
  • The backoffice currently displays the short-code entries for tax codes that will be modified with the descriptive labels.

User Management

The user service manages all webshop users (and no longer manages the internal backoffice users). These users are contained within a structure of folders and are one of:

  • Companies
  • Contacts
  • Customers

Companies being entities that hold information such as payment methods, addresses and attributes, but do not have login information. Contacts are the users (people) within a company that can act on its behalf.

Customers are webshop users outside of a company and are typically used for B2C relationships.

Key User Management changes in the v2 release

  • The service is in v2 fully supported by the backoffice UI.
  • Backoffice / Admin users are no longer managed by this service.

Warehouse

The warehouse service provides a database of physical locations. This is frequently used for delivery and pickup locations that can be assigned opening hours and pickup conditions.

When combined with the carrier service and rule builder, this can provide an incredibly flexible shopping experience for end users.

Key Warehouse changes in the v2 release

  • The service is in v2 fully supported by the backoffice UI.

Only minor or no changes between v1 and v2

Address

The address service stores all address information for users, orders and warehouses.

Category

The category service contains the hierarchy of products in the catalog. Organized in a “tree structure”, products can be grouped in logical structures that are exposed in the webshop.

Currently we only support a single category in the platform, but this is planned to be superseded by a taxonomy service later in 2024 providing functionality to have multiple structures that can represent the products from their original source or for representation in different storefronts.

Checkout

Managing the checkout process, this service ensures the right data is collected and available to correctly process a new order.

Email

The email service sends out system emails for the platform. This is only a few currently supported mails including the registration and order confirmation emails.

External Reference

This service provides the ability to add a reference identifier to an object where the identifier is sourced from an external platform or application.

Inventory

The service that tracks stock volumes for products.

Media

The service that manages all media data including images and documents. While videos are also part of this service data model, the service does not host videos which need to be externally hosted and connected via a public URL.

Product Bundle

This service provides a manner to sell a group of products with the ability to add a discount to the purchase price of all the products together.

Version 2.4 - 26th March - preliminary

  • This is a minor release without any breaking changes
  • Expected downtime: none
  • Expected impact: Low but a lot of services will be deployed.

Bug Fixes

Fixed REST Search endpoints

We made updates to the Orderlist, ValueSet and PayMethod services to fix issues being experienced with the REST search endpoints preventing the correct data from always being returned.

During this change we also corrected the endpoints to PATCH from PUT to bring this inline with our other services.

Fixed calls to other services

We made a series of fixes to the Carrier and Order services to address some issues we were seeing with cross service queries and mutations.

Fixed partial update mutations

The partial update mutation problems being experienced on the Warehouse, Media and Product Bundle services has been resolved.

Authorization and User Management fixes

We've made a few changes across services to resolve inconsistencies. This includes:

  • Fixing sorting and roles on the user management service
  • Fixed required roles on queries for ProductSearch
  • Added auth guards to the Inventory service

Version 2.3 - 27th February (Preliminary Release Notification)

This is a minor release without any breaking changes.

Sort Order Fixes

We've made a series of updates regarding sort order validation. These mostly address some field type inconsistencies between services and introduce valid sorting to support our new backoffice user interface.

The changes have been rolled out to the following services:

  • PayMethods
  • Orderlists
  • User Management
  • Carriers
  • Categories

Surcharges Service

As a continuation from our previous release, we've added guards to the Surcharges service to bring it in line with the latest standard of our internal services. As before, this shouldn't have any impact on current project, but should you experience any access issues, please let us know.

We've also made a bugfix to this service resolving an issue with the input.type that was previously a string and is now an enum as expected.

Version 2.2 - 20th February 2024

This is a minor release without any breaking changes.

Orderlist & ValueSet Services

Added REST Endpoints to these services to accompany the GraphQL endpoints released last week.

These endpoints should be functional but are not yet fully documented, which will be added soon. The equivalent fields are part of the GraphQL documentation, but if you have any further questions, please reach out on our partner discord.

Carrier, Shop and Warehouse Services

We have enabled the authorization guards on these services to bring them into line with current platform requirements.

The authorization guards prevent unauthorized access to services by applying the available permissions from the API or user roles. If you experience any issues with accessing these services, please reach out to us.

Spare Parts Service

The SpareParts service was not updated this release after some minor issues were noticed during testing. This change will be queued for the next release

Version 2.1 - 12th February 2024

Paymethod Service

We've released the first version of the paymethod service that supports storing and managing different payment methods.

Gateway Service

Deployed the OrderStatus service to the full pipeline.

Warehouse Service

Made the opening and closing time details for Warehouses nullable to allow removing these details from an entry.

ValueSet Service

Fixed a few minor bugs related to ValueSetItem options and field types.

Orderlist Service

Finalized implementation by including Orderlist details in ProductSearch and UserManagement features.

Category Service

We're replaced the Sort Order enum with a common entry from the ValueSet Service.