Professional Documents
Culture Documents
Sterling OMS Interview Questions
Sterling OMS Interview Questions
Complex Query :
Complex queries help to narrow a detailed listing obtained as output from an API. To generate the
desired output, you can pass queries using And or Or operators in the input XML of an API.
1: Only item, organization, order, order line, shipment and shipment line entities are supported for
performing complex queries. The attributes for complex query must map directly to valid database
columns of these entities and should be within the same XML element.
2: Supported API
● deletePricelistAssignmentList
● deletePricingRuleAssignmentList
● getAttributeAllowedValueList
● getClassificationPurposeList
● getCustomerContactList
● getExceptionList
● getInventoryReservationList
● getItemList
● getOrderLineList
● getOrderList
● getOrganizationList
● getSearchIndexTriggerList
● getShipmentList
References:
1. https://www.ibm.com/docs/en/order-management-sw/9.4.0?topic=queries-defining-complex
2. https://activekite.com/2018/10/29/sterling-oms-first-complex-query/
Custom Services : Two types of services are defined - Synchronous and Asynchronous
1. Synchronously invoked services : These services can perform all their processing and return the
result in a single call, on demand.
2. Asynchronously invoked services : These services automatically perform all their processing
whenever triggered by a message from an external system or from within Sterling Selling and
Fulfillment Foundation. The trigger could be in the form of a file, a database record or a message
in a message queue depending upon the mode of integration. These services do not return any
value and are purely used for background processing such as sending out emails or automatically
receiving updates from or sending updates to an external system.
The Alert Console displays all exceptions logged by the Service Definition Framework. It also enables you
to reprocess exceptions that occur in transactions configured to be asynchronous. When using a
database or queue, calls are asynchronous.
The Service Definition Framework uses the log4j utility for logging exception information. The log4j
utility writes both trace and debug information to a log file. You can configure the logger to send
different categories of messages to different destinations. Categories are organized hierarchically, which
permits inheritance. Each category can be configured with a priority indicating a severity level. If a
category is not configured with a priority, it inherits the priority of its closest ancestor with an assigned
priority.
All exceptions that occur during an API call or during use of an event handler are logged.
Custom API :
In order for custom APIs to access custom values, the API should implement the
com.yantra.interop.japi.YIFCustomApi interface.
If entered, these name/value pairs are passed to the Custom API as a Properties object.
Types of APIs:
1. Select API : Typically prefixed with "get," select APIs return one record for an entity (for example,
the getOrderDetails() API returns the details of one order). They do not update the database.
2. List API : Typically prefixed with "get," list APIs return a list of records for an entity that match the
criteria specified through the input XML . eg: getOrderList() API
3. Update API : Update APIs insert new records into the database. They also modify or delete
existing records in the database.
ValueMaps
1. Hang-off table names as well as Primary Key must not start with a Y.
2. Hang-off table must have a primary key.
3. The YIFApi interface does not extend APIs for hang-off tables. Therefore, the APIs for these
tables must be configured as services.
4. Javadocs are not created for the APIs created by the infrastructure to support hang-off tables.
5. XSD generation and validation is not done for custom or hang-off tables.
6. Every hang-off table must have below fields:
● CREATETS
● MODIFYTS
● CREATEUSERID
● MODIFYUSERID
● CREATEPROGID
● MODIFYPROGID
● LOCKID
NOTE: If not passed in the extensions xml, these fields will be created by the product
automatically.
Sourcing and Scheduling : The sourcing and scheduling rule enables users to define how orders
can be sourced from a node.
Sourcing : Sourcing is the process of determining from which node or supplier a product should be
shipped.
● Total number of shipments that are required to complete the request. This, in some ways,
reflects the transportation and handling costs associated with the entire shipment. If an order is
placed for 3 items and one of your nodes carries all three and another node carries only 2 them,
you may want to ship from the node carrying all 3 items in just one shipment compared to two
shipments in the other case.
● Prioritization of nodes. You may want to first ship out of your own locations and then use
drop-ship suppliers when no product is available in your own nodes.
● Customer specified constraints such as ship together dependencies and fill quantities being met
from the selected node.
● Ability to perform services for a work order. This could include kitting and dekitting services, and
ability to supply services for buyer compliance.
● Ability to perform gift wrapping services. A ship node may or may not offer gift wrapping as a
fulfillment option for an item. You can enable this functionality at the node attribute level.
● A customizable order sourcing classification. For example, an enterprise may want to use a
customer attribute as a sourcing parameter. The order sourcing classification enables this
flexibility.
● Priority of nodes
● Distance of nodes from the ship-to location
● Date when the delivery can be made
● Number of resultant shipments
● Cost-based scheduling
Priority - If this is set, node selection is based on the priority setup in the distribution group and
the distance from the node to the Ship-To location. Priority is calculated using Weight of node
priority * Node priority + Weight of distance * Distance from the node to the ship-to location.
Distance of nodes from the Ship-To location - When optimizing a scheduling solution, the
schedule can take into consideration the node priority cost. The priority of the node is converted
into schedule cost using the priority cost factor. The product of the node priority and the priority
cost factor results in additional cost for using that particular node.
Date - Sterling Order Management selects the node that can make the earliest delivery of the product.
Delivery date is calculated based on the transit time calculated between the shipping and ship-to
locations.
Number of shipments - Shipment date and node selection is done in a way that it reduces the total
number of shipments finally made.
Sterling Interview Questions
Syed Saman Murtuza
Cost-based scheduling - Cost-based optimization enables the scheduling process to consider landed cost
when determining a fulfillment option. Landed cost consists of the following costs:
● Item Inventory Cost uses the average cost maintained in Sterling Order Management to compute
a unit cost of an item at a given node.
● Node Capacity Cost Factor - This factor pertains to the consumed capacity percentage of
inventory for a node. During scheduling optimization, when the system compares two possible
nodes to determine the best one to use during costing, the landed cost will be based on the
lowest consumption factor.
● Handling Cost, both input and outbound handling costs, can be configured per unit, per line, or
per shipment. Inbound cost is considered when procurement is selected during scheduling, and
is applied at the procure-to node. Outbound handling cost is considered for outbound shipments
and is applied at the ship node.
● Transfer Cost is considered when a procurement option is selected when scheduling. Transfer
cost can be configured per unit, per unit weight, per unit distance. Alternatively, a fixed transfer
cost can be specified for an individual transfer schedule.
● Final Leg Cost is used to calculate the cost of a final shipment to a customer. It is usually
computed for a specified carrier or carrier service. A user exit is provided to compute the final
leg cost.
● *Hours of Supply Cost Factor - This factor pertains to the hours of supply cost for a node. During
scheduling optimization, when the system compares two possible nodes to determine the best
one to use during costing, the hours of supply cost factor determines the weight that is assigned
to the hours of supply cost in the cost calculation.
● *Shipment Delay Cost Factor - This factor pertains to the shipment delay cost for a node. During
scheduling optimization, when the system compares two possible nodes to determine the best
one to use during costing, the shipment delay cost factor determines the weight that is assigned
to the shipment delay cost in the cost calculation.
Ship complete order: This parameter ensures that all product lines in the promising inquiry request
are either completely scheduled or not scheduled at all. Lines could, however, be sourced from
different shipping locations.
Ship order from single ship node : This parameter ensures that all product lines in the promising
inquiry request are either completely scheduled or not scheduled at all. It also ensures that the
complete request is sourced from a single node on a single date. This is a super set of "ship complete
order" and when this parameter is set, a "ship complete" is assumed.
Ship complete line : This parameter ensures that every product line on an individual line basis is
either completely sourced or not sourced at all. However, lines could be sourced from different
shipping locations. The difference between this rule and the "ship complete order" rule is that this
rule does not enforce that all lines of the request are completely sourced. One particular line can be
sourced while another line of the same request could be backordered.
Sterling Interview Questions
Syed Saman Murtuza
Ship line from single ship node : This parameter ensures that every product line in the inquiry request is
either completely scheduled or not scheduled at all. It also ensures that each individual line is sourced
from a single node on a single date. This is a super set of "ship complete line" and when this parameter is
set, a "ship complete line" is assumed. However, this rule does not enforce that all lines are shipped from
the same node. A particular line may be completely shipped from node 1 while another line could be
completely shipped from node 2.
1. Subclass com.yantra.ycp.japi.util.YCPBaseTaskAgent.
2. Implement the executeTask() function in this class.
3. From the Applications Manager, configure a time-triggered transaction and assign an Agent Server to it.
4. Schedule and run your custom time-triggered transaction.
Payment-related APIs
executeCollection() - Processes individual requests for authorization and charging in the order the
requests were created. If you need to process requests individually, you can call this API to carry out
individual requests as required. This API calls the appropriate user exit to carry out payment processing.
recordCollection() - Records the authorization and charging amounts processed for individual requests
created by Sterling Order Management. This is useful when you want to interface with external payment
processing systems in a batch mode to process a group of requests and then update Sterling Order
Management with the results.
processOrderPayments() - Invokes the requestCollection() API and executeCollection() API in a single call,
which allows for online authorization of an entire order amount in order to avoid unnecessary expenses.
The processOrderPayments() API takes a list of payment methods on the order.
recordExternalCharges() - Records any authorizations and charging carried out external to Sterling Order
Management. This API is also used to record a payment received by an external system. An example is a
buyer account that receives payment after a considerable period of time. The executeCollection API
would have previously notified Sterling Order Management that this charge is being processed
asynchronously, then the recordExternalCharges API records the actual charge.
requestCollection() API - Analyzes the order and determines the amount for which an authorization or
charge request should be created.
createAccessToken - Generates a random and unique access token. This is used to authenticate calls to
the Sterling Sensitive Data Capture Server application.
capturePayment() - captures the payment method information for an order. Depending on the payment
type added, this API performs different actions. For example, some payment types require no
processing, some require processing based on the available amount, and some may require support for
zero dollar authorization instead of a full authorization.
Task Q : http://activekite.com/2017/11/12/sterling-oms-taskq-based-agent-server/
Sterling Interview Questions
Syed Saman Murtuza
Non Task Q Agent :
https://www.ibm.com/docs/en/order-management?topic=ccttt-creating-custom-non-task-based-time-tri
ggered-transactions