ASNOut (Advanced Ship Notification Out of the warehouse/store) messages are published by a warehouse or stores system as part of its shipping process. These messages are published when a truck/train/… is loaded with items destined for a store or warehouse. The expectation is that the electronic ASNOut message will arrive at the store/Retail Warehouse Management System (RWMS) or the merchandizing system before the shipment physically arrives at the store/warehouse. An ASNOut Rib Message node is specific to a single source/destination combination.
For the destination store or warehouse, the logic to process these incoming messages is already in place for the ASNIn (Advanced Ship Notification Into a warehouse/store). Hence, this TAFR has the purpose to transform the ASNOut message into an ASNIn message and route the output message to the correct warehouse instance or store inventory system.
Other interested parties to the ASNOut messages, such as a merchandizing system, must subscribe to the original etASNOut topic as a separate subscriber. This TAFR is only concerned with transforming and routing on behalf of a store or warehouse system.
In RMS, on-line shipping and receiving functionality allows clients to setup their system such that shipping and receiving can be done within RMS if a separate store or warehouse system is not used. Shipments created within RMS will be published out as ASNOut messages.
In RMS, shipments can also be created for wholesale/franchise returns. These wholesale franchise returns are essentially transfers from wholesale/franchise stores to company stores/warehouses. For SIM or RWMS to receive these shipments, they need to have a valid ASN to receive against. This requires RMS to publish shipments created for wholesale/franchise returns.
Input Message Routing Information: The routing information for a message should contain the “from location” and the “to location” specification. If either the “to location” type or the “from location” type is not found in the routing info, then the message payload is searched for the location and location type values for both the “to location” and the “from location”.
The message will be dropped if both the “from location” type is a store and the “to location” type is a s (store) or e (external finisher) or c (customer) and message type is ‘ASNOutCre’.
It is an error for message if “from_phys_loc_type” in routing information is not 'w' or 's' or 'e' or 'v' and “to_phys_loc_type” is not 'w' or 's' or 'e' or ‘c’.
ASNOutTafr_Routing.htm contains consolidated list of ASNOut message flows with their routing info and their destinations. The last flow explains how the TO LOC and FROM LOC is calculated by the RIB in case a message is missing the routing info.
Output Message Topic: Published output messages for the warehouse will be sent to a warehouse specific JMS destination. Published output messages for all stores will all be published to the same JMS destination.
Output Message Routing Information: The following output message routing info records will be added if not present on the input message:
a. facility_type – the facility type. The value used will come from the default facility type found in the configuration.
b. asn_type – a default of “C' will be used.
RibMessage envelope header fields: Outbound messages will have the same values as the input messages for the RIB message envelope tags of : <ribmessageID>, <customFlag>, <customData>, <id>. If one of these input fields is not present, then the output message will also not contain this tag. Nested tags within these fields will also be copied. An input message may contain a null or missing <publishTime>, while the output message may contain a set publishTime. All output message <publishTime> fields must be set to a date/time equal to or after the input publishTime.
Message payload XML schema declaration: The <messageData> or “payload” string will contain a namespace xml schema declaration detailing the URL of a XML schema definition (XSD) file. The directory specification in this URL will reside in the configuration, thus allowing the customer to configure his/her own value. The name of the XSD file specified will be “ASNInDesc.xsd”.
Payload Processing: Capitalization differences of the input message <type> value will be ignored. Input messages having a <type> value of “asnoutcre” will be mapped to an output type of “ASNInCre”. The output payload class type for this set of messages will be the com.retek.payload.ASNInDesc class. The input payload class will be the com.retek.payload.ASNOutDesc class. The table below details the conversion between the ASNOutDesc fields and the ASNInDesc fields. Any ASNOutDesc field not contained in the table will be ignored.
ASNOutDesc field |
ASNInDesc field |
Required for |
Comment |
to_location |
to_location |
Both |
|
from_location |
from_location |
Both |
|
asn_nbr |
asn_nbr |
ASNIn only |
Implementation will assume this value is set on input. |
auto_receive |
auto_receive |
Neither |
|
schedule_nbr |
schedule_nbr |
Neither |
|
asn_type |
asn_type |
ASNIn only |
Implementation will assume this value is set on input. |
container_qty |
container_qty |
ASNIn only |
Implementation will assume this value is set. ASNOutDesc uses integer, ASNInDesc uses String |
bol_nbr |
bol_nbr |
ASNOut only |
|
shipment_date |
shipment_date |
ASNIn only |
Implementation will assume this value is set. Hour, minute, second are optional |
est_arr_date |
est_arr_date |
Neither |
Hour, minute, second are optional |
ship_address_1 |
ship_address_1 |
Neither |
|
ship_address_2 |
ShipAddress2 |
Neither |
|
ship_address_3 |
ship_address_3 |
Neither |
|
ship_address_4 |
ship_address_4 |
Neither |
|
ship_address_5 |
ship_address_5 |
Neither |
|
ship_city |
ship_city |
Neither |
|
ship_state |
ship_state |
Neither |
|
ship_zip |
ship_zip |
Neither |
|
ship_country_id |
ship_country_id |
Neither |
|
trailer_nbr |
trailer_nbr |
ASNOut only |
|
seal_nbr |
seal_nbr |
Neither |
|
carrier_code |
carrier_code |
ASNOut only |
|
comments |
comments |
Neither |
|
|
vendor_nbr |
ASNIn only |
vendor_nbr does not exist in ASNOutDesc. However, since it is required, the TAFR will copy an empty string to this field. |
ASNOutDesc records contain zero or more ASNOutDistro elements. The ASNOutDistro elements will be copied to ASNInPO elements. Any ASNOutDistro field not included in the table below will be ignored. On input, ASNOutDistro records are included in an array of <ASNOutDistro> elements. On output, ASNInPO records are held in an array of
< ASNInPO > elements.
ASNOutDistro field |
ASNInPO field |
Required for |
Comment |
distro_nbr |
po_nbr |
Both |
|
distro_doc_type |
doc_type |
Both |
|
comments |
comments |
Neither |
|
ASNOutDistro elements contain 1 or more ASNOutCtn (ASNOut container) elements. ASNOutCtn elements are copied to ASNInCtn elements contained in an ASNInPO element according to the table below. Any ASNOutCtn field not included in the table below will be ignored.
ASNOutCtn field |
ASNInCtn field |
Required |
Comment |
final_location |
final_location |
ASNOut only |
Also copied to ASNInItem if not found in ASNOutItem. |
container_id |
container_id |
Both |
|
container_weight |
container_weight |
Neither |
|
container_length |
container_length |
Neither |
|
container_width |
container_width |
Neither |
|
container_height |
container_height |
Neither |
|
container_cube |
container_cube |
Neither |
|
expedite_flag |
expedite_flag |
Neither |
|
in_store_date |
in_store_date |
Neither |
|
rma_nbr |
rma_nbr |
Neither |
|
tracking_nbr |
tracking_nbr |
Neither |
|
freight_charge |
freight_charge |
Neither |
|
comments |
comments |
Neither |
|
ASNOutCtn elements contain 1 or more ASNOutItem elements. ASNOutCtn elements are copied to ASNInItem elements contained in an ASNInPO element according to the table below. An ASNInPO record contains both the ASNInCtn and the ASNInItem element arrays for a specific purchase order. Any ASNOutItem field not included in the table below will be ignored.
ASNOutItem field |
ASNInItem field |
Required |
Comment |
item_id |
item_id |
Both |
|
unit_qty |
unit_qty |
Both |
|
priority_level |
priority_level |
Neither |
ASNOutItem uses integer, ASNInItem uses string |
order_line_nbr |
order_line_nbr |
Neither |
|
lot_nbr |
lot_nbr |
ASNInItem only |
Implementation will assume lot_nbr set on input |
comments |
comments |
Neither |
|
container_qty |
container_qty |
Neither |
ASNOutItem uses integer, ASNInItem uses string |
final_location |
final_location |
ASNInItem |
If final_location is not set in ASNOutItem, use from ASNOutCtn. |
|
distro_nbr |
ASNInItem |
Use from ASNOutCtn. |
|
distro_doc_type |
ASNInItem |
Use from ASNOutCtn. |