[Midpoint-dev] Assistance with Resource/Account provisioning operations using Webservice client

dharmendra parakh dharm.parakh at gmail.com
Mon Dec 29 12:30:43 CET 2014


Hi

Hope you all had a nice Christmas, I wish you all a very Happy new year
2015 ahead.

I have a requirement where i have to provision account/resource to a
role/user in midpoint using model web service. I was able to create and
search account using web service client (model-client-sample)

- I need some pointers on how to update the account. I tried few things
some didn't work and some worked partially. can you help me providing the
right way or a code snippet to do it.

I have attached a code snippet which replaces the role assignment and it
works if i remove the attribute itself from construction but when i try to
remove some values of a multi-valued attribute instead of removing those
values it tries to add other value which are already present


- One more thing there is a method in web service to get the owner of
shadow account but that can be a user only, how we can get the owner of a
shadow if that owner is a role.

following is the method:

*findShadowOwner(shadowOid, user, result);*



Thanks & regards
Dharmendra
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.evolveum.com/pipermail/midpoint-dev/attachments/20141229/8ebfb4e3/attachment.html>
-------------- next part --------------
		ObjectDeltaType shadowDelta = new ObjectDeltaType();
		shadowDelta.setOid(role.getOid());
		shadowDelta.setObjectType(ModelClientUtil.getTypeQName(RoleType.class));
		shadowDelta.setChangeType(ChangeTypeType.MODIFY);
		
		List<AssignmentType> assignmentList = role.getAssignment();
		AssignmentType tempAssignment = null;
		for(AssignmentType assignment : assignmentList){
			tempAssignment = assignment;
			List<ResourceAttributeDefinitionType> attrs = new ArrayList<ResourceAttributeDefinitionType>(assignment.getConstruction().getAttribute()); 
			List<ResourceAttributeDefinitionType> exAttrs = assignment.getConstruction().getAttribute();
			
			for(ResourceAttributeDefinitionType attr: attrs){
				String attrName = attr.getRef().getLocalPart();
				if(attrName.equals("ldapGroups")){
//					exAttrs.remove(attr);
					ResourceAttributeDefinitionType attr1 = exAttrs.get(exAttrs.indexOf(attr));
					attr1.getOutbound().getExpression().getExpressionEvaluator().remove(0);
				}
			}
			
			break;
		}
		

		ItemDeltaType itemDelta = new ItemDeltaType();
		itemDelta.setModificationType(ModificationTypeType.REPLACE);
		itemDelta.setPath(ModelClientUtil.createItemPathType("assignment"));
		itemDelta.getValue().add(tempAssignment);

		
		
		shadowDelta.getItemDelta().add(itemDelta);

		ObjectDeltaListType deltaList = new ObjectDeltaListType();
		deltaList.getDelta().add(shadowDelta);
		modelPort.executeChanges(deltaList, null);


More information about the midPoint-dev mailing list