Retail WCF Service
Overview
RetailOrderInstructionService is a rest service used to create and manager orders for clients.
It contains the following operations:
"/login/{ssn}"
Stream Login(string ssn);
"/customerinfo/{ssn}"
Stream CustomerInfo(string ssn);
"/create/{ssn}"
Stream Create(string ssn, CreateOrderInstructionRetailDmaRequest json);
"/update/{ssn}"
Stream Update(string ssn, UpdateOrderInstructionsRetailDmaRequest json);
"/cancel/{ssn}"
Stream Cancel(string ssn, CancelOrderInstructionRetailDmaRequest json);
"/calculateorder/{ssn}"
Stream CalculateOrder(string ssn, CalculateOrderRetailDmaRequest request);
"/portfoliooverview/{ssn}"
Stream GetPortfolioOverview(string ssn, Kodi.Kodiak.OrderEntry.Retail.Contracts.PortfolioOverviewRequest request);
"/portfolioposition/{ssn}"
Stream GetPortfolioPosition(string ssn, Kodi.Kodiak.OrderEntry.Retail.Contracts.PortfolioPositionRequest request);
"/portfoliotransactions/{ssn}"
Stream GetPortfolioTransactions(string ssn, Kodi.Kodiak.OrderEntry.Retail.Contracts.PortfolioTransactionsRequest request);
"/accountbalance/{ssn}"
Stream GetAccountBalance(string ssn, Kodi.Kodiak.OrderEntry.Retail.Contracts.AccountBalanceRequest request);
"/searchorders/{ssn}"
Stream SearchOrders(string ssn, Kodi.Kodiak.OrderEntry.Retail.Contracts.OrderSearchRequest request);
"/searchtrades/{ssn}"
Stream SearchTrades(string ssn, Kodi.Kodiak.OrderEntry.Retail.Contracts.TradeSearchRequest request);
Prerequisites
What do we need from 5D?
5D Endpoints - Paths to
PerformanceService
andExternalQueryService
Authorization/user configuration - The identity of windows user needed to call those services. This user is specified in appSettings.config as RetailsCustomerUserId
Setup
The Kodi.Kodiak.OrderEntry.Retail.dll file needs to be present in C:/KodiakOrderEntryServer
A correct version of Kodi.Kodiak.Adapters.Libra.dll (above 3.1.1.52) needs to be present in C:/KodiakOrderEntryServer
Configuration
The following configuration files need to be set
1: config/serviceconfig/CustomServices.config
This file contains the depency injection cofiguration for the service.
<object id="RetailOrderInstructionService" type="Kodi.Kodiak.Services.RetailOrderInstructionService, Kodi.Kodiak.OrderEntry.Retail" singleton="false" scope="request">
<property name="LibraExtSystemId" value="Libra"/>
<property name="DefaultUserIdForRetailCustomers" value="${RetailCustomersUserId}"/>
<property name="UserRepository" ref="UserRepository"/>
<property name="CustomerRepository" ref="CustomerRepository"/>
<property name="RetailKodiakService" ref="RetailKodiakService"/>
<property name="RetailOrderInstructionEntryService" ref="RetailOrderInstructionEntryService"/>
<property name="RetailSearchService" ref="RetailSearchService"/>
<property name="PortfolioService" ref="PortfolioServiceImplementation"/>
<property name="AccountService" ref="AccountServiceImplementation"/>
</object>
2: config/serviceconfig/system.servicemodel.services.config
This setting needs to be added here for the Wcf system to load the service.
<!-- For use with Retail DMA -->
<service behaviorConfiguration="ServiceBehaviorBasic" name="RetailOrderInstructionService">
<endpoint address="" binding="webHttpBinding" contract="Kodi.Kodiak.Services.IRetailOrderInstructionService" behaviorConfiguration="rest" />
</service>
3: Config/Spring/Kodi.Kodiak.OrderEntry.Retail.config
This file contains configuartion for RetailKodiakService, RetailOrderInstructionService and RetailSearchService
4: Kodi.Kodiak.WindowsServices.OrderEntryServer.exe.config
This line needs to be present under the context node of spring.
5: config/Adapters.config
The OrderValidationAdapterRetail needs to be configured. OrderValidationAdapterRetail uses PortfolioServiceImplementationand AccountServiceImplementation which are defined in Spring/Kodi.Kodiak.Allocations.config. Those nodes use PortfolioPositionAdapter and AccountBalanceAdapter are also configured in Adapters.config.
6: config/environment/appSettings.config
An important setting here is RetailCustomerUserId which maps to the user which will be used when creating orders and calling libra services.
7: config/serviceconfig/system.servicemodel.client.config
This file contains the web service client configuration used to call Libra services.
8: config/serviceconfig/system.servicemodel.bindings.config
The client config in section 7 need wsHttpBindings.