Code Robo
Formatter
Comparator
Tester
Converter
Utility
Java Code Complience
Validator
EncoderDecoder
Virtual Service
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.

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


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
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. 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.
  • 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. 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 Questions:
  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




Support Whatsapp No. 7439236696 for any question / suggestion


Previous Page Next Page  
 

User Comments:
anonymous (2022-03-14) :
At what stage we should create invoice for drop-ship order. And what kind of invoice( create orderInvoice or Shipment invoice) we should create?
    Reply;

Praveen Lanka (2022-03-16) :
What are the difference between drop-ship Purchase Order and Procurement Purchase Order. How they are implemented?
    Reply;
easycodeforall: (2023-06-29)
It has been answered in the main section!
    Reply

Rahul Ghosh (2022-03-20) :
Hi, Another excellent contribution from you. It will help a lot of people. Thank you. best regards, Rahul Ghosh
    Reply;
Susanta: (2022-03-20)
Thank you so much Rahul!
    Reply

anonymous (2022-04-16) :
In our project we are doing POC to implement Procurment Purchase Order. But after scheduling sales order line status is moving to 1600("Awaiting Chain Order Creation" ) status not to 2030 ("Awaiting Procurement Purchase Order Creation"). I want to move our sales order status to move to 2030 ("Awaiting Procurement Purchase Order Creation"). Can you please help me?
    Reply;

vijay kumar (2022-04-16) :
if we return the order ,payment method should be default method ,but need to revert money in Gift Card, what is process and customization
    Reply;

anonymous (2022-04-16) :
Does IV supports RTAM? Mainly in the IV is there any way to publish the inventory picture to external system (Mainly the push method)
    Reply;
abcd@gmail.com: (2022-08-29)
    Reply
easycodeforall: (2022-08-29)
Latest version of IV support RTAM, It can dump the inventory information as IBM Cloud object or It can invoke a URL to post the update.
    Reply

Krishan Sirohiya (2022-04-16) :
Wow, you are doing excellent work. Thank you lot for this.
    Reply;
easycodeforall: (2022-04-21)
Thank you so much Krishan for your comment! Please do let us know if your project needs any new tool. We are appy to add them in this platform. Even we are planning to add some tool as downloadable!
    Reply

Hemant (2022-04-16) :
Thanks for your great questions and answers! Can you please write about inventory Full Sync and Delta feed. How to implement(consume) them?
    Reply;
easycodeforall: (2022-04-21)
Thanks for showing interest in inventory feed. Added inventory load process (Full Sync and Delta) in the main section. Please check it.
    Reply

anonymous (2022-04-16) :
What is the difference between Primary Enterprise and Parent Organization? Rathere what's the use of Primary Enterprise and Parent Organization? It would be very helpful if you could explan with an example.Thanks !
    Reply;
easycodeforall: (2022-04-21)
Thanks for using easycdeforall! Added answer to your question with an example in the main section.
    Reply

anonymous (2022-04-16) :
How to setup transfer relationship and node transfer schedule between two nodes/stores?
    Reply;
Easycodeforall: (2022-04-21)
Thanks for using easycodeforall!. Added the question and answer in the main section.
    Reply

Rahul Ghosh (2022-04-16) :
I found new as interesting scenario added. Explanation on subject like RTAM, inventory is really good. Keep it up. All the best
    Reply;
easycodeforall: (2022-04-21)
Thank you Rahul so much!!! User?s feedbacks are inspiration for us! Look forward for more feedback and ideas.
    Reply

anonymous (2022-04-16) :
hi , could you add more details on the differences between sourcing rule and scheduling rule.
    Reply;
easycodeforall: (2022-04-21)
Thanks for using easycodeforall. I answered this question as part of Question No. 221.
    Reply

anonymous (2022-04-16) :
How TaskQBased agent and NonTaskQBased agent works?
    Reply;
easycodeforall: (2022-04-21)
Thnanks for your question. We have talked about taskbased and non-taskbased agent on the question 117). Please go-through it and let us know if you need more details or if you have any specific question and agent implementation and how its work.
    Reply

abcd@gmail.com (2022-04-16) :
Could you please add about work order , template order , PS(Provided Services) , DS(Delivery Service) or providing being delivered information.
    Reply;

abcd@gmail.com (2022-04-16) :

    Reply;

abcd@gmail.com (2022-04-16) :
Could you please add about work order , template order , PS(Provided Services) , DS(Delivery Service) or providing being delivered information.
    Reply;

abcd@gmail.com (2022-04-16) :
Could you please add about work order , template order , PS(Provided Services) , DS(Delivery Service) or providing being delivered information.
    Reply;
easycodeforall: (2022-04-21)
Thanks for your comment. We will definitely add question and answer on Delivery Order and Template Order. Template Oder is used in B2B OMS implementation.
    Reply

abcd@gmail.com (2022-04-16) :
Thanks a lot for adding questions and answers on Sterling OMS. Its really helpful. It would be great if you can add some questions on WEBCOM and WEBSOM.
    Reply;
easycodeforall: (2022-04-21)
Thanks for your question. Earlier three client application based on Java RCP technology COM, SOM and SIM

COM : It's name was Customer Order Management. Built on RCP technology and used by call center user to address customer queries (e.g. cancelling order, changing shipto address). From 9.5 it has been built on Html and JavaScript (Angular Framework) and its called now Callcenter Application. its browser based application.

Sameway SIM (Store Inventory Mangeent) and SOM (Store Order Management) has been comverted to WebStore which is used for store operation.
    Reply
easycodeforall: (2022-04-21)
We will add question on WebStore (WebSOM) )and Callcenter For Commerce (Web COM) application soon!
    Reply

anonymous (2022-04-16) :
If we need to define 100+ payment type in the SBC, is there any api for it? or we need to configure each payment manually only in the SBC.
    Reply;
esycodeforall: (2022-04-21)
Thanks for putting the question. There is no API to careate the payment types.
For B2C order there will be hardly 5-6 payment types, so didn't feel any need of any api to create the payment types. But for B2B order there could be many payment types and which may be difficlult to configure through SBC.
So what you can do here. is
Step 1: Create one or two paymenty type using SBC screen,
Step 2: Do a select query to connecting DB from PAYMENT_TYPE table. e.g. SELECT * FROM PAYMENT_TYPE.
Setp 3: Create Insert query form the output of Step 2. Just by copy pesting and chaning few key attribute values.
Step 4. Excute your INSERT db queries to create the Payment Types.
Step 5: Execute getPaymetTypeList api and check all inserted payment types are getting in the output xml or not.
Setp 6: Save your insert queryes in your source control repositor (e.g. github).
Hope it will help you. We would be happly to answer more questions and You may email/call us.
    Reply
anonymous: (2022-04-21)
    Reply

vijay kumar (2022-04-16) :
In RTAM ,what is configuration to setup threshold of item in activity Base ,
    Reply;
easycodeforall: (2022-04-21)
Thanks for your question! we will answer shortly.
    Reply

anonymous (2022-04-16) :
Thanks for your good work
    Reply;
easycodeforall: (2022-08-29)
Thanks for using easycodeforall!
    Reply

vijay kumar (2022-04-16) :
please share the flow of Return alongs with specific transaction and status code
    Reply;

Balaji K (2022-04-16) :
We have a business requirement where we need to identify SCAC and CarrierServiceCode for an order during scheduling itself. We are maintaining routing guide in OMS at enterprise level. We will receive an Order XML from website where we wont be having carrier and carrier service code. We will only be having LevelOfService and FreightTerms as PREPAID(in order to identify the routing guide). We have noticed in the javadocs that when we run scheduleOrder API or even findInventory API, the determineRouting API will be called internally. So during this scheduleOrder call, we thought of making use of this determineRouting API call and somehow identify SCAC and CarrierServiceCode for that order. But when we try calling scheduleOrder API, we saw that the determineRouting API is not even getting called. Is this workflow correct, will determineRouting API will be called during promising API calls or will we be missing any configurations?

The same order after shipment created moves into Awaiting routing and the ROUTE_SHIPMENT transaction is identifying the SCAC and CarrierServiceCode for that shipment. So, routing guide is working fine but need to understand if expecting it to happen during scheduleOrder or findInventory is correct or not?

Please help us in the same.
Thanks,
Balaji K
    Reply;
easycodeforall: (2022-04-21)
Thanks Balagi fir nicely articulating the question!
You can try following options and check whether its working or not.
  • Enable LandedCost in DOM. Inside Landed cost enable "Transportation Cost". In the scheduling rule and choose Optimize on "Cost, Number of shipment" . DO NOT Select "Ignore use of Landed Cost for Optimization" in the scheduling rule.
    Then create an order. Schedule it and check it whether routing is getting called or not.
  • Pass DetermineCarrierService="Y" in the input XML of findInventory api and check whether determineRouting api is getting called or not
    Reply
Balaji K: (2022-04-21)
    Reply
Balaji K: (2022-04-21)
Hi, I've tried that and not able to see determineRouting API getting called. And, which would be the better place to identify SCAC and CarrierServiceCode for an order in an order lifecycle. Is after release an optimum place to identify SCAC because releases are created or after scheduling is a better way? Thanks, Balaji K
    Reply

deepandra (2022-04-16) :
Hi Team, There is lots of questions whose answer is not present here . like 51 -61 . 63-79 . could you please add them .It will be helpful for us.
    Reply;
Easycodeforall: (2022-04-21)
Hi Deepandra, Thank you for using easycodeforall and your comment. We will try to add the answers as early as possible. Please do letus know if you are looking for answer of any specific question on priority.
    Reply
easycodeforall: (2022-04-21)
You can email us (easycodeforall@gmail.com) also if you have any specific query.
    Reply
anonymous: (2022-04-21)
    Reply

anonymous (2022-04-16) :
Will u provide training for sterling OMS Payment modules COM SOM customizations
    Reply;
easycodeforall: (2022-04-21)
Yes. I do provide online training on Sterling Commerce and Java.
    Reply
easycodeforall: (2022-04-21)
Thank you!
    Reply

Harsha Raj (2022-04-16) :
Can you please provide Overview of Charge Transaction request (CTR) - Payment processing feature
    Reply;
easycodeforall: (2023-06-28)
CHARGE_TRAN_REQUEST table is used to make a set of unique groups for payment processing on the order. Authorizations will be split such that each authorization is for only one request. It holds the Payment Status f the request. It has relationship with CHARGE TRANSACTION table via CHARGE TRAN RQ MAP table
    Reply

anonymous (2022-06-30) :
Hi can you explain how to Implement YFSGetExternalInventoryForItemListUE to invoke IV API to fetch inventory picture for the ShipNodes determined by sourcing logic rules. This UE will be invoked during schedule process.
    Reply;
easycodeforall: (2022-04-21)
Thanks for using easycodeforall! We will add details of UE implementation to invoke IV
    Reply

anonymous (2022-07-05) :
can you give an example how to call IV from UE any snip of code
    Reply;
easycodeforall: (2022-04-21)
Thanks for using easycodeforall! We will add some sample coe.
    Reply

anonymous (2022-08-04) :
How to validate attributes in transaction
    Reply;
easycodeforall: (2022-08-20)
If you would like to validate of any attribute in a transaction, you should do it from UserExit(UE). Example - You can validate order attribute in beforeCreateOrderUE.
    Reply
anonymous: (2022-04-21)
    Reply

Deepak Chacko (2022-08-10) :
Do you provide job support? How much you charge?
    Reply;
easycodeforall: (2022-08-12)
Yes. We do provide job support. Even we provide job support in US time.
    Reply

Navneet Singh (2022-09-14) :
Wonderful collection of interview question . Keep up the good work !
    Reply;
easycodeforall: (2022-09-14)
Thanks Navneet for using easycodeforall!
    Reply

sanjeev singla (2023-01-17) :
i need complete answers of Sterling commerce interview questions
    Reply;
easycodeforall: (2023-06-23)
You may attend our traing classes to know the answers of all the question as well as some basic and advanced stuffs.
    Reply

anonymous (2023-06-03) :
Can you please add some details about Order Hub?
    Reply;
easycodeforall: (2023-06-28)
Added a summary on orderhub on the last page (Question No. 246. Page-5)
    Reply

anonymous (2023-06-23) :
Do you provide training to Java/J2EE?
    Reply;
easycodeforall: (2023-06-25)
Yes we do provide training on Java/J2EE. We have both novice, practitioner and advanced training course. For details please email us at easycodeforall@gmail.com or whatsapp on 7439236696
    Reply

vidya (2023-06-26) :
can you please explain what is the Difference between getOrderList and getOrderDetails api?
    Reply;
easycodeforall: (2023-06-27)
Thanks for usiung easycodeforall! Added the differences of this two api in the main section(Page no. 5. Quest No. 246)
    Reply

vidya (2023-08-03) :
Hi Sir Can I change the DocumentType of sales order(0001)?
    Reply;

anonymous (2023-08-10) :
Can you please provide answers for these 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?

    Reply;

anonymous (2023-09-13) :
what is the difference between manage item api and create item API?
    Reply;
easycodeforall: (2023-09-25)
In there earlier version (7.* and 8.*) createItem api was used to create an Item and its attributes, aliases, service skills exclusion codes. But createItem api has been depricated and replaced by manageItem api.
manageItem API can be used both to create a new item or modify an existing item.
    Reply


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