Code Robo
Virtual Service
Comparator
Tester
Converter
Utility
Java Code Complience
Validator
Formatter
EncoderDecoder
IBM Sterling Commerce Interview Question And Answer
       Talk to EasyAssistant

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.

Questions and answers are multiple pages. Please use "Previous" and "Next" link to navigate to next and previous pages.

Previous Page Next Page  


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:
  1. Make entry in extension.xml
  2. build entity jar
  3. 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?
  1. 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.
  2. If you are adding custom table, you need to create a service in Application Manager and invoke that service from api tester
  3. 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:
  1. What is Shadow Column? How to define a shadow column and what's the purpose of shadow column
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.
  • 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.
  • Mark vendor organization is a separate Legal Entity .
  • Create Distribution Group and add Vendor DC in this distribution group.
  • Add Distribution Group in sourcing rule for your fulfillment type. You can configure it with default fulfillment type also
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. Purchase Order Implementation

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.
  • 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.
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. Transfer Order Implementation

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?
  1. NA (NOT_APPLICABLE)
  2. Awaiting Payment Info
  3. Awaiting Auth
  4. AUTHORIZED
  5. FAILED_AUTH
  6. FAILED_CHARGE
  7. Paid
  8. INVOICED
  9. REQUESTED_CHARGE
  10. 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.
  1. At enterprise participant model(Roles & Participant > Seller Atribute > Payment Processing required ), check the check box Payment Processing required.
  2. In Order Fulfillment Process Type details, mark Allow Payment Processing Checkbox Checked
  3. 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:
  1. Credit Card
  2. Debit Card
  3. Customer Account
  4. CHECK
  5. Others
Add Card Types For your Credit Card and Debit Card that you would support.
  1. VISA
  2. 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.
  1. Settlement Required
  2. Authorization Required
  3. Collect Externaly Through Account
  4. Ignore Payment Status For Purge
  5. 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:
  1. Carry out the settlement immediately (interfacing to an accounts receivable database) and pass back the settlement amount
  2. Place a request to try again later if the interface to the payment system is inoperable
  3. 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 Quentions:
  1. Can you do payment processing on Draft Order?
  2. 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?
  3. What is reverse Authorization?
  4. How do you process refund?
  5. Can we do refund processing on return order?
  6. One customer would like to allow redim the Credit Card Points and place the order. In this case how would you implement this requirment
  7. How would you do payment processing for Coupons
  8. What is charge consolidation?
  9. 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.
  1. Hold Creation - Here we need to mention at what event (e.g. On order create, On draft order confirmation) hold will be applied?
  2. 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
  3. 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. )
  1. Now question is when and how it publish the inventory picture?
  2. Inventory picture of which item it publish it?
  3. Inventory picture of which which node it publish it?
  4. What do you mean by inventory picture?
  5. 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:
  1. 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
  2. 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.
  3. 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





Previous Page Next Page  



Post Your Comment:
Name :
Email ( Optional) :
Comments / Suggestion (* Required) It is required: :
: