Blog from December, 2015

One of the most basic things you probably want to accomplish using the BFS API is to create a new account in BFS for a certain user. In this blog post I will demonstrate how to accomplish this given a few circumstances.

In order to use CreateAccounts you need to provide three inputs:

  • Owner (this is the GUID, unique ID of the Legal Entity who should own the account)
  • AccountTypeKey (this is a unique string value representing a certain account type)
  • BaseCurrencyCode (this tells BFS which currency to use to calculate performance for the account among other things)

Obviously the first problem to solve is getting the unique ID for the Legal Entity. Unique ID's in BFS are called BrickId's. At the time of this writing there is no way to view the BrickId for a LegalEntity in BFS (this is being added shortly) so the only way to do this is via the API method GetPersons.

In my instance of BFS I have a default user with username bnuser and I would like to get the BrickId of this user via GetPersons, see code below.

C# - Get legal entity details using username as input
var client = new BFSServiceReference.bfsapiSoapClient();
var credentials = new BFSServiceReference.Credentials()
{
    UserName = bfsusername, //Username of administrative user in your instance of BFS
    Password = bfspassword, //Password of the administrative user in your instance of BFS
};
var persons = client.GetPersons(new BFSServiceReference.GetPersonRequest()
{
    Credentials = credentials,
    identify = bfsidentifier, //Identifier is a unique token for your instance of BFS  
 
    Args = new BFSServiceReference.GetPersonArgs()
    {
      UserName  = "bnuser",
    },
   
    Fields = new BFSServiceReference.GetPersonFields()
    {
        BrickId = true,
        UserName = true,
        FirstName = true,
        LastName = true,
    },
});
foreach (var c in persons.Result)
{
    Console.WriteLine(c.BrickId + "," + c.FirstName + "," + c.LastName);
}

I now have the BrickId for the user with username "bnuser" and now I need the AccountTypeKey. This I can find within the GUI of BFS by navigating to SystemData->AccountTypes.

The alternative is to get this using the API method GetAccountTypes with the code below.

C# - Get all account types from a BFS instance
//Use the GetAccountTypes method to get all AccountTypes in the BFS instance and write
//the information in the console
var client = new BFSServiceReference.bfsapiSoapClient();
var credentials = new BFSServiceReference.Credentials()
{
    UserName = bfsusername, //Username of administrative user in your instance of BFS
    Password = bfspassword, //Password of the administrative user in your instance of BFS
};
var accounttypes = client.GetAccountTypes(new BFSServiceReference.GetAccountTypeRequest()
{
    Credentials = credentials,
    identify = bfsidentifier, //Identifier is a unique token for your instance of BFS       
    Fields = new BFSServiceReference.GetAccountTypeFields()
    {
        BrickId = true,
        Key = true,
    },
});
foreach (var c in accounttypes.Result)
{
    Console.WriteLine(c.BrickId + "," + c.Key);
}
Result in console
83adad04-02db-4dae-a5da-50b15d5fedbc,CapitalInsuranceAccount
95e3bf07-3f18-4f35-9365-1a8339493e78,HouseAccountingAccount
9c296549-41c9-4aef-bd48-e9602584f098,IPSAccount
2848b95f-8bf4-462e-8db3-2020f049e184,HouseSystemAccount
4d639562-1234-4b05-ba97-f4da03542278,HoldingAccount
20af188c-f6be-4fb7-9ae1-9d579143ea32,InheritedIRAAccount
8364af96-6a26-45a9-8e8e-3a3eaf91029e,FundAccount
bc610399-c33f-4681-a443-8886947692d8,ISKAccount
f2fa06d2-ff2c-4d4a-9a21-cb77157f41c3,CounterpartyAccount
cdc125ed-78c6-41a0-b385-f253144539ed,HouseCustodyAccount

For the currency code I will navigate to System Data -> Currencies in the GUI of BFS to see what currencies are available.

I will use SEK as my currency of choice.

With the code below I will create the new account and write the returned account number in the console.

C# - Create a new account with CreateAccount()
//Create a new account with the CreateAccount method
var client = new BFSServiceReference.bfsapiSoapClient();
var credentials = new BFSServiceReference.Credentials()
{
    UserName = bfsusername, //Username of administrative user in your instance of BFS
    Password = bfspassword, //Password of the administrative user in your instance of BFS
};
var response = client.CreateAccounts(new BFSServiceReference.CreateAccountRequest()
{    
    Credentials = credentials,
    
    identify = bfsidentifier, //Identifier is a unique token for your instance of BFS
    Entities = new[]
    {
        new Account()
        {
            AccountTypeKey = "HoldingAccount",
            Owner = bnuserbrickid,
            OwnerAccountLabel = "Test",
            BaseCurrencyCode = "SEK",
            ExternalReference = "123456789",
            AccountStatus = 1,
            RequestReference = "My system reference"
        }
    }
    
});
foreach (var c in response.Entities)
{
    Console.WriteLine(c.AccountNo);
}
Result in console
10000685

And this is how it looks in BFS.