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/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.
<!-- Retail Customers --> <add key="RetailCustomersUserId" value="68" /> <add key="RetailCustomersAllocateWhenFilled" value="true" /> <add key="RetailCustomersDirectToMarket" value="true" /> <add key="RetailCustomersBypassBackoffice" value="true" />
2: Kodi.Kodiak.WindowsServices.OrderEntryServer.exe.config
This line needs to be present under the context node of spring.
<resource uri="~/Config/Spring/Kodi.Kodiak.OrderEntry.Retail.config" />
3: Config/Spring/Kodi.Kodiak.OrderEntry.Retail.config
This file contains configuartion for RetailKodiakService, RetailOrderInstructionService and RetailSearchService
4: 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>
5: config/serviceconfig/system.servicemodel.client.config
This file contains the web service client configuration used to call Libra services.
<endpoint address="http://urltolibraserver/Libra.Services/Assetmanager/PerformanceService.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IPerformanceService" contract="LibraServices.IPerformanceService" name="WSHttpBinding_IPerformanceService"> <!-- <identity> --> <!-- <userPrincipalName value="srv.iisapppool_test@fjaf.internal" /> --> <!-- </identity> --> </endpoint> <endpoint address="http://urltolibraserver/Libra.Services/Portfolio/ExternalQueryService.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IExternalQueryService" contract="LibraServicesExternal.IExternalQueryService" name="WSHttpBinding_IExternalQueryService"> <!-- <identity> --> <!-- <userPrincipalName value="srv.iisapppool_test@fjaf.internal" /> --> <!-- </identity> --> </endpoint>
6: 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>