Getting the Current User in Creatio (formerly bpm’online)

There are many cases when you need to know who the current user is in bpm’online. Whether this is in client-side code on a form, or in server-side code in a process or a configuration service.

Getting the Current User in Client-Side Code

The current user is stored in Terrasoft.SysValue as CURRENT_USER. This is a global static script which can be obtained at at at point (even just typing it into the console).

var user = Terrasoft.SysValue.CURRENT_USER;

// this object has two properties
var userId = user.value; // the user's ID
var name = user.displayValue; // the user name

Note, this is the user’s ID & username from SysAdminUnit, not the user’s contact ID. If you need the user’s contact, you can get it using the following (this is usually what you really want is the user’s contact):

var userContactId = Terrasoft.SysValue.CURRENT_USER_CONTACT.value;

// or the user's account, if needed
var userAccountId = Terrasoft.SysValue.CURRENT_USER_ACCOUNT.value;

Obviously, the displayName containing the contact’s name value is available there as well.

Getting the Current User in Server-Side C# Code

If you need the current user in C# code, this is available in the UserConnection as CurrentUser. Getting the UserConnection can vary depending on where your C# code is.

In a Script Task of a Process:

var currentUser = UserConnection.CurrentUser;
var userId = currentUser.Id;
var userName = currentUser.Name;

// or current user contact
var contactId = currentUser.ContactId;

Or from a configuration service:

var appConnection = HttpContext.Current.Application["AppConnection"] as AppConnection;
var currentUser = appConnection.SystemUserConnection.CurrentUser;

Note, that the object you’re returned from UserConnection.CurrentUser is of type SysUserInfo. The SysUserInfo is just a C# object (not an entity that you’ll see in the database or configuration), implemented in Terrasoft.Core.dll. It inherits from SysAdminUnit and adds five additional properties to the SysAdminUnit data, which are: TimeZone, PageRowsCount, Culture, ClientIP, and DateTimeFormatCode. Other than those five properties, you’ll have the properties from SysAdminUnit available in this object.

Want content like this delivered to your inbox? Sign up for our newsletter!

Ryan Farley

Ryan Farley is the Director of Development for Customer FX and creator of He's been blogging regularly about SalesLogix, now Infor CRM, since 2001 and believes in sharing with the community. His new passion for CRM is Creatio, formerly bpm'online. He loves C#, Javascript, web development, open source, and Linux. He also loves his hobby as an amateur filmmaker.

Submit a Comment

Your email address will not be published. Required fields are marked *