The Full Name algorithm (introduced in Masking Engine version 18.104.22.168) has a logic of recognizing the parts of the input related to the First and Last names, as well as treating the particles (which are imported from the chained Last Name algorithm instance). Last Name also has a logic of limiting the number of masked first names (removing the rest), as well as smart trimming of the result (masked) output to the required length.
After distinguishing parts of the input string - Full Name algorithm feeds the single words from the first name part (which also includes middle names, treated same as first names) to the instance of the First Name algorithm and the whole last name part to the instance of the Last Name algorithm. Then it combines the masking results, according the embedded logic and the configuration.
If input string contains only single word - this word is considered as a first name or last name (depending on the Consider Single Word Input as Last Name flag) and forwarded for masking to corresponding chained algorithm instance. Single word input is always masked, even if contains configured particle.
Main features of the Full Name Framework:
- Deterministic output: The masked result for each input is consistent when using the same algorithm key, same configuration and same chained algorithm instances.
- Not unique: The masked result might be the same for different inputs.
- Garbage in garbage out: the algorithm returns the unmasked input / null / empty string if input is one of the following: null, empty string “”, white spaces only “ ”, single not alphanumeric symbol (for example “!”).
- Single word input: considered either as a Last Name (default) or as a First Name (even if configured in one of the particles files).
- When particle is configured in both particles files: the remove action takes precedence.
- Multiple first names: masks only first N names (1-4, as configured, default = 2), the rest are ignored.
- Full Name Convention: if configured last name separator is detected or configured convention is “last-first-middle” than detects an input as last-first-middle, otherwise first-middle-last (default). Heading/Trailing white spaces are not preserved.
- Smart trim: if trimming of the masked value is required it's done in a way to keep the realistically looking full name as long as possible. For instance: first we trim the heading/trailing preserved particles. If not enough - abbreviating the masked first/middle names (one by one, starting the last one). If still no enough - removing the particles prior to the last name, etc.
Below is an example of smart trim.
Let's suppose our masked result (prior to checking of the maxLength) is:
“President George Herbert Walker Van Bush Jr.”
Requirement for the chained instances for First Name and Last name masking:
- should be existing extensible algorithm instance, masking the String type.
Although it can be any String type extensible algorithm instance, it is recommended using the instances based on the Name framework
Creating a Full Name Algorithm via UI¶
In the upper right-hand corner of the Algorithm tab, click Add Algorithm.
Choose Secure Lookup Algorithm. The Create SL Algorithm pane appears.
Enter an Algorithm Name. (Required)
This MUST be unique on the Masking Engine.
Enter a Description. (Optional)
Choose the First Name Algorithm. (Required) In the dropdown menu you will be suggested to choose from the existing extensible algorithms of String type.
Choose the Last Name Algorithm. (Required) In the dropdown menu you will be suggested to choose from the existing extensible algorithms of String type.
Choose the Maximum First Names configuration. (Optional. Integer. min value = 1, max value = 4, default = 2) Total number of first/middle names to be masked. The rest would be ignored.
Choose the Maximum Masked Full Name Length configuration. (Optional. Integer. Default is 0)
This number should be >= 0 (i.e. not negative). That's the maximum number of characters masked result should fit. I.e. masked result is trimmed (please find above an explanation on smart Full Name trimming) to that length. Value 0 means length is unlimited.s
We're also trying to detect the length of the destination field. Some Data Sources provide that value, while others don't. For example: if Data Source provides value 10 for the destination column length and current configuration field is set to 0 or any value longer than 10 - the shortest value wins, i.e. in this example masked result would be trimmed to 10 characters.
Specify a default Full Name Convention. (Optional. Enum. Default: "First-Middle-Last") Drowpdown menu provides choice of 2 values:
This configurations helps to the Full Name algorithm to distinguish between first name(s) and last name, if Last Name Separator(s) are not configured or not detected in the input string.
Choose the Consider Single Word Input as Last Name. (Optional. Boolean. Default is true) If chosen (default case) - consider the single word input as a last name. Otherwise as a first name.
Configure Last Name Separators (Optional. List
. Default: contains comma ',') Here you can specify comma separated single punctuation marks (but hyphen '-' and dot '-', which are reserved for another logic) which will serve for identifying the last name in the input. First identified separator makes that distinguishing, rest are ignored. To choose comma ',' there is a separate field aside Include comma. By default comma is included as a separator.
Here is an example of how last name separator works:
Let's suppose our configured separators are comma ',' and colon ':'.
Input: "dela Cruz, Maria Cristina: Manansala"
The first detected separator (framework reads the input left to right) is after word "Cruz".
So "dela Cruz" will be detected as a last name part, and "Maria Cristina: Manansala" as a first names.
Masking result would be in the same order with the same separator, for example: "Maritnas, Antonio Stephan".
When you are finished, click Save.
For the description of any configurable field you can open a popup window by pressing on the blue "? Learn More" link in the upper right corner:
For information on creating Full Name algorithms through the API, see API Calls for Creating Algorithms - Full Name.