Skip to content

Commit fc7cfde

Browse files
committed
update T2E users as if they are the linked identity type
1 parent 4ba8330 commit fc7cfde

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

user_sync/app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ def begin_work(config_loader):
457457
raise AssertionException(
458458
"Failed to enable dynamic group mappings. 'dynamic_group_member_attribute' is not defined in config")
459459
primary_name = '.primary' if secondary_umapi_configs else ''
460-
umapi_primary_connector = user_sync.connector.umapi.UmapiConnector(primary_name, primary_umapi_config)
460+
umapi_primary_connector = user_sync.connector.umapi.UmapiConnector(primary_name, primary_umapi_config, True)
461461
umapi_other_connectors = {}
462462
for secondary_umapi_name, secondary_config in six.iteritems(secondary_umapi_configs):
463463
umapi_secondary_conector = user_sync.connector.umapi.UmapiConnector(".secondary.%s" % secondary_umapi_name,

user_sync/connector/umapi.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class UmapiConnector(object):
4646
# class-level flag that determines if we are creating a UMAPI connection
4747
# set to False if using in a unit test
4848
create_conn = True
49-
def __init__(self, name, caller_options):
49+
def __init__(self, name, caller_options, is_primary=False):
5050
"""
5151
:type name: str
5252
:type caller_options: dict
@@ -57,6 +57,7 @@ def __init__(self, name, caller_options):
5757
if self.trusted is None:
5858
self.trusted = False
5959
self.uses_business_id = caller_config.get_bool('uses_business_id', True)
60+
self.is_primary = is_primary
6061
builder = user_sync.config.OptionsBuilder(caller_config)
6162
builder.set_string_value('logger_name', self.name)
6263
builder.set_bool_value('test_mode', False)

user_sync/rules.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import user_sync.connector.umapi
2828
import user_sync.error
2929
import user_sync.identity_type
30+
from user_sync.connector.umapi import UmapiConnector
3031
from user_sync.post_sync.manager import PostSyncData
3132
from user_sync.helper import normalize_string, CSVAdapter, JobStats
3233

@@ -113,6 +114,7 @@ def __init__(self, caller_options):
113114
self.primary_users_created = set()
114115
self.secondary_users_created = set()
115116
self.updated_user_keys = set()
117+
self.primary_users_by_email: dict[str, dict] = {}
116118

117119
# stray key input path comes in, stray_list_output_path goes out
118120
self.stray_key_map = {}
@@ -912,7 +914,7 @@ def update_umapi_user(self, umapi_info, user_key, attributes_to_update=None, gro
912914
commands.add_groups(groups_to_add)
913915
return commands
914916

915-
def update_umapi_users_for_connector(self, umapi_info, umapi_connector):
917+
def update_umapi_users_for_connector(self, umapi_info, umapi_connector: UmapiConnector):
916918
"""
917919
This is the main function that goes over adobe users and looks for and processes differences.
918920
It is called with a particular organization that it should manage groups against.
@@ -950,6 +952,9 @@ def update_umapi_users_for_connector(self, umapi_info, umapi_connector):
950952
# Walk all the adobe users, getting their group data, matching them with directory users,
951953
# and adjusting their attribute and group data accordingly.
952954
for umapi_user in umapi_users:
955+
# if target is ESM, then treat existing AdobeID (i.e. businessID) as linked identity type
956+
if umapi_connector.uses_business_id and umapi_user['email'] in self.primary_users_by_email:
957+
umapi_user['type'] = self.primary_users_by_email[umapi_user['email']]['type']
953958
# let save adobeID users to a seperate list
954959
self.filter_adobeID_user(umapi_user)
955960
# get the basic data about this user; initialize change markers to "no change"
@@ -979,6 +984,9 @@ def update_umapi_users_for_connector(self, umapi_info, umapi_connector):
979984

980985
self.map_email_override(umapi_user)
981986

987+
if umapi_connector.is_primary:
988+
self.primary_users_by_email[umapi_user['email']] = umapi_user
989+
982990
directory_user = filtered_directory_user_by_user_key.get(user_key)
983991
if directory_user is None:
984992
# There's no selected directory user matching this adobe user

0 commit comments

Comments
 (0)