Overview
The purpose of this development is to offer a more flexible, streamlined front end to CERMs powerful label MIS. The Infigo platform offers the ability to provide a fully branded and customisable website experience, combining this with its powerful and flexible editors and the ability for customers to make transactions and take payment upfront for all orders that are placed. The solution will also offer the ability to quickly view and re-order existing estimates and products available to the customer in CERM and also browse a catalogue of estimates that are not yet available to that customer.
Key Integration Features
- Supporting retrieving an estimate from CERM, displaying the price and displaying additional information returned in the estimate:
- Roll diameter
- Labels per box
- Creating a product off an existing CERM estimate
- Placing an order in CERM
- Re-ordering an existing CERM product
- Syncing Customers from CERM to Infigo Departments
- Syncing Contacts from CERM to Infigo Customers
- Storing payment methods against departments
- We will map from CERM the payment manner to a department in Infigo. Then the department in Infigo (functionality that already exists) can restrict the payment methods available to all users within that department during checkout
- View all CERM Estimates, Products, Order History in Infigo My Account pages
- Displaying pricing by multiple units (not single aka Price per 1000)
- Cache estimates to improve performance
- Meaning we will not have to make multiple, duplicate requests to CERM in a short period of time – instead we will store the results and query that instead
- The ability to place an order containing variable products (should have artwork files attached) but with no artwork/job
- Allow for the artwork files to be uploaded directly from My Account should the status require it
- Allow for Multipart upload product to accept different file types (currently just PDFs)
- Sync customer addresses from CERM
Customers
In CERM, everything revolves around a customer. An estimate (calculation), a product, orders and jobs all must link back to a customer that exists in CERM. Therefore, it is important how we manage that link between a customer in Infigo and a customer in CERM.
Customer Sync
When the CERM plugin is configured and activated on an Infigo storefront we will run a background task that will create all the relevant departments in Infigo per CERM customer. This will continue to run in the background as long as it is active so that the list of available departments in Infigo matches the customers that exist in CERM.
Registration
When registration is allowed on a storefront we will try to handle the process as smoothly as possible for the two different scenarios that we envisage:
- New customers – are not part of a company that has previously ordered with BLP
- New customers of an existing company that has ordered previously with BLP
In both scenarios we will present, as part of the registration form, the option for the customer to enter in a code representing their company (e.g. cost centre, can be controlled by BLP). We will then do a look up to see if that code exists or not.
Scenario 1:
Customers will be allowed to register freely and a customer/contact will be created dynamically. Limiting as many blockers to them placing an order as possible.
Customer enters the site, adds items to their basket and attempts to checkout
They are prompted to login or create an account
They complete the registration form
As part of the form we request an optional code. They would not enter anything/confirm they do not have a code.
Then confirm their registration
In the background Infigo will create the customer in Infigo, Create the Department in Infigo, add that customer to the newly created department, then make a request to CERM to create the customer in CERM and the contact in CERM. We will then map the department in Infigo to the newly created customer code in CERM, and map the customer in infigo to the newly created contact in CERM.
Scenario 2:
Existing customers, but new contacts registering will be put on hold and validated before they can place an order to ensure they are gaining access to the correct CERM customer information.
Customer enters the site, adds items to their basket and attempts to checkout
They are prompted to login or create an account
They complete the registration form
As part of the form we request their unique code
They enter in their code and we check if it exists. If we cannot find it we will let them know and they will want to modify it and try again. If it matches we will show this and they can continue.
The confirm their registration
Their account will be put on hold and they will not be able to place an order until their account is approved.
An email is sent to an admin at BLP to review the registration request, ensure they should be part of that CERM customer and approve. If they have entered it incorrectly then at this point the admin can change the mapping in Infigo and move the customer to the correct department.
NOTE:
Infigo : Department = CERM : Customer
Infigo: Customer = CERM : Contact
Login
Each time a customer logs in we will make a request to CERM to fetch all the addresses for that customer and either create new ones or update existing ones against the customer in Infigo. This will allow them, when it comes to placing an order in Infigo to be able to select from their latest shipping and billing addresses.
NOTE: If the CERM API is down, or there is a connectivity issue, we will not allow customers to register or login
Customer Payment Terms
As part of the department sync we will also fetch from CERM the payment terms for each customer. We will introduce a mapping so that the payment term reference in CERM can be mapped against a payment method configured in Infigo. These restrictions will then be applied at a department level in Infigo and all customers added to that department will adopt those payment restrictions.
Estimates
Also known as Calculations, Estimates in CERM are the basis for all jobs. It is essentially what contains all the specifications for producing a specific job.
NOTE: The integration in phase 1 will not create estimates in CERM from Infigo. All estimates need to exist in CERM prior for Infigo to then reference.
Global Customer Estimates
In order to support the concept of having users navigating the Infigo storefront without having created an account yet or logging in, BLP must create a customer in CERM that all of the predefined calculations are assigned to. This global customer ID will be a configurable setting within our CERM plugin.
When a guest user (someone not yet logged in on Infigo) adds a product to the basket which contains an estimate ID assigned to the global customer, and then they log in or create an account we will then clone that estimate that they had in their basket to create a new estimate that is assigned to their CERM customer using a new API method CERM have created for us.
If a customer is already logged in and they are viewing a product page we will automatically clone the estimate and provide back the price based on the estimate being created against their CERM customer (so will have accurate pricing for them).
Mapping Simple products
In Infigo we have the concept of mapping a product to an external reference. This external reference should contain the CERM calculation ID. When this mapping is setup when a customer lands on the product page, enters their quantity and expects a price to be returned we will send a request for the mapped calculation ID to CERM and display the price that is returned.
NOTE: This product build, and product mapping process is a manual one although there are tools available in Infigo to bulk upload this information (excluding any variable product data for the personalisation process)
Mapping Product Combinations
In Infigo we also have the concept of creating ‘Attribute Combinations’ which allows you to create options for the customer to select from and these can be anything from ‘substrate’, ‘size’, ‘shape’, ‘colours’ etc. And then create a combination of these selections and have this combination be mapped to a CERM calculation ID.
Scenario:
Product A has two attributes with two values each
Substrate: 300gsm, 350gsm
Size: Small, Medium, Large
Size | Substrate | Calculation ID |
Small | 300gsm | s-300-1 |
Small | 350gsm | s-350-1 |
Medium | 300gsm | m-300-1 |
If a customer was to select small and 300gsm then the calculation price returned from CERM would be for s-300-1.
NOTE: The process of creating these attribute combinations and mapping them to calculation IDs in Infigo is a manual process. There are tools available to upload a CSV file of attribute combinations per product.
Caching Estimates
We will build into the integration a short-term estimate cache that we will populate with every response that CERM returns to us for a calculation. We will store this data for a specified amount of time before automatically removing it. This means that when an estimate is requested by a customer (I.e. they want to see a price) we will first check our cache to see if the same combination exists (customer code, calculation id etc.) and if it does we will not make a request to CERM but instead display the details that we have stored locally. This helps reduce the amount of external calls we make and improves performance.
Viewing and ordering existing CERM estimates
It will be possible with My Account for each logged in customer in Infigo to view ALL estimates that exist against their mapped CERM customer
Estimates displayed in this view will be filtered by those flagged as ‘AllowInternet’ and the table displaying the estimates will contain the following information:
- Cerm ID
- Reference ID
- Project ID
- Description
- Size
- Substrate
- # colors
- Winding
- Packing
- Products
- Extra
- If estimate PDF is available, allow this to be downloaded
- Ability to calculate (simulate) price based on quantities entered
- This will open a new popup to show details
- Allow to send email to a linked account manager (will just be a ‘mailto’ link)
- Ability to delete estimate (via confirmation popup)
- Allow to navigate to the Order History -> order that contains this estimate
- Ability to use/order the estimate
The integration supports the ability to view and order from Estimates that were both previously created from an order that originated in Infigo, and ones created directly in CERM (outside of Infigo).
For those Estimates created directly in CERM, meaning we potentially don’t have an Infigo product setup with a CERM estimate mapped to it, we will use a global Upload Product (Multipart). This same product will be used for every order from an estimate that hasn’t originated in Infigo and will not have a fixed estimate mapping applied to it but instead the system will automatically and dynamically set it based on the estimate they are ordering from.
Products
As above, an Estimate is the basis for a job, but you cannot order an estimate. Instead we take an estimate and from it we create a product, and the product is what gets ordered. A product in CERM contains or will contain the PDF artwork file and is what will ultimately get produced at the end once an order is placed.
There are a number of different workflows for ordering a CERM Product that we support in our Connect: CERM plugin and below we go into them in more detail.
Ordering a 'new' Product
The traditional e-commerce route for ordering a product. Customers will browse the catalogue, to find the Infigo product they wish to order. On the product landing page they will make their attribute selections and the estimate will be returned from CERM. Happy with the price the customer will then be offered the ability to upload their artwork and add it to their cart. If they choose not to upload their artwork prior to placing the order they will have the ability to do this afterthefact from 'My Account'.
The request to create a product in CERM will be made as soon as an order is placed in Infigo – regardless of if the order is paid or not, or if the artwork file has been provided.
We will call the Create Products API endpoint and will do this for each orderline item in Infigo where the Infigo product being ordered contains a mapped estimate Id.
Viewing existing Products
Similar to the above on Viewing Existing Estimates there is also by a 'My Products' view in 'My Account' that will allow a logged in customer to view all of their previously ordered Products.
Each product will have a status so they can see how it is progressing and they will be able to re-order a product, which we go into more detail below.
If they placed an order for a product and didn't upload an artwork file then they will be able to upload it directly from within this view and also if the status shows something like 'failed preflighting' that requires them to upload a new artwork file then they can do this from here too.
Re-Ordering an existing Product (that was previously ordered through Infigo)
This is a simple and common workflow that focuses on making it quick and easy for repeat customers to place orders for repeat Products. From within My Account they can search and view existing Products and when they find the one they are looking for they can simply place an order for it. This will prompt them for a quantity, and then add the item directly to their basket ready for them to checkout.
Re-Ordering an existing Product (that was NOT previously ordered through Infigo)
In this scenario we don’t have an Infigo product that can be added to the shopping cart and ordered because the CERM product they are ordering didn’t' originate in Infigo, therefore we will use an Infigo stock product (inventory item) to support this workflow. The experience to the end user will be no different to the above but under the hood we are using a generic stock product (as no file upload is required here) that when added to the cart will automatically and dynamically assign it the CERM product id they are re-ordering from.
Orders
As with all of our Connect plugins when the order is placed in Infigo and it meets all the 'criteria' (no jobs awaiting approval, the order is paid for, any outputs have been created etc.) then the order will be placed in CERM.
Capturing additional Order Information
Like in Web4Labels there are options to capture additional Order Information, including:
Order Reference
Order Comments
Delivery Comments
These will all be available through configured Infigo Checkout Attributes. They (despite the name) appear in the shopping cart and can be marked as required so cannot be left blank before proceeding.
The information will then be sent to CERM as part of the order data.
Validation prior to placing an order
Because we cannot control the time from when someone views an estimate, adds it to their basket and places an order it is important that we carry out some validation on the items being ordered prior to pushing the order into CERM.
Therefore before the order is placed we will check to ensure the cloned estimate we created from the global user exists (I.e. that the estimate id that is being ordered exists against the current logged in customer) if it doesn’t as it was removed or doesn’t exist then we will recreate the estimate again.
Creating Orders in CERM
We will create the order in CERM only once the Order is marked as paid in Infigo.
Here is an example of the payload we send CERM to place the order:
[
{ // for each Job orderline which was mapped
"ReferenceAtCustomer": "{{Order reference checkout attribute}}",
"LineComment1": "{{Order comment checkout attribute}}",
"Delivery": {
"Type": "Address",
"Comment": "{{Delivery Comment checkout attribute}}",
"AddressId": "{{Address external Id}}",
"ExpectedDate": "{{Calculated ship date}}"
},
"OrderQuantity": {{Quantity}}, // orderline quantity
"ProductId": "{{cloned_product_id}}", // clonned product Id
"UnitPrice": {{Unit price}}, // unit price for Orderline
"Prepayment": {
"TransactionId": "4ed94c9d-e785-4071-a0f4-d9655c998bc9",
"TransactionTime": "2023-07-04T10:25:43.900Z",
"TransactionAmount": “{{Order Total}}”, //Total amount the customer paid
"TransactionMethod": "CreditCard"
}
}
]
Passing Artwork to CERM
Once the order has been placed and the artwork file has either been uploaded by the customer or the output has been created by Infigo we will call the /products/{productID}/artwork API endpoint.
We will then update the job status in Infigo show that the artwork has either been successfully sent to CERM or failed.
0 Comments