protected <O extends ObjectType> String addObject(PrismObject<O> object, ModelExecuteOptions options, Task task, OperationResult result) throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException, ExpressionEvaluationException, CommunicationException, ConfigurationException, PolicyViolationException, SecurityViolationException {
ObjectDelta<O> addDelta = object.createAddDelta();
assertFalse("Immutable object provided?",addDelta.getObjectToAdd().isImmutable());
Collection<ObjectDeltaOperation<? extends ObjectType>> executedDeltas = executeChanges(addDelta, options, task, result);
object.setOid(ObjectDeltaOperation.findFocusDeltaOidInCollection(executedDeltas));
return object.getOid();
}