Hi, Readers.
Today, I would like to talk about SessionSettings Data Type in Business Central.
SessionSettings data type is a complex data type for passing user personalization settings for a client session as an object. The object contains properties that correspond to the fields in the system table 2000000073 User Personalization, including: App ID, Company, Language ID, Locale ID, Profile ID, Scope, and Time Zone.
Table 2000000073 “User Personalization”:

You can force Business Central to run the “User Personalization” table by adding the ?table=2000000073 parameter to the URL, such as in the following example:
https://businesscentral.dynamics.com/d8f36038-1f93-4543-affc-5dc92b6ee871/Sandbox?table=2000000073


Sample Data:
User SID | User ID | Full Name | Profile ID | App ID | Scope | Language ID | Language | Company | Locale ID | Region | Time Zone | License Type | Customization Status | Role | System ID | Created At | Created By | Modified At | Modified By |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
{fe0d7bcc-ac1c-4763-8bad-2189b49c92b5} | YZHU 1 | YUN ZHU | BUSINESS MANAGER | {437dbf0e-84ff-417a-965d-ed2bb9650972} | Tenant | 1041 | Japanese (Japan) | My Company | 1041 | Japanese (Japan) | Transbaikal Standard Time | Full User | Recompilation Needed | Business Manager | {d67b3a99-00be-eb11-9f0a-002248571331} | 5/26/2021 5:58 PM | {fe0d7bcc-ac1c-4763-8bad-2189b49c92b5} | 5/26/2021 5:58 PM | {fe0d7bcc-ac1c-4763-8bad-2189b49c92b5} |
{4e0a9bba-d205-4034-989b-cc8f172c4b11} | YZHU | ZHU YUN | BUSINESS MANAGER | {437dbf0e-84ff-417a-965d-ed2bb9650972} | Tenant | 0 | My Company | 0 | Transbaikal Standard Time | Full User | Recompilation Needed | Business Manager | {627b3793-00be-eb11-9f0a-002248571331} | 5/26/2021 5:58 PM | {4e0a9bba-d205-4034-989b-cc8f172c4b11} | 5/26/2021 5:58 PM | {4e0a9bba-d205-4034-989b-cc8f172c4b11} | ||
{36cbf404-7136-419c-a469-f2d9849503cc} | ADMIN | MOD Administrator | BUSINESS MANAGER | {437dbf0e-84ff-417a-965d-ed2bb9650972} | Tenant | 1033 | English (United States) | My Company | 1033 | English (United States) | Transbaikal Standard Time | Full User | Updated | Business Manager | {a87541d2-e5b1-eb11-9b52-002248571331} | 5/11/2021 8:17 AM | {36cbf404-7136-419c-a469-f2d9849503cc} | 5/26/2021 11:21 AM | {36cbf404-7136-419c-a469-f2d9849503cc} |
You can use the AL methods of the SessionSettings data type to get, set, and send the user personalization settings for the current client session.
The following methods are available on instances of the SessionSettings data type:
Method name | Description |
---|---|
Init() | Populates the instance of a SessionsSettings with the current client user’s personalization properties (such as Profile ID and Company) that are stored in the database. |
Company([String]) | Gets or sets the company property in a SessionSettings object. |
LanguageId([Integer]) | Gets or sets the language ID property in a SessionSettings object. |
LocaleId([Integer]) | Gets or sets the locale ID property in a SessionSettings object. |
ProfileAppId([Guid]) | Gets or sets the ID of an extension, which provides a profile, in a SessionSettings object. |
ProfileId([String]) | Gets or sets the profile ID property in a SessionSettings object. |
ProfileSystemScope([Boolean]) | Gets or sets the profile scope property in a SessionSettings object. |
TimeZone([String]) | Gets or sets the time zone property in a SessionSettings object. |
RequestSessionUpdate(Boolean) | Passes a SessionSettings object to the client to request a new session that uses the user personalization properties that are set in the object. The current client session is abandoned and a new session is started. |
Next, let us try it.
1. Get the user personalization settings
SessionSettings.Init Method: Populates the instance of a SessionsSettings with the current client user’s personalization properties (such as Profile ID and Company) that are stored in the database.
Syntax: SessionSettings.Init()
The method gets the data from the following fields in system table 2000000073 User Personalization: App ID, Company, Language ID, Locale ID, Profile ID, Scope, and Time Zone. In the SessionSettings object, the data is stored in properties that correspond to the fields of the system table.
After you call the Init method, you can get the values in the object by calling the following methods:
Let’s see a simple example:



Test Video:
2. Set the user personalization settings
SessionSettings.RequestSessionUpdate Method: Passes a SessionSettings object to the client to request a new session that uses the user personalization properties that are set in the object. The current client session is abandoned and a new session is started.
Syntax: SessionSettings.RequestSessionUpdate(saveSettings: Boolean)
saveSettings: Boolean: Specifies whether to save the personalization properties in the SessionSettings object to the table 2000000073 User Personalization in the database for the current client user. true saves the settings; false does not. If you set this parameter to true, before sending the request to the client, the server instance will store the property values of the SessionSettings object to the corresponding fields in the table 2000000073 User Personalization. If you set this to false, when the new client session is closed, the next time the user signs in, the session will return to the previous personalization settings. This enables you to use the SessionSettings object to temporarily change the personalization settings for the current session.
Let’s see a simple example: This example uses the Init method to create a SessionSettings object that includes the current client user’s personalization settings from the database, and then uses the LanguageId method and LocaleId method to set the new language and region.
Note: The Init method is useful before calling the RequestSessionUpdate method to ensure that all properties are initialized before sending the request to the server instance to start a new client session.


Test Video:
You can refer to the above method to do a quick switch between Company, Profile ID, Time Zone, etc.
Source Code:
codeunit 50100 GetSessionInfo
{
trigger OnRun()
var
MySessionSettings: SessionSettings;
Company: Text[30];
LanguageID: Integer;
LocalID: Integer;
ProfileAppID: Guid;
ProfileID: Code[30];
ProfileSystemScope: Boolean;
Timezone: Text[180];
Msg: Label 'The Company is ''%1''.\The LanguageID is ''%2''.\The LocalID is ''%3''.\The ProfileAppID is ''%4''.\The ProfileID is ''%5''.\The ProfileSystemScope is ''%6''.\The Timezone is ''%7''.\';
begin
MySessionSettings.Init();
Company := MySessionSettings.Company;
LanguageID := MySessionSettings.LanguageId;
LocalID := MySessionSettings.LocaleId;
ProfileAppID := MySessionSettings.ProfileAppId;
ProfileID := MySessionSettings.ProfileId;
ProfileSystemScope := MySessionSettings.ProfileSystemScope;
Timezone := MySessionSettings.TimeZone;
Message(Msg, Company, LanguageID, LocalID, ProfileAppID, ProfileID, ProfileSystemScope, Timezone);
end;
}
codeunit 50101 SessionUpdateChangeToJapanese
{
trigger OnRun()
var
MySessionSettings: SessionSettings;
begin
MySessionSettings.Init();
MySessionSettings.LanguageId(1041);
MySessionSettings.LocaleId(1041);
MySessionSettings.RequestSessionUpdate(true);
end;
}
codeunit 50102 SessionUpdateChangeToEnglish
{
trigger OnRun()
var
MySessionSettings: SessionSettings;
begin
MySessionSettings.Init();
MySessionSettings.LanguageId(1033);
MySessionSettings.LocaleId(1033);
MySessionSettings.RequestSessionUpdate(true);
end;
}
pageextension 50136 BusinessManagerRCExt extends "Business Manager Role Center"
{
actions
{
addafter(Action41)
{
group("ZY New Menu")
{
Caption = 'ZY New Menu';
action("GetSessionInfo")
{
ApplicationArea = Basic, Suite;
Caption = 'Get Session Info';
Image = Change;
RunObject = codeunit GetSessionInfo;
}
action("ChangeToJapanese")
{
ApplicationArea = Basic, Suite;
Caption = 'Change to Japanese';
Image = Change;
RunObject = codeunit SessionUpdateChangeToJapanese;
}
action("ChangeToEnglish")
{
ApplicationArea = Basic, Suite;
Caption = 'Change to English';
Image = Change;
RunObject = codeunit SessionUpdateChangeToEnglish;
}
}
}
}
}
Find out more about SessionSettings Data Type from Microsoft Docs.
END
Hope this will help.
Thanks for reading.
ZHU
コメント