CIMPRESS - Integration
Order Automation 2.0
S.O.P.
Version 3.0
10/18/2024
OBJECTIVE
The following guide is used to understand the inner workings of our Cimpress integration.
DEFINITIONS
CIMPRESS WEB SERVICE = We created and maintain a custom Web Service for Cimpress to POST their orders to us in JSON format. Our “Cimpress Web Service” (referred to as simply Web Service in this document) is always “listening” for a POSTED order, which can happen at any time of day.
EDI INTERCHANGE = We created and maintain our “EDInterchange” system for various automation tasks including Integrated orders. For Cimpress Specifically…
· The “Cimpress-Status” function is scheduled to run the at 1 hour intervals during weekdays to check the Status of orders and to report order status and shipping notifications back to the Cimpress Server.
· The “Cimpress-Orders” function is scheduled to run at 1 hour intervals during weekdays to Upload the orders to Impress.
· The “Cimpress-Invoices” function creates invoice records that are ultimately grouped for Bi-Montly invoice report. Runs daily.
· The “Cimpress-InvoiceReport” groups and sends the invoice report. Runs Bi-Monthly.
DATABASE = Database tables for Cimpress exist in the EDI-Orders database.
· The “CimpressOrderHeader” table contains order header level data, like billing, shipping, ship method etc… (referred to as simply OrderHeader in this document)
· The “CimpressOrderDetails table contains the Line Items, including SKU, Decoration, quantity etc…
· The “CimpressShipped” table contains records of which shipped order items have been previously sent to Cimpress as FULFILLED.
· The “CimpressInvoice” table contains invoice records for every item, for every order that has been FULFILLED.
INITIAL STATUS - RECEIVED
When the Web Service Receives an order POST message, the following steps are taken in order…
1. Authorize the message sender using OAuth and log the authorization result.
2. Check for a valid JSON message.
- If valid…
- Log the JSON.
- Return an HTTP 200 message.
- If not valid…
- Return an HTTP error message to
their server.
- Log the Error.
- Do NOT proceed.
3. Write the Order to the OrderHeader Table with a Status of “RECEIVED”.
4. Write the Order items to the OrderDetails Table without Status.
RECEIVED > ACCEPTED
When the Cimpress-Status function Runs, it finds any OrderHeader Record with a status of “RECEIVED” and performs the following tasks...
1. Check to make sure the order is
shipping to the United States.
- If US, continue.
- If non-US…
- Mark OrderHeader Status = “REJECTED”.
- Mark OrderHeader Reason = “Delivery_Address_Invalid”
- Send “Rejected” message to Cimpress
server for all items.
- Do NOT continue.
2. Check and download the necessary Art
Files to produce the Garment Designs.
- If JSON and Art are OK, continue
- If JSON or Art Problem…
- Mark OrderHeader Status = “REJECTED”.
- Mark OrderHeader Reason = “Art_Problem”.
- Send “Rejected” message to Cimpress
server for all items.
- Do NOT continue.
3. Check for valid SKUs and Inventory.
- If ALL SKUs Valid and In-Stock…
- Mark OrderHeader Status =
“ACCEPTED”.
- Mark All OrderDetail Statuses =
“ACCEPTED”.
- Send “ProductionAccepted” message to
Cimpress for all items.
- If ALL SKUs Not Valid or Out-Of-Stock…
- OrderHeader Status = “REJECTED”.
- Mark All OrderDetail Statuses =
“REJECTED”.
- Reason Out_Of-Stock.
- Send “Rejected” message to Cimpress
for all items.
- Do Not continue.
- If SOME SKUs Not Valid or No-Stock… (Partial Accept/Reject)
- Mark OrderHeader Status =
“ACCEPTED”.
- Mark OK OrderDetail Statuses = “ACCEPTED”.
- Mark Non-OK OrderDetail Statuses =
“REJECTED”.
- Send “ProductionAccepted” message
to Cimpress for OK items.
- Send “Rejected” message to Cimpress
for Non-OK items.
ACCEPTED > UPLOADED
When the Cimpress-Status function Runs, it finds any OrderHeader Record with a status of “ACCEPTED” and performs the following tasks...
1. Creates Embroidery and/or ScreenPrint and/or DTF decoration(s) for the order items.
2. Creates Garment Design(s) for the order items.
3. Attempts Upload.
- If Upload Successful…
- Mark OrderHeader Status = “UPLOADED”.
- If Upload Fails…
- Mark OrderHeader Status = “ERROR”.
- Mark OrderHeader Reason = Exception
Message.
UPLOADED > WIP
When the Cimpress-Status function Runs, it finds any OrderHeader Record with a status of “UPLOADED” and performs the following tasks...
1. Check the status of the order in
Impress.
- If Order is released but is not shipped, not shorted, not Order Complete…
- Mark OrderHeader Status = “WIP”.
- Mark OrderDetail Statuses that are
not “REJECTED” = “WIP”.
UPLOADED > CANCELLED
When the Cimpress-Status function Runs, it finds any OrderHeader Record with a status of “UPLOADED”, and performs the following tasks...
1. Check the status or the order in
Impress.
- If Order “Shorted”…
- Mark OrderHeader Status =
“CANCELLED”
- Marks ALL OrderDetail Statuses = “CANCELLED”.
- Send “Cancelled” message to
Cimpress for all items.
UPLOADED > PARTSHIP
When the Cimpress-Status function Runs, it finds any OrderHeader Record with a status of “UPLOADED”, ”WIP” or “PARTSHIP” and performs the following tasks...
Check the
status or the order in Impress.
- If Order is “Shipped Partial”
- Get Shipping Records
- Check to see if new shipping
records exist that were not previously sent.
- Send “Fulfilled” message to
Cimpress for any new shipping Records
- Mark Shipped OrderDetail Statuses = “SHIPPED”.
-
If all Items Not Shipped… Mark
OrderHeader Status = “PARTSHIP”.
- If Order “Shorted”…
- Mark OrderHeader Status = “SHIPPED”
- Marks ALL OrderDetail Statuses that
have not shipped = “CANCELLED”.
- Send “Cancelled” message to
Cimpress for non-shipped items.
- If Order is “WIP” Do Not Continue.
UPLOADED > SHIPPED
When the Cimpress-Status function Runs, it finds any OrderHeader Record with a status of “UPLOADED”, ”WIP” or “PARTSHIP” and performs the following tasks...
Check the
status or the order in Impress.
- If Order is “Shipped Complete”…
- Get Shipping Records
- Check to see if new shipping
records exist that were not previously sent.
- Send “Fulfilled” message to
Cimpress for any new shipping Records
- Mark Shipped OrderDetail Statuses = “SHIPPED”.
-
If all Items Shipped… Mark OrderHeader Status = “SHIPPED”.
- If Order is “WIP” Do Not Continue.
ORDER CANCELLATIONS
If Cimpress reached out to Cancel an Order, or there are Damaged pieces, the associated Departments outlined below are responsible to perform the following tasks under the following conditions...
- UPLOADED
– NO SANMAR PURCHASE, NOT RELEASED…
- CSR Shorts the order in Impress
- System sets OrderHeader Status =
“CANCELLED”
- System marks ALL OrderDetail
Statuses = “REJECTED”.
- System sends “Reject” message to
Cimpress for all items.
- UPLOADED – SANMAR PURCHASE, NOT RELEASED…
- CSR Shorts the order in Impress
- System sets OrderHeader Status =
“CANCELLED”
- System marks ALL OrderDetail
Statuses = “REJECTED”.
- System sends “Reject” message to
Cimpress for all items.
- ???
Inventory team does what?
- WIP – NO SANMAR PURCHASE…
- CSR sends message to Billing Dept
to Invoice and Short the order.
- System sets OrderHeader Status =
“CANCELLED”
- System marks ALL OrderDetail
Statuses = “CANCELLED”.
- System sends “Cancelled” message to
Cimpress for all items.
- ???
Inventory team does what?
- ??? Production team does what?
- WIP – DECORATED - NOT SHIPPED…
- CSR sends message to Billing Dept
to Invoice and Short the order.
- System sets OrderHeader Status =
“CANCELLED”
- System marks ALL OrderDetail
Statuses = “CANCELLED”.
- System sends “Reject” message to
Cimpress for all items.
- ???
Inventory team does what?
- ??? Production team does what?
- ??? Billing Team does what?
- WIP -
DECORATED - PARTIALLY SHIPPED…
- CSR sends message to Billing Dept
to Invoice and Short the order.
- System sets OrderHeader Status =
“CANCELLED”
- System marks ALL OrderDetail
Statuses = “CANCELLED”.
- System sends “Cancelled” message to
Cimpress for Un-Shipped items.
- WIP - DECORATED - FULLY SHIPPED…
- CSR sends message to Billing Dept
to Invoice and Short the order.
- System sets OrderHeader Status =
“CANCELLED”
- System marks ALL OrderDetail
Statuses = “CANCELLED”.
- System sends “Cancelled” message to
Cimpress for ALL items.
- WIP - DECORATED – DAMAGED – NOT SHIPPED…
- CSR sends message to Billing Dept
to Invoice and Short the order.
- System sets OrderHeader Status =
“CANCELLED”
- System marks ALL OrderDetail
Statuses = “CANCELLED”.
- System sends “Cancelled” message to
Cimpress for ALL items.
- WIP - DECORATED – DAMAGED – PARTIALLY SHIPPED…
- CSR sends message to Billing Dept
to Invoice and Short the order.
- System sets OrderHeader Status =
“CANCELLED”
- System marks ALL OrderDetail
Statuses = “CANCELLED”.
- System sends “Cancelled” message to
Cimpress for Un-Shipped items.