ITQuants blog

By Philippe Bonneau on 4/29/2016 11:35 AM

In my previous post, I've described how to update third parties using the API, as it was done by several Misys clients. This time, continuing on this subject, I will explain how to update third parties, using XML files. I remembered that I've implemented this solution at least one time by a client, in a web service. Third parties were updated using the Sophis xml definition, that you can find in the party.xsd file stored in the schema folder. The web service implementation is already described more in details in this post : "How to develop a IIS webservice using the API". Unfortunately, the C++ code is not anymore maintained in the v7: C++ header files that were present in the Low Level Toolkit folders are not delivered anymore. A workaround exists, this is the subject of this post of how to replace this code.

By Philippe Bonneau on 4/28/2016 6:11 PM

For clients on which the Sophis Risque or Sophis Value was already installed, during the migration, it is quite easy to detect which modifications have to be done when comparing the code. But this step is only one of the different tasks that have to be done. For example, almost nothing was changed on the interface CSRThirdParty (eq CSMThirdParty in C#) concerning the third parties (entities, depositaries, counterparties, brokers...). But unlucky, when trying to use some piece of code that permits to update the external reference, the domiciliation, the broker or whatever which field, you will got an exception in v7, indicating that the method is not implemented. This is a well known problem on each client migration.

By Philippe Bonneau on 2/2/2016 1:49 PM

Some days ago, I talked about the possibility to use the Sophis.Core.Data, Sophis.Event.Core and Sophis.Event.Risque assemblies, in order to listen to specific events for toolkit columns performance optimizations. I've tried to use the same mechanism in a batch, using the following code :

class Program
    static void ProcessEvent(Sophis.Event.IEvent myEvent, ref bool bProcess)
    static void Main(string[] args)
        CSMApi _api = new CSMApi();
        catch (Exception e)
        Sophis.Event.SophisEventHandler _handler = new Sophis.Event.SophisEventHandler(ProcessEvent);
        Sophis.Event.SophisEventManager.Instance.AddHandler(_handler, Sophis.Event.Thread.MainProcess, Sophis.Event.Layer.Model);
        bool _stop = false;
        while (!_stop)

Unfortunately, this code does not work as is. Putting a break point in the ProcessEvents method shows that it is never called, even if messages are received and processed. The goal of this post is to explain how it works and what it is missing.

By Philippe Bonneau on 12/11/2015 11:34 AM

In most cases, when portfolio columns are toolkitted, they use an internal memory cache to avoid SQL queries on the database when the portfolio lines are displayed (on scrolling or what ever). In order to refresh this memory cache, the Sophis API provides a method, CSRPortfolioColumn::GetRefreshVersion, which is incremented on some actions, for instance when a deal is inserted. Most toolkit implémentations use only this flag to refresh the cache. Unfortunately, testing only the version flag could generate some freeze, when a lot of a deals are inserted and SEC events are received. The goal of this post is to propose a solution in v7 to optmize the refresh of the cache.

By Philippe Bonneau on 3/12/2015 12:28 AM

Since one of my conversation between Alexis de Bernis, me and a Misys consultant was forwarded to several clients by Misys, the best thing I can do is perhaps to publish it. The topic was analyzed and resolved by Alexis, who I thank again for his judicious remark. The description concerns the way we have to use the CSMExtraction, and most of the class of the C# API provided by Misys for their product Fusion Capital Sophis.

By Philippe Bonneau on 4/3/2014 2:29 PM

More than one year ago, I wrote an article on what to do when a process is frozen, and how to dump the memory and registers into a .dmp file in order to use it after with Visual Studio (whatever the version).

But, unfortunately, sometimes the process crashes and disappears from the task of processes provided by taskmgr.

By chance, there is a way in Windows to declare an executable, known as JIT Debugger, that will be called when an unhandled exception is detected. The executable procdump mentioned in the previous post can be used. This post will describe how to install it and will show how to use the resulting .dmp file.

By Philippe Bonneau on 9/14/2012 2:47 PM

Familiar to click simply on the menu item on C# .Net 2.0, during the design, in order to implement the corresponding method, I was a few confused by the way to implement it on .Net 4.0, by using the WPF.

This post will give the solution on how to declare WPF Menuitems in order to be able to use them in the callback.

By Philippe Bonneau on 9/14/2012 1:34 PM

The obective of this post is to describe the properties to set on the different WPF controls in order to have:

- a menu which has the same width as the application (and not restricted to a default width)

- having a chart control which resizes inside the client area, without overlapping the menu control

By Philippe Bonneau on 9/13/2012 1:08 PM

Since it tooks me a few minutes to retrieve the right proeprties to set in order to have a main menu, this article describes exactly what to do to have:

- no margin between the menu and the title bar

- have the main toolbar menu that is resized with the main window

By Philippe Bonneau on 4/12/2012 4:39 PM
Currently making extractions of messages that should contain some keywords, sometimes the number of occurrences retrieved is too big. The only way is either to redefine the keywords (HI% could become HIGH for instance) or to count the number of words between two keywords.
By Philippe Bonneau on 3/7/2012 11:34 AM
Just to give a sample on how to use it on classes containing several fields as keys. This sample is using as key a string field and datetime one.
By Philippe Bonneau on 3/2/2012 12:54 PM

Working on a project on which I have to analyze Lotus documents, I have to make some extraction in order to insert them into one Oracle database.

For this stuff, I'm using the .Net Interop.Domino driver which pretty fine to parse all documents of a ".nsf" file.

By Philippe Bonneau on 2/22/2012 2:33 PM
.Net 3.5 introcuces new options when compiling the C# code. I discovered it when I tried to compile the smartthreadpool library provided on CodeProject. One of the new option is the lambda operator: =>

Search blog