@@ -214,9 +214,10 @@ def get_user(self, user_id):
214214 # Get MAXADMIN API key for authentication
215215 maxadmin_manage_api_key = self .create_or_get_manage_api_key_for_user (MASUserUtils .MAXADMIN , temporary = True )
216216
217- url = f"{ self .manage_api_url_internal } /maximo/api/os/masperuser/ { user_id } "
217+ url = f"{ self .manage_api_url_internal } /maximo/api/os/masperuser"
218218 querystring = {
219- "lean" : 1
219+ "lean" : 1 ,
220+ "oslc.where" : f"userid=\" { user_id } \" "
220221 }
221222 headers = {
222223 "Accept" : "application/json" ,
@@ -229,6 +230,9 @@ def get_user(self, user_id):
229230 cert = self .manage_internal_client_pem_file_path ,
230231 verify = self .manage_internal_ca_pem_file_path
231232 )
233+ self .logger .info (f"GET { url } returned { response .status_code } " )
234+ self .logger .debug (f"Response: { response .text } " )
235+ self .logger .debug (f"Response json: { response .json } " )
232236 else :
233237 # For earlier versions, use the Core API v3/users endpoint
234238 url = f"{ self .mas_api_url_internal } /v3/users/{ user_id } "
@@ -341,15 +345,15 @@ def get_or_create_user(self, payload):
341345
342346 raise Exception (f"{ response .status_code } { response .text } " )
343347
344- def set_user_group_reassignment_auth (self , user_id , groupreassign , manage_api_key ):
348+ def set_user_group_reassignment_auth (self , resource_id , groupreassign , manage_api_key ):
345349 """
346350 Set group reassignment authorization for a user via Manage API.
347351
348352 This method updates the grpreassignauth field for a user's maxuser record,
349353 which controls which security groups the user can reassign to other users.
350354
351355 Args:
352- user_id (str): The unique identifier of the user.
356+ resource_id (str): The resource identifier of the user (extracted from href) .
353357 groupreassign (list): List of group objects in format [{"groupname": "GROUP1"}, {"groupname": "GROUP2"}, ...]
354358 manage_api_key (dict): API key record with 'apikey' field for authentication.
355359
@@ -360,13 +364,13 @@ def set_user_group_reassignment_auth(self, user_id, groupreassign, manage_api_ke
360364 Exception: If the update fails.
361365 """
362366 if not groupreassign or len (groupreassign ) == 0 :
363- self .logger .debug (f"No group reassignment authorization to set for user { user_id } " )
367+ self .logger .debug (f"No group reassignment authorization to set for resource { resource_id } " )
364368 return
365369
366- self .logger .info (f"Setting group reassignment authorization for user { user_id } with { len (groupreassign )} groups" )
370+ self .logger .info (f"Setting group reassignment authorization for resource { resource_id } with { len (groupreassign )} groups" )
367371
368372 # Use Manage API to update the user's grpreassignauth
369- url = f"{ self .manage_api_url_internal } /maximo/api/os/masperuser/{ user_id } "
373+ url = f"{ self .manage_api_url_internal } /maximo/api/os/masperuser/{ resource_id } "
370374 querystring = {
371375 "lean" : 1 ,
372376 "ccm" : 1
@@ -398,7 +402,7 @@ def set_user_group_reassignment_auth(self, user_id, groupreassign, manage_api_ke
398402 self .logger .info (f"Response text: { response .text } " )
399403
400404 if response .status_code == 200 :
401- self .logger .info (f"Successfully set group reassignment authorization for user { user_id } " )
405+ self .logger .info (f"Successfully set group reassignment authorization for resource { resource_id } " )
402406 return response .json ()
403407
404408 raise Exception (f"Failed to set group reassignment authorization: { response .status_code } { response .text } " )
@@ -1617,6 +1621,18 @@ def create_initial_user_for_saas(self, user, user_type, groupreassign=None):
16171621 self .logger .info (f"User def - { user_def } " )
16181622 user_info = self .get_or_create_user (user_def )
16191623 self .logger .info (f"User info - { user_info } " )
1624+
1625+ # Parse resource_id from user_info for version >= 9.1
1626+ resource_id = None
1627+ if Version (self .mas_version ) >= Version ('9.1' ) and user_info :
1628+ # Check if user_info has member array with href
1629+ if "member" in user_info and len (user_info ["member" ]) > 0 :
1630+ href = user_info ["member" ][0 ].get ("href" , "" )
1631+ # Extract resource_id from href (e.g., "api/os/masperuser/<resource_id>")
1632+ if href and "/" in href :
1633+ resource_id = href .split ("/" )[- 1 ]
1634+ self .logger .info (f"Extracted resource_id: { resource_id } from user_info" )
1635+
16201636 self .link_user_to_local_idp (user_id , email_password = True )
16211637 self .add_user_to_workspace (user_id , is_workspace_admin = is_workspace_admin )
16221638
@@ -1642,7 +1658,10 @@ def create_initial_user_for_saas(self, user, user_type, groupreassign=None):
16421658 for manage_security_group in manage_security_groups :
16431659 self .add_user_to_manage_group (user_id , manage_security_group , maxadmin_manage_api_key )
16441660 if Version (self .mas_version ) >= Version ('9.1' ) and user_type == "PRIMARY" and groupreassign is not None :
1645- self .set_user_group_reassignment_auth (user_id , groupreassign , maxadmin_manage_api_key )
1661+ if resource_id :
1662+ self .set_user_group_reassignment_auth (resource_id , groupreassign , maxadmin_manage_api_key )
1663+ else :
1664+ self .logger .warning (f"Cannot set group reassignment auth: resource_id not found for user { user_id } " )
16461665
16471666 # # Grant authorization to reassign users to/from ALL security groups (PRIMARY users only)
16481667 # if user_type == "PRIMARY":
0 commit comments