IBM Sterling Commerce interview question and answer related to OMS implementation. . .
This page lists down the common interview question and answers on OMS
implementation by IBM Sterling Commerce. It has question related to
basic customization and advanced business requirment implementation.
Main objective of this page is to guide you to answer interview
questions and provide detail usnderstanding on IBM Sterling OMS
implementation. Here I documented question and answer from my OMS
implementation experience. Many question asked from the project where
you have worked on. So go-through your project implementation documents
and try to give a thought why those design and implementation decision
were taken. You need to read the api documentation and IBM Knowledge
centre documentation.
We do provide training on the following
courses also:
- IBM Sterling Commerce Foundation
- IBM Sterling Commerce StoreUI and Orderhub
customization
- Java / J2EE
- Springboot and REST API and Microservices
- Job Support for Java/J2EE and Sterling Commerce
- Final Year Projects for Computer Science Students
Questions and answers are multiple pages. Please use "Previous"
and "Next" link to navigate to next and previous pages.
Support
Whatsapp No. 7439236696 for any question / suggestion |
Questions and Answers:
1).
What is DB customization or DB Extension.?
To store some cutom values (spectic to customer need), we can add column
in the product table or add new table altogether. There is a speciic way
to do database extenstion. We need to follow the product guide line and
to the DB extension.
- Adding column to the product table: To store some
custom values we add column to product table.
- Adding custom table : We can add a independent table in
database throung extension.
- Adding Hang-off table: We can add a database table as a
child table of any product table. In this case child table is called
hang-off table. Here also all product table does not support hang-off
table. Check product documentation before adding it
Note:
We can not add column any product table. All the product table do not
support extension. We need to check product documentation whether table
is extensionable or not (refer Entity Relationship Diagram (ERD) located
in the install_dir/xapidocs/ERD directory.).
Now question is when we need to add column in the existing
product table? when we should create a new independent table? When we
should create a hang-off table.
- when you need to store few custom values and mapping of your
custom values with product entity is 1:1, you should add column to the
related existing product product table
Examples:
- You need to store a set of values which are not directly
related to any of the product entity (e.g. Order, Invoice, Shipment),
you should create a independent table.
Examples:
- You need to store a set of values which are directly related
to your product entity (e.g. Order, Invoice, Shipment), and it hold
1:n relationship with product entity, you should create a Hang-off
table.
Examples:
Advantages Of Hang-off Table:
If we add a table as a hang-off table to any product table, Data can be
retrieved or inserted thrugh product standard api. Even data can be
purged using standard purge agent also.
Steps To Do Database Extension (DB customization):
To do the database customization, we need to make entries in the
extension.xml file. In the xml entires there will be element and couple
of attributes. Read the production document for details and should know
the meaning and use of each atrribute.
High Label Steps are:
- Make entry in extension.xml
- build entity jar
- Do a ear deployment.
Once entity build is done it generates the SQL statements to add column
or create table. You need to take those SQL statements, connect to
databse and execute on the database.
How do you test there extension is successful or not?
- If you are adding column, you can invoke product api and check
it. Example: If you added column in item table, you should invoke get
Item List api and pass your column xml name in the output template
under Extn tag.
- If you are adding custom table, you need to create a service
in Application Manager and invoke that service from api tester
- If you are adding a Hang-Off table, invoke product api with
proper tempalte. Example, if you added hang-off table on order header
table, use get Order List. or create Order api. There is way to pass
the element and column names related to hang-off table in the api
template. Its under Extn tab (For details follow product
documentation)
Subsequent Questions:
- What is Shadow Column? How to define a shadow column and
what's the purpose of shadow column
Note:
To know the answers of the Subsequent questions, you may join
our training courses.
2).
What are the mandatory columns in custom
table or hang-off table?
- Primary Key column: Its data type has to be Key(defined in
data type.xml) OR Any numeric data type
- create time stamp: Its data type has to be TimeStamp(defined
in data type.xml)
- modify time stamp: Its data type has to be TimeStamp(defined
in Data Type.xml)
- create user id: Its data type has to be UserId(defined in data
type.xml)
- modify user id: Its data type has to be UserId(defined in data
type.xml)
Nice to have / should have columns(Optional columns):
A custom or hang-off table can have the following column(Optional):
- create user id: Its data type has to be ProgramID(defined in
data type.xml)
- modify program id: Its data type has to be ProgramID(defined
in data type.xml)
- lock id: Its data type has to be Lock id(defined in data
type.xml)
- modify user id: Its data type has to be UserId(defined in data
type.xml)
3).
What is the use of data type.xml?
data type.xml is a xml file where all the data type defination are
stored. Its a prodcut file and you can view it after installation.
Example: In Extions.xml when we add a custom table we made entry for
serverid column some thing like:
<Attribute ColumnName="serverid" data type="text"
DefaultValue="0" Description="server ID"/>
Here the data type 'text' is defined in data type.xml. 'text' is not a
standard Database (e.g. Oracle) data type. When we do entity jar build,
the data type 'text' is translated actual database data type(Varchar2).
4).
One customer want to disable cache for
common code values? How would you cache common code values
There is a dbclassCache.properties proerty file where all the DB cache
related information is there. There is a property for COMMON CODE tables
to enable cache. Just override that value according to your need in
customer_overrides.properties. set
.enabled=false in customer_overrides.properties
to disable cache for common codes
5). How do you implement subscription order? One
customer sell Magazine on yearly subscription and would like to fufill
their order using Sterling Commerce What would be your design?
There is a document type Master Order document type and process type
master order fulfillment process type in OMS. Master Order can be used
to fulfill the subscription order.
A master order is a document indicating expected recurring sales of
multiple products or same product over a period of time. A master order
is typically created for a customer to purchase a series of products for
shipping at different time with some interval. For master order we can
have seperate financial and fulfillment rule setup similar to sales
order (DocType 0001). As Master order has different document type and
process type, it is having different set of statuses, transaction and
pipelines.
6). What is draft order? Is confirm Draft Order and
create Order same?
Draft order is a Order document with DraftOrderFlag=Y. Draft Order means
order is not confirmed. Its in draft staus which can undergo some
changes before confirming it. There is a transaction to create draft
order (createDraftOrder). It move the order to 1000 status. There is a
another trasaction to confirm the draft order (confirmDraftOrder) and
move it to created status(1100).
CreateOrder is a seperate transaction to create an order (confirm
order). It directly moves to the order to created (status).
confirmDartOrder and createOrder are two different transaction and their
events are also different. One common thing is they both can move order
to created status (1100).
7). What is Legal Entity?
Legal entity usually represent a company's presence in specific country.
If an organization operates in US and UK, there should be two legal
entity. one for US and anoter for UK.
8). What is Key differences between DropShip PO and
Procurement PO And Market Place?
- In Procurement PO, item comes companies warehouse and then
delivered to customer. It's treated as customer sale
- In DropShip PO, item directly delivered to customer address
from manufacturer. It's treated as customer sale
- In MarketPlace order, item directly delivered to customer
address from seller. It's NOT treated as Company sale. Company just
take the commission.
Statuses are different for Procurement PO and
DropShip PO.
9). What is purchase order? How to implement it? I
mean, what are the key configuration required to implement PO
Purchase order is a chained order. When Organization does not have
inventory, they procure it from supplier (vendor) and fulfil the
customer order. There two type of procurement. 1.) Drop-Ship - Vendor
directly deliver the item to customer address. 2.) Wrap n Lable -
Company bring the item to ware house and then ship it to customer
address from warehouse. . Or it could be a situation, Company allowes
vendor to uses company's platform(website) to sell their item (market
place). . Both the cases Purchase Order is created to fulfill the
customer order.
Implemting PO fulfillment in IBM Sterling Commerce is not very easy. You
can follow the below steps to implent PO.
- Process Type Configuration:-
- OrderFulfillment Process Type > Right Click > Details
> Related Entities Tab > 'Allow Chain Order Creation' checkbox
to be checked .
- Enterprise Configuration:-
- Enterprise configuration > Roles and Participation >
Seller Attributes > "Require Chain Orders" checkbox checked.
- Enterprise configuration > Roles and Participation >
Enterprise Attributes > "Suppress Chain Order Creation" checkbox
un-checked.
- Mark the item procurable in SBC or Application Manager. By default items are procurable
- Change the Configuration for ShipNode (e.g.DC) so that it can
procure item from other node.
- To nodes (own network node) must belong to one legal entity
- Mark vendor organization(Enterprise) as separate Legal Entity
.
- Vendor organization(Enterprise) should play the role of Enterprise
and Seller .
- Create Distribution Group and add Stores.
- Add Distribution Group in sourcing rule for your fulfillment
type. You can configure it with default fulfillment type also
In the sourcing template check the checkbox "Procure when not
available"
- Create Procurement Distribution Group and add DC to it.
- Create Procurement sourcing Rule
- Add Procurement Distribution Group in procurement rule for
your fulfillment type.
- Make sure all ShipNode has addresses defined (at least country
and zipcode) in the particpant setup
Once above seting is done. Adjust inventory in vendor DC so that it will
have available quantity to fulfill the order.
Now create an order. Schedule it. Order will move to Awaiting Chain
Order Create status. It means sales order is ready to cut the PO.
Invoke createChainOrder api to create the PO. There is a out of the box
agent also which does the same thing(cut the PO). A sample participant
setup is given blelow to implement PO.
10). What
is Transfer order (Procurement Transfer Order)? How to implement it? I
mean, what are the key configuration required to implement TO
Transfer Order (Procurement Transfer Order or TO in short) is also a
chained order. But it is used to transfer item from one node to another
node(e.g. StoreA to StoreB). Here both the node belongs to same
organization (Both of them share same legal entity).
Example: Store does not have the inventory. It can procure form anoter
store or DC to fufill the customer order. You many have the question in
your mind, why do we need to transfer, instead ship the item from the
node (e.g. DC) where inventory is available.
All the order are not shipto order. There could be pickup order where
customer will come to store to collect their item and customer prefered
to come to his nearby store only. So we need to transfer the item to
customer nearby store to fulfill the customer order. There could be
other constraint also which fource us to do the transfer.
Implemting TO fulfillment in IBM Sterling Commerce is not very easy. You
can follow the below steps to implement Procurement Transfer Order.
- Process Type Configuration:-
- OrderFulfillment Process Type > Right Click > Details
> Related Entities Tab > 'Allow Chain Order Creation' checkbox
to be checked .
- Enterprise Configuration:-
- Enterprise configuration > Roles and Participation >
Seller Attributes > "Require Chain Orders" checkbox checked.
- Enterprise configuration > Roles and Participation >
Enterprise Attributes > "Suppress Chain Order Creation" checkbox
un-checked.
- Mark the item procurable in SBC or Application Manager
- Change the Configuration for ShipNode (e.g.DC) so that it can
procure item from other node.
- All the nodes must belong to same legal entity
- Create Distribution Group and add Stores.
- Add Distribution Group in sourcing rule for your fulfillment
type. You can configure it with default fulfillment type also
In the sourcing template check the checkbox "Procure when not
available"
- Create Procurement Distribution Group and add DC to it.
- Create Procurement sourcing Rule
- Add Procurement Distribution Group in procurement rule for
your fulfillment type.
- Make sure all ShipNode has addresses defined (at least country
and zipcode) in the particpant setup
Once above seting is done. Adjust inventory in DC. Make store inventory
zero so that it procure it from DC to fulfill the order.
Create a sales order (customer order). Schedule it. Procurement Transfer
Order(Transer Order) will be created.
11). Have you used complex query? What is it?
Answer: Normally in the api input xml we will be able to pass one
value. Like in the getOrderList api, we will be able to pass only one
order header key in the imput xml and we will get only details of one
order only. But there are situation we want to pass multiple values for
a attribute in input xml and want to get details of multile records.
Complex Query is a way to pass multiple values for a attribute in the
list api and get the details of multiple records.
Also with complex query we can do like search. Like get all the order
where order number starts with "1"
Note: All the api does not support complex
query. Few api only supports complex query. Some of the complex query
supported APIs are getOrderList, getItemList. Check api documentation to
findout whehter the api supports multi api or not
12). Have you used multi api? What is it
Answer: MultiApi is an api in IBM Sterling Commerce. It has
specifc input an output format like other apis. It is used to invoke
more than one api in one go as a single transaction. If you invoking two
api with multi api and one api fails, other api will also rollbacked
along with failed api.
13). What is event? How it is used
14). What is listener ? How it is used
Listiner is a transaction which listen in other piple line and make the
status change its own pipe line.
Example - Shipment Status Listener. This transaction listen on shipment
pipeline and change the order line status based on shipment status
change.
Same way we use listener to listen to return order pipeline and make the
status change in sales order pipeline based on the return order status
change.
15). How to create a custom service? Please provide
what are the configuration required and what code needs to be written
to implement the service
16). What is User Exit? How it is used
Details of user exit and event are given in other section
17). Difference between user exit and event
Details of user exit and event are given in other section
18). What is agent? How taskbased agent works
19). What
is connector
It is used in pipleline rather its a component used in pipeline to split
the status line into multiple status line. Here input is single status
line but output is multiple status line.
Subsequent Question: Have you seen any connector where input is single
status line and output is also single status line.
Yes. This kind of connector is alos present in some out of the box
pipeline.
In this case what is the use of the connector?
Connector is also used to represnt that its require some manual/user
intervention to do this status chnage.
20). How order status and order line status are
derived?
Status is maintained in rlease level. and store in RELEASE STATUS db
table.
Line staus is dervied from release status depending on how many release
the line has. Line will have two status one is MinStatus (which is the
minum of all the release statuses) and Other is Max status(which is the
maximum of all the release statuses). And status is derived as
"Partially max status"
Order staus is dervied from order line statuses depending on how many
line it has. Line will have two status one is MinStatus (which is the
minum of all the minimum statuses) and Other is Max status(which is the
maximum of all the max line statuses). And Order status is derived as
"Partially max status"
21). What is abstract transaction?
In process types (e.g Reverse Logistics) some transaction are defined as
abstract transaction (e.g. changeOrderStatus). Custom transaction can be
created extending the abstract transaction. Abstract transaction can
have any pickup and drop status
22). What are the payment statues an order can have?
- NA (NOT_APPLICABLE)
- Awaiting Payment Info
- Awaiting Auth
- AUTHORIZED
- FAILED_AUTH
- FAILED_CHARGE
- Paid
- INVOICED
- REQUESTED_CHARGE
- REQUESTED_AUTH
23). Have you done payment processing for any of your
client.? What are the Setup you need to do to enable Payment Processing
Yes.
First of all to do payment processing, please enbale/set following
things.
- At enterprise participant model(Roles & Participant > Seller
Atribute > Payment Processing required ), check the check box Payment
Processing required.
- In Order Fulfillment Process Type details, mark Allow Payment
Processing Checkbox Checked
- In DOM (DOM>Financila) ""User Enterprise (Not Seller of on the
order) do determine the Payment Rule"" checkbox checked.F
Configure Payment Types Which You Need To Support. Some of the
supported payment types are:
- Credit Card
- Debit Card
- Customer Account
- CHECK
- Others
Add Card Types For your Credit Card and Debit Card that you would
support.
- VISA
- MASTER
Create a Payment Rule For Your Enterprise. You can create a
payment rule and mark it default for your enterprise. In the payment
Rule metntion the following.
- Settlement Required
- Authorization Required
- Collect Externaly Through Account
- Ignore Payment Status For Purge
- Authorize before scheduling and Re-authorize on expriations
What do you understand by Payment Processing?
If you have above setup and configuration, you will be able to do
payment processing for your order. Here Payment Processing means mainly
charging the customer for your order and get the money to your company
bank account from customer account.
If we enable payment processing for our order, Then when we create the
order, One record/entry get created in CHARGE TRANSACTION table. with
status "CREATED".
Authorization (If Autorization Is Requried is checked):
Payment Collection Agent (requestCollection Api) process the record and
create charge request (make entry to CHARGE TRANSACTION TABLE).
Payment Exectution agent (invokes API executeCollection) runs and
process the charge Request records. And from the UE (e.g
CollectionCreditCardUE) we connect the payment gateway (Provided By
Bank) send the request to authorize / block the order amount. Response
is recorded in CHARGE TRANACTION table.
Then again Payment Collection Agent (requestCollection Api) process the
records to update the payment status on the order. Its like
requestCollection(createCharge records)>exectuteCollection(Process
Charge Record and connect Bank Gateway and get the
response)>requestColletion(Update the payment status on the order).
Settlement (If Settlement Is Requried is checked):
If the payment rule applicable for the order requires both authorization
and settlement, the settlement requests are created only against
existing, non-expired authorizations.
Payment Collection Agent (requestCollection Api) process the record and
create Settlement request (make entry to TRANSACTION TABLE).
user exits (e.g. CollectionCreditCardUE) to carry out the settlement.
The user exits can process the settlement request in one of the
following ways:
- Carry out the settlement immediately (interfacing to an
accounts receivable database) and pass back the settlement amount
- Place a request to try again later if the interface to the
payment system is inoperable
- Request asynchronous processing, which means that Console
never contacts the payment system for this order. The payment
interface (custom extension) must update details corresponding to
payment through the Sterling Order Management APIs. This is typically
the case when interfaces to the payment system are run in batch mode.
If settlement is handled through an external collections system(accounts
receivable), you may choose not to record payment collections . If
settlement is not recorded in the Sterling Order Management database, a
settlement request is not created for the order. It is assumed that
settlement is performed through an external system using the information
published with the invoice.
Payment Exectution agent (invokes API executeCollection) runs and
process the Settlement Request records.
Then again Payment Collection Agent (requestCollection Api) runs to
update the payment status on the order. Its like
requestCollection(createCharge records)>exectuteCollection(Process
Settlement Request Records)>requestColletion(Update the payment status
on the order).
Subsequent Questions:
- Can you do payment processing on Draft Order?
- How do you define Payment Processing Rule. Can you ask to use
payment processing rule of Seller of the order instead of the
enterprise of the order?
- What is reverse Authorization?
- How do you process refund?
- Can we do refund processing on return order?
- One customer would like to allow redim the Credit Card Points
and place the order. In this case how would you implement this
requirment
- How would you do payment processing for Coupons
- What is charge consolidation?
- How do you record recordExternalCharges?
Note: Payment authorizations and
collections can be made on ATG end and then come to OMS with create
order XML. Order gets created and can then record these pre-authorized
and pre-collected amounts. If any partial payments, the amount is
deducted from the total order amount and then the typical payment
processing behavior continues for the remaining order amount.
Charge Transaction Table Record Status The valid values are:
- OPEN - It means record is in open status.
- CLOSED - Indicates that this record is in closed status. It
means authorization request or charge request has been processed.
- ERROR - This means error was encountered during processing.
- CHECKED: Indicates that this record reached its final status
(All processing for this record is done. No more any action is
required).
- VOIDED: Record has been voided.
POC on Payment Processing:
1. When you create order just
with payment information (e.g. with credit card information). - It
insert a record with the order header key in the charge transaction
table with following values:
CHARGE_TYPE = "CREATE_ORDER"
STATUS = "OPEN"
BOOK_AMOUNT ="< Order Amonut (e.g. 100) >
At this stage payment status of the order will be "Awaiting
Authorization". If you open the order in console, you can see the
payment status.
It also insert a record with the order header key in the PAYMENT table
with the following information:
PAYMENT_TYPE = "CREDITCARD"
CREDIT_CARD_TYPE = VISA (depends what kind of card it is).
2. Invoke requestCollection API.
When you invoke requestCollection API with the order header key. - It
insert a record with the order header key in the charge transaction
table with following values:
CHARGE_TYPE = "AUTHORIZATION"
STATUS = "OPEN"
REQUEST_AMOUNT ="< Book amount of earlier record ( Order Amonut) >
It also update the status of earler record where CHARGE_TYPE =
"CREATE_ORDER". It change the earlier record status to "CHECKED"
At this stage payment status of the order will be "Awaiting
Authorization". If you open the order in console, you can see the
payment status.
3. Invoke executeCollection API.
When you invoke executeCollection API with the order header key. - It
update the record which has CHARGE_TYPE = "AUTHORIZATION" (auth request
record) for the order header key in the charge transaction table for the
following values:
STATUS = "CLOSED"
OPEN_AUTHORIZED_AMOUNT ="< REQUEST_AMOUNT of earlier record ( Order
Amount) >
At this stage payment status of the order will be "Awaiting
Authorization". If you open the order in console, you can see the
payment status.
4. Invoke requestCollection API
again to update payment status on the order.
When you invoke requestCollection API again with the same order header
key. - It update the record which has CHARGE_TYPE = "AUTHORIZATION"
(auth request record) for the order header key in the charge transaction
table for the following values:
STATUS = "CHECKED"
At this stage payment status of the order will be "Authorized".
If you open the order in console, you can see the payment status.
5. Create order invoice
When you create order invoice by just invoking createOrderInvoice api
(e.g. with order header key and line information). - It generate a
invoice and insert a record with the order header key in the charge
transaction table with following values:
CHARGE_TYPE = "ORDER_INVOICE"
STATUS = "OPEN"
DEBIT_AMOUNT="< Order Amonut (e.g. 100) >
BOOK_AMOUNT = -(minus) "< Order Amonut (e.g. -100) >
At this stage payment status of the order will be "Authorized".
If you open the order in console, you can see the payment status.
6. Invoke requestCollection API.
When you invoke requestCollection API with the order header key. - It
insert a record with the order header key in the charge transaction
table with following values:
CHARGE_TYPE = "CHARGE"
STATUS = "OPEN"
REQUEST_AMOUNT ="< Book amount of earlier record ( Order Amonut) >
OPEN_AUTHORIZED_AMOUNT = -(minus) "< Order Amonut (e.g. -100) >
It also update the status of earler record where CHARGE_TYPE =
"ORDER_INVOICE". It change the earlier record status to "CHECKED".
At this stage payment status of the order will be "Invoiced". If
you open the order in console, you can see the payment status.
7. Invoke executeCollection API.
When you invoke executeCollection API with the order header key. - It
update the record which has CHARGE_TYPE = "CHARGE" (charge request
record) for the order header key in the charge transaction table for the
following values:
STATUS = "CLOSED"
OPEN_AUTHORIZED_AMOUNT ="< REQUEST_AMOUNT of earlier record ( Order
Amount) >
CREDIT_AMOUNt = "< REQUEST_AMOUNT of earlier record ( Order Amount)
>
At this stage payment status of the order will be "Invoiced". If
you open the order in console, you can see the payment status.
8. Invoke requestCollection API
again to update payment status on the order.
When you invoke requestCollection API again with the same order header
key. - It update the record which has CHARGE_TYPE = "CHARGE" (charge
request record) for the order header key in the charge transaction table
for the following values:
STATUS = "CHECKED"
DISTRIBUTED_AMOUNT= -(minus) "< Order Amonut (e.g. -100) >
At this stage payment status of the order will be "Paid". If you
open the order in console, you can see the payment status.
24). What
is hub rule?
In a process type hub rule is a component which does the piple line
determination.
We can have a condition in hubrule and based on the conditon we can
route/follw a entity (e.g. order, shipment) to a particular pipleline.
All condition can not be used in hub rule. becuase some attributes
(normally condition is based on the value of the attributes) are not
availanble at that point when pipeline determination is happening.
25). Have you developed any condition to be used in
hub rule? And faced any challenges
Yes. Just see the above answer.
26). What are difference between line type and
fulfillment type
Both are order line level attribute.
LineType is used to mark the type of line. its value is used to build
condition, pass the value to downstream system.
You can create line type navigating to
DOM>DocumentSpecific>SalesOrder>OrderAttriutes
Fulfillment Type is used to define sourcing rule. Sourcing rule is
created after selecting the fulfillment type.
You can create fulfillment type navigating to
DOM>CrossApplication>OrderPromissing>SourcingAndScheduling>FulffillmentTypes
27). Have you used ConditionVariable1 or
ConditionVaribale2 attribute in your project?
This are the two order line attribute which can be used for multipurpose
- to store some value. Mostly this attributes are used to create static
condition in service defination framework.
28). What are the use of following order attributes?
- Entry Type
- Order Type
- Order Sourcing Classification
- Division
- Purpose
- Entry Type - We use this attribute to store the channel name
in which order is captured. Example. "WEB" is used to represent dot
com orders.
- Order Type - Used to store the type of the order. Exampple B2B
or B2C to represent B2B/B2C order
- Order Sourcing Classification - We use this attribute to
define sourcing / procurement rule. Example we can have sourcing rule
baed on the order sourcing classification and/or fulfillment type.
Example - All the order with customer email id
"easycodeforall@gmail.com" needs to be fulfilled Bostom DC. To acheive
this, in the before create order UE we can setup sourcing
classification as "EASY_ORDER" for this type of orders. Then we use
this sourcing classification value to create the sourcing rule and in
the sourcing rule we can tell that to source the items from Boston DC.
- Division - It represent order belongs to which division and
used in accounting and it's send to downstream system.
- Purpose
29). What are the use of ReqCancelDate and
AutoCancelDate attribute? attributes?
ReqCancelDate is an order level and line level attribute. If line level
value is not present, it take it from order header level.
If order/order line crossed the RequestCancelDate value and if is in
created or backorder status (any status before schedule), it will not be
schedule any more. This attribute is use to controioll the scheduling of
an order.
AutoCancelDate is an order level attribute, on which date it will be
cancelled if its not fulfilled. Order monitor needs to be running to
cancel automaticlly.
30). What are the minimum data we need to pass in
createOrder xml to create a order (confirmed order. Not draft order)
To create confirm sales order , we need to pass minimum following
information.
- Document type (e.g. 0001)
- EnterpriseCode (e.g. DEFAULT)
- At least one one order line / item
- ShipTo address
- BillToAddress
Note: BillToAddress is optional for Cash &
Carry order. If you pass DeliveryMethod="CARRY", bill to address
is not required.
Bill to address is required for other delivery methods like SHP, PICK,
DEL
31). What are the order statuses in your order
pipeline has?
It varies from customer to customer. Most likely, there will be some
custom statuses for your customer implementation. Typical order statuses
for ShipToHome orders are Created, Verified, Scheduled, Released,
Acknowledged By Warehouse, Shipped.
32). What are the difference between instruction and
notes in a order?
Notes are just the formation about the order or order line. It's just
added to the order just for infomation purpose. Example - Call center
representative contacted customer and added a note on the order that she
called his mobile and informed about the unavailability of the item.
Where as instructions are about information on the order along with some
action. Instruction types are predefined and it has special meaning.
Like we can add a delivery instruction on the order that "Order needs to
be delivered on the week days". One order can have only one Delivery
Instruction. We can not have more than one DELIVERY instruction
Instrutions are stored in INSTRUCTION table. Where as Notes are stored
in NOTES table.
changeOrder api is used to add note and instructoion to the order.
33). What is order hold? Can you give an example? Can
you name a hold sensitive transaction
Hold is a way to control order process flow. Mainly we apply hold on a
order or order line so that order does not move and order stay in the
current status unless hold is resolved.
To use the order hold feature (e.g. PAYMENT_HOLD), following things are
required.
1. Configure the hold under DOM in Application Manager(Configurator).
While configuring hold. Following information are required.
- Hold Creation - Here we need to mention at what event (e.g. On
order create, On draft order confirmation) hold will be applied?
-
- Hold Resolution - Here we mention how hold will be resolved
and which agent (time trigger transaction) can. We can mark that hold
can be resolved manually and by any user or a specific group of userS
-
- Hold Effect - Here we mention what are the transaction can be
stopped processing the order.E.g. we can mark scheduleOrder
transaction not to process (schedule) the order.
Note:
All transactions are not hold sensitive. Only hold sensitve
transaction can be marked not to process the order when hold is
present on the order.
-
Hold can be created at Order Level and Order Line level. Rest of
the configurations are common for both Order and OrderLine
Hold can be cofigured for other order types (e.g. return order TO) as
well as shipments.
34). In order Hold configuration UI, there is a
checkbox "Resolve hold on cancel". What is the use of it? Why should we
check this check box when creating any new hold type
It's very important. If this check box is checked, hold will be
automatically resolved on cancellation. It's very much required as Purge
Agent will not purge the cancel order if hold is present on the order.
35). What are the Hold Statuses? How can you resolve a
hold?
Hold has two statuse. 1100 & 1300.
1100 - When hold is applied.
1300 - Means hold is resolved.
36). What is shpment consolidtaion window? How it is
configured?
37). What is scheduling rule and what is fulfillment
rule?
Scheduling Rule - Schduling rule is used schedule the order and
determine the final shipnode from where item will be sourced to fulfill
the order. In the scheduing rule we mention our constrainsts which are
applied on shipnode determination. Some constarints are "Ship From
Single Node". Optimization on Cost and Number of shipments
Fulfillment Rule - Fulfillment rules are document specific. Where
we can mention wheter line spilt is required on partial backorder or
not.
38). What is monitoring rule and monitoring event? How
it's configured?
We can define monitoring rule for a pipeline to monitor the statuses of
the entity(e.g. order).
suppose customer given a requirment that if any order line is in
Backorder status for 24 hrs, send a
39). What are order modification rules? How do I know
what are rules applied on my order?
40). I would like to get list of all my return orders
as a out put of getOrderList api. Say my sales order header key value
is 20210101897899. what would be the input xml structure and output
template structure ?
Answer: You need to pass sales order header key in the place of
derrived from order header key and document type value will be retun
order document type .
41). I would like to get list of all transfer orders
for my sales orders as a out put of getOrderList api call. Say my sales
order header key value is 202101018972299. what would be the input xml
structure and output template structure ?
Answer: You need to pass sales order header key in the place of
chained from order header key at line level and document type value will
be transfer order document type .
42). I would like to get list of all purchased orders
for my sales orders as a out put of getOrderList api call. Say my sales
order header key value is 20210101127899. what would be the input xml
structure and output template structure ?
Answer: You need to pass sales order header key in the place of
chained from order header key and document type value will be purchase
order document type .
43). What are use if loadInventoryMismatch and
syncLoadedInventory inventory. How they work?
44). What is backordered from node and what is its
status? How a backorder from node item is resourced from another node?
45). What is reship? Sometime customer call the
callcenter representative and complain that they haven't received the
product. In case of premium customer, company would like to reship the
item to customer without charging them. How would you implement reship?
46). What
is RTAM? How do you setup RTAM agent?
RTAM is an agent which publish the inventory picture to external
system(ATG. Example - based on this availability information quite often
ATG(dot com site) whether the item to show the customer or not. )
- Now question is when and how it publish the inventory picture?
- Inventory picture of which item it publish it?
- Inventory picture of which which node it publish it?
- What do you mean by inventory picture?
- how it publish the inventory picture?
RTAM is the agent(a time-triggered transaction) which continuously
monitor inventory level of an item(inventory-item) in a node or in a
distribution group(DG - a collection of nodes) and publishes
availability by raising the REALTIME AVAILABILITY CHANGE LIST event Now
when and at what frequency RTAM publishes the inventotry
picture(availablity)?
RTAM runs in three modes:
- Activity-based mode - If the inventory level of an item goes
up or down, such as falling below a specified threshold, A record is
inserted in the INVENTORY ACTIITY table. RTAM agent process those
records and raises the REALTIME AVAILABILITY CHANGE LIST event to
publishes the updated inventory picture to external systems(ATG).
Inventory threasolds are configurable item.
- Raises the event in real time every time an item goes above
or below one of the thresholds, thus helps in avoiding Low
Availability or Out of Stock situations
- Monitor based on distinct inventory items in
INVENTORY_ACTIVITY tabl
- Quick sync mode - this mode mainly used to send availability
messages to the planning and promotion systems.
Re-sends the
most recently published inventory availability information.
Can be used to resend Inventory Availability picture to the external
system in case of external system downtime.
Re-raise event to
publish information from the INVENTORY_ALERT table.
- Full sync mode- RTAM in full sync mode run as a scheduled job.
Inventory availability information is sent for all items, regardless
of whether or not availability changes occur for the items.
- Monitors all of the items regardless of any activity and
publishes the inventory informationfor all of the items.
- Monitor based on all inventory items maintained by the
inventory organization provided. If no InventoryOrganizationCode is
provided all inventory item is monitored.
- Inventory organization code is used, when Monitor Option is
passed as 3. The inventory organization has to be an enterprise. If
this is not passed, the monitor runs for all inventory
organizations.
- RTAM can publish availability(e.g.
OnhandAvailableQuantity="900.00" ) of an item in a node or distribuion
group(e.g. US_TOTAL DG )'
- It can publish the availability based on delivery method
(PICK, SHP)
- It honbour the safety factor if its defined at item or
item-node combination level
- It honbour the capacity also on the availability calculation
- It can consider/calculate future inventory and publish it when
stock level is low.
How RTAM works? To use RTAM, you should have the following
things.
- ATP Rule (Navigation: GIV > Inventory Rule)- You should have a
default ATP rule configured. It is used to calculate the availability
on future inventory
- Monitoring Rule Setup(Navigation: GIV > Inventory Rule) - You
should have monitorung rule configured. Where we subscribe the DGs to
monitor( e.g. TOTAL_US_DG), WHERE we mention Whether we need to run
Activity based mode or not. What is the ATP rule to use for
calculating availability
- In Item Details screen (sbc or Configurator) “ATP Monitor
Rule” or “NODE level ATP Monitor Rule” value has to be set for the
Item to be monitored by RTAM
- Enable the event REALTIME AVAILABILITY CHANGE LIST in the
Realtime Availability Monitor Transaction under general
RaiseEventsOnAllAvailabilityChanges If set to Y, event is raised
on all availability changes regardless of whether availability exceeds
or falls below specified thresholds
When record gets inserted in INVENTORY ACTIVITY and INVENTORY ALERT
table?
Records are inserted into the INVENTORY ACTIVITY table for every supply
/ demand change. When we adjust inventory of an item, a record gets
inserted in this table for the inventory item irrespective of the node
being part of RTAM monitoring DG. It also needs to meet the following
criteria.
Records for item are inserted only when
- "Use Activity based Real time availability monitor"
checkbox is checked
- A ATP monitor rule is setup for item .
Records are consumed from INVENTORY ACTIVITY table and create records
about inventory alerts in the INVENTORY ALERT table if shipnode is part
of RTAM DG.
Key columns of INVENTORY ALERT are AlertLevel, AlertQuantity, AlertType
(REALTIME ONHAND & REALTIME FUTURE MAX), AvailabilityInfo, AlertRaisedOn
Difference between on_hand alerts and Future_Max alert
Alerts Raised by RTAM |
AlertLevel |
AlertType |
Inventory level above the High Quantity Boundary |
0 |
REALTIME_ONHAND |
Inventory level below the High Quantity Boundary and above
the Medium Quantity Boundary |
1 |
REALTIME_ONHAND |
nventory level below the Medium Quantity Boundary and above
the Low Quantity Boundary |
2 |
REALTIME_ONHAND |
Inventory level below the Low Quantity Boundary |
3 |
REALTIME_FUTURE_MAX |
47). What are the difference between alert and
integration error in IBM Sterling Commerce?
48). A sales order not being purged by the purge
agent. What could be the reason of not being purged
49). What are the payment methods and payment types
are supported by IBM Sterling Commerce?
50). What are the uses of recordExternalCharges api.
can you give an example
Support
Whatsapp No. 7439236696 for any question / suggestion |