and more in a single search tool across platforms. Read the announcement here. |
12/26/2023 03:07 PM
Using an advanced query in the systemusername generation rule, how can we pad numbers to systemusername if the character count is say less than 4? I understand I can use RPAD to do this, but that also truncates values if the string is greater than the minimum you have specified.
12/26/2023 05:37 PM
Share current configuration.
12/27/2023 06:20 AM
Current configuration is:
First 5 letters of lastname
First letter of firstname
First letter of middlename
Auto Increment number for duplicates
We need to add a clause to ensure this does not produce a systemusername with less than 4 characters, if so, we need to add numbers in order to reach 4 characters.
12/27/2023 06:59 AM
Share actual configuration implemented in saviynt
12/27/2023 07:42 AM
concat(RPAD((LEFT(REPLACE(users.firstname,' ',''), 5)),(LEFT(REPLACE(users.lastname,' ',''), 1)),(LEFT(REPLACE(users.middlename,' ',''), 1))), 4, '0') # concat(RPAD((LEFT(REPLACE(users.firstname,' ',''), 5)),(LEFT(REPLACE(users.lastname,' ',''), 1)),(LEFT(REPLACE(users.middlename,' ',''), 1))), 4, '0') + 1
This would truncate systemusername if longer than 4 characters
12/27/2023 09:41 AM
LEFT(
CONCAT(
LEFT(users.lastname, 5),
LEFT(users.firstname, 1),
LEFT(users.middlename , 1),
LPAD(FLOOR(RAND() * 10000), 5, '0')),5)
12/27/2023 11:59 AM
This generates the following systemusername:
LEFTCONCATLEFTlastname5LEFTfirstname1LEFTmiddlename1LPADFLOORRAND100005051
12/27/2023 01:56 PM
The following works for systemusernames less than 4 characters but truncates the result if it is larger than 4 characters:
LEFT((CONCAT(LEFT(users.lastname, 5), LEFT(users.firstname, 1), LEFT(users.middlename , 1), LPAD(FLOOR(RAND() * 1000), 4, '0'))), 4)
12/27/2023 02:19 PM
Great it was just spacing and new line issue
12/28/2023 09:59 AM
But this still truncates the systemusername if it is larger than 4 characters
01/02/2024 10:49 AM
Any help with this? This still truncates the systemusername if it is larger than 4 characters and fails entirely if any value such as middlename is null
01/02/2024 11:05 AM
IF(LENGTH(CONCAT(LEFT(users.lastname, 5), LEFT(users.firstname, 1), LEFT(users.middlename , 1))) >= 4, CONCAT(LEFT(users.lastname, 5), LEFT(users.firstname, 1), LEFT(users.middlename , 1)), LEFT(CONCAT(LEFT(users.lastname, 5), LEFT(users.firstname, 1), LEFT(users.middlename , 1), LPAD(FLOOR(RAND() * 1000), 4, '0')), 4) )
01/04/2024 06:37 AM
This no longer truncates if value is greater than 4 but still fails if a value is missing like middlename. Some users will not have this value, is there a check we can do in the query?
01/04/2024 07:12 AM
IF(LENGTH(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1))) >= 4, CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1)), LEFT(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1), LPAD(FLOOR(RAND() * 1000), 4, '0')), 4) )
01/08/2024 10:40 AM
Did above one worked ?
01/08/2024 10:41 AM
IF(LENGTH(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1))) >= 4, CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1)), LEFT(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1), LPAD(FLOOR(RAND() * 1000), 4, '0')), 4) )###IF(LENGTH(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1))) >= 4, CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1)), LEFT(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1), LPAD(FLOOR(RAND() * 1000), 4, '0')), 4) )###IF(LENGTH(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1))) >= 4, CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1)), LEFT(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1), LPAD(FLOOR(RAND() * 1000), 4, '0')), 4) )###IF(LENGTH(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1))) >= 4, CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1)), LEFT(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1), LPAD(FLOOR(RAND() * 1000), 4, '0')), 4) )###IF(LENGTH(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1))) >= 4, CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1)), LEFT(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1), LPAD(FLOOR(RAND() * 1000), 4, '0')), 4) )
01/08/2024 03:30 PM
The solution provided does not work for duplicates, in the logs I can see it just generates the same name five times and then fails since it is duplicate
01/08/2024 10:34 AM
How can this be modified to auto increment for duplicates? The below has been tried but the systemusername generated is '1.0'
IF(LENGTH(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1))) >= 4, CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1)), LEFT(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1), LPAD(FLOOR(RAND() * 1000), 4, '0')), 4) ) ### IF(LENGTH(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1))) >= 4, CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1)), LEFT(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1), LPAD(FLOOR(RAND() * 1000), 4, '0')), 4)) +1
01/08/2024 06:09 PM
IF(LENGTH(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1))) >= 4, CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1)), LEFT(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1), LPAD(FLOOR(RAND() * 1000), 4, '0')), 4) ) ### IF(LENGTH(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1))) >= 4, CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1)), LEFT(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1), LPAD(FLOOR(RAND() * 1000+1), 4, '0')), 4))
01/09/2024 12:16 PM
I am seeing the same issue, the logs are producing the same systemusername in the second case and thus failing.
01/09/2024 06:41 PM
IF(LENGTH(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1))) >= 4, CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1)), LEFT(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1), LPAD(FLOOR(RAND() * 1000), 4, '0')), 4) ) ### IF(LENGTH(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1))) >= 4, CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1)), LEFT(CONCAT(LEFT(ifnull(users.lastname,''), 5), LEFT(ifnull(users.firstname,''), 1), LEFT(ifnull(users.middlename,'') , 1), LPAD(FLOOR(RAND() * 100+1), 4, '0')), 4))
01/10/2024 09:38 AM
01/10/2024 06:31 PM