From b1202e1e0b4aeed7c2404bccd5c841afe3cddbb9 Mon Sep 17 00:00:00 2001 From: Jonathan Hill Date: Thu, 12 Apr 2018 16:14:15 -0400 Subject: [PATCH 01/16] Update case item menu item visibility --- .../java/com/evolveum/midpoint/gui/api/page/PageBase.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java index be8d73ddc0b..ad9b4be2399 100644 --- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java +++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java @@ -1546,7 +1546,9 @@ public String getBubbleLabel() { addMenuItem(item, "PageAdmin.menu.top.cases.listAll", PageCasesAll.class); addMenuItem(item, "PageAdmin.menu.top.caseWorkItems.list", PageCaseWorkItemsAllocatedToMe.class); addMenuItem(item, "PageAdmin.menu.top.caseWorkItems.listAll", PageCaseWorkItemsAll.class); - addMenuItem(item, "PageAdmin.menu.top.caseWorkItems.view", PageCaseWorkItem.class); + + createFocusPageViewMenu(item.getItems(), "PageAdmin.menu.top.caseWorkItems.view", PageCaseWorkItem.class); + addMenuItem(item, "PageAdmin.menu.top.case.new", PageCase.class); return item; From 215ab2d533363891881c37acc50e88e99bdb9dc2 Mon Sep 17 00:00:00 2001 From: Viliam Repan Date: Fri, 13 Apr 2018 10:33:53 +0200 Subject: [PATCH 02/16] MID-4583 audit target owner type changed to FocusType. added one column --- .../midpoint/audit/api/AuditEventRecord.java | 11 ++++------- .../evolveum/midpoint/repo/sql/AuditTest.java | 2 -- .../repo/sql/SqlAuditServiceImpl.java | 2 +- .../sql/data/audit/RAuditEventRecord.java | 19 +++++++++++++++---- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventRecord.java b/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventRecord.java index d8a720aae6d..52c1fdc5f79 100644 --- a/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventRecord.java +++ b/repo/audit-api/src/main/java/com/evolveum/midpoint/audit/api/AuditEventRecord.java @@ -37,10 +37,7 @@ import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordPropertyType; import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordReferenceType; import com.evolveum.midpoint.xml.ns._public.common.audit_3.AuditEventRecordType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectDeltaOperationType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectReferenceType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.*; import com.evolveum.prism.xml.ns._public.types_3.ItemDeltaType; import com.evolveum.prism.xml.ns._public.types_3.ObjectDeltaType; import com.evolveum.prism.xml.ns._public.types_3.PolyStringType; @@ -112,7 +109,7 @@ public class AuditEventRecord implements DebugDumpable { private PrismReferenceValue target; // user that the target "belongs to"????: store OID, name - private PrismObject targetOwner; + private PrismObject targetOwner; // event type private AuditEventType eventType; @@ -269,11 +266,11 @@ public void setTarget(PrismObject targetObject) { } } - public PrismObject getTargetOwner() { + public PrismObject getTargetOwner() { return targetOwner; } - public void setTargetOwner(PrismObject targetOwner) { + public void setTargetOwner(PrismObject targetOwner) { this.targetOwner = targetOwner; } diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AuditTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AuditTest.java index 8884977394d..a6ba3a2034c 100644 --- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AuditTest.java +++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AuditTest.java @@ -141,8 +141,6 @@ private AuditEventRecord getAuditEventRecord(int expectedCount, int index) { AuditEventRecord eventRecord = RAuditEventRecord.fromRepo(records.get(index), prismContext); session.getTransaction().commit(); return eventRecord; - } catch (DtoTranslationException e) { - throw new SystemException(e); } finally { session.close(); } diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java index 518de5c6148..7b940632299 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/SqlAuditServiceImpl.java @@ -236,7 +236,7 @@ private void listRecordsIterativeAttempt(String query, Map param audit.setInitiator(resolve(session, raudit.getInitiatorOid(), raudit.getInitiatorName(), defaultIfNull(raudit.getInitiatorType(), RObjectType.USER))); audit.setAttorney(resolve(session, raudit.getAttorneyOid(), raudit.getAttorneyName(), RObjectType.USER)); audit.setTarget(resolve(session, raudit.getTargetOid(), raudit.getTargetName(), raudit.getTargetType())); - audit.setTargetOwner(resolve(session, raudit.getTargetOwnerOid(), raudit.getTargetOwnerName(), RObjectType.USER)); + audit.setTargetOwner(resolve(session, raudit.getTargetOwnerOid(), raudit.getTargetOwnerName(), raudit.getTargetOwnerType())); count++; if (!handler.handle(audit)) { LOGGER.trace("Skipping handling of objects after {} was handled. ", audit); diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/audit/RAuditEventRecord.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/audit/RAuditEventRecord.java index da7b93e16f3..48955675d4e 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/audit/RAuditEventRecord.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/data/audit/RAuditEventRecord.java @@ -95,9 +95,10 @@ public class RAuditEventRecord implements Serializable { private String targetOid; private String targetName; private RObjectType targetType; - // prism object - user + // prism object private String targetOwnerOid; private String targetOwnerName; + private RObjectType targetOwnerType; private RAuditEventType eventType; private RAuditEventStage eventStage; @@ -271,6 +272,15 @@ public Timestamp getTimestamp() { return timestamp; } + @Enumerated(EnumType.ORDINAL) + public RObjectType getTargetOwnerType() { + return targetOwnerType; + } + + public void setTargetOwnerType(RObjectType targetOwnerType) { + this.targetOwnerType = targetOwnerType; + } + public void setMessage(String message) { this.message = message; } @@ -417,6 +427,7 @@ public boolean equals(Object o) { targetType == that.targetType && Objects.equals(targetOwnerOid, that.targetOwnerOid) && Objects.equals(targetOwnerName, that.targetOwnerName) && + Objects.equals(targetOwnerType, that.targetOwnerType) && eventType == that.eventType && eventStage == that.eventStage && Objects.equals(deltas, that.deltas) && @@ -436,7 +447,7 @@ public int hashCode() { .hash(id, timestamp, eventIdentifier, sessionIdentifier, taskIdentifier, taskOID, hostIdentifier, remoteHostAddress, nodeIdentifier, initiatorOid, initiatorName, initiatorType, attorneyOid, attorneyName, targetOid, targetName, targetType, targetOwnerOid, - targetOwnerName, eventType, eventStage, deltas, channel, outcome, parameter, message, + targetOwnerName, targetOwnerType, eventType, eventStage, deltas, channel, outcome, parameter, message, changedItems, propertyValues, referenceValues, result); } @@ -485,6 +496,7 @@ public static RAuditEventRecord toRepo(AuditEventRecord record, PrismContext pri PrismObject targetOwner = record.getTargetOwner(); repo.setTargetOwnerName(getOrigName(targetOwner)); repo.setTargetOwnerOid(targetOwner.getOid()); + repo.setTargetOwnerType(ClassMapper.getHQLTypeForClass(targetOwner.getCompileTimeClass())); } if (record.getInitiator() != null) { PrismObject initiator = record.getInitiator(); @@ -544,8 +556,7 @@ public static RAuditEventRecord toRepo(AuditEventRecord record, PrismContext pri return repo; } - public static AuditEventRecord fromRepo(RAuditEventRecord repo, PrismContext prismContext) - throws DtoTranslationException { + public static AuditEventRecord fromRepo(RAuditEventRecord repo, PrismContext prismContext) { AuditEventRecord audit = new AuditEventRecord(); audit.setChannel(repo.getChannel()); From 445a1acd82366251295382a67d42dd79c7c61fa3 Mon Sep 17 00:00:00 2001 From: Viliam Repan Date: Fri, 13 Apr 2018 10:38:56 +0200 Subject: [PATCH 03/16] MID-4583 audit target owner type, sql scripts updated --- config/sql/_all/h2-3.8-all.sql | 1 + config/sql/_all/mysql-3.8-all-utf8mb4.sql | 1 + config/sql/_all/mysql-3.8-all.sql | 1 + config/sql/_all/oracle-3.8-all.sql | 1 + config/sql/_all/postgresql-3.8-all.sql | 1 + config/sql/_all/sqlserver-3.8-all.sql | 1 + 6 files changed, 6 insertions(+) diff --git a/config/sql/_all/h2-3.8-all.sql b/config/sql/_all/h2-3.8-all.sql index ec7adacb08f..a9960fc102a 100644 --- a/config/sql/_all/h2-3.8-all.sql +++ b/config/sql/_all/h2-3.8-all.sql @@ -237,6 +237,7 @@ CREATE TABLE m_audit_event ( targetOid VARCHAR(36), targetOwnerName VARCHAR(255), targetOwnerOid VARCHAR(36), + targetOwnerType INTEGER, targetType INTEGER, taskIdentifier VARCHAR(255), taskOID VARCHAR(255), diff --git a/config/sql/_all/mysql-3.8-all-utf8mb4.sql b/config/sql/_all/mysql-3.8-all-utf8mb4.sql index e47a7a22bc3..9ff42cc5799 100644 --- a/config/sql/_all/mysql-3.8-all-utf8mb4.sql +++ b/config/sql/_all/mysql-3.8-all-utf8mb4.sql @@ -283,6 +283,7 @@ CREATE TABLE m_audit_event ( targetOid VARCHAR(36) CHARSET utf8 COLLATE utf8_bin , targetOwnerName VARCHAR(255), targetOwnerOid VARCHAR(36) CHARSET utf8 COLLATE utf8_bin , + targetOwnerType INTEGER, targetType INTEGER, taskIdentifier VARCHAR(255), taskOID VARCHAR(255) CHARSET utf8 COLLATE utf8_bin , diff --git a/config/sql/_all/mysql-3.8-all.sql b/config/sql/_all/mysql-3.8-all.sql index 614652dea89..970c5a71271 100644 --- a/config/sql/_all/mysql-3.8-all.sql +++ b/config/sql/_all/mysql-3.8-all.sql @@ -283,6 +283,7 @@ CREATE TABLE m_audit_event ( targetOid VARCHAR(36), targetOwnerName VARCHAR(255), targetOwnerOid VARCHAR(36), + targetOwnerType INTEGER, targetType INTEGER, taskIdentifier VARCHAR(255), taskOID VARCHAR(255), diff --git a/config/sql/_all/oracle-3.8-all.sql b/config/sql/_all/oracle-3.8-all.sql index e560d66f248..260e6397353 100644 --- a/config/sql/_all/oracle-3.8-all.sql +++ b/config/sql/_all/oracle-3.8-all.sql @@ -233,6 +233,7 @@ CREATE TABLE m_audit_event ( targetOid VARCHAR2(36 CHAR), targetOwnerName VARCHAR2(255 CHAR), targetOwnerOid VARCHAR2(36 CHAR), + targetOwnerType NUMBER(10, 0), targetType NUMBER(10, 0), taskIdentifier VARCHAR2(255 CHAR), taskOID VARCHAR2(255 CHAR), diff --git a/config/sql/_all/postgresql-3.8-all.sql b/config/sql/_all/postgresql-3.8-all.sql index fec98dd37d0..a10b89b2de5 100644 --- a/config/sql/_all/postgresql-3.8-all.sql +++ b/config/sql/_all/postgresql-3.8-all.sql @@ -233,6 +233,7 @@ CREATE TABLE m_audit_event ( targetOid VARCHAR(36), targetOwnerName VARCHAR(255), targetOwnerOid VARCHAR(36), + targetOwnerType INT4, targetType INT4, taskIdentifier VARCHAR(255), taskOID VARCHAR(255), diff --git a/config/sql/_all/sqlserver-3.8-all.sql b/config/sql/_all/sqlserver-3.8-all.sql index 07b4bb4502c..51f141bcc3c 100644 --- a/config/sql/_all/sqlserver-3.8-all.sql +++ b/config/sql/_all/sqlserver-3.8-all.sql @@ -233,6 +233,7 @@ CREATE TABLE m_audit_event ( targetOid NVARCHAR(36) COLLATE database_default, targetOwnerName NVARCHAR(255) COLLATE database_default, targetOwnerOid NVARCHAR(36) COLLATE database_default, + targetOwnerType INT, targetType INT, taskIdentifier NVARCHAR(255) COLLATE database_default, taskOID NVARCHAR(255) COLLATE database_default, From d1894a4b9de3bcf285661567ea9f6db086efdb51 Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Fri, 13 Apr 2018 11:58:07 +0200 Subject: [PATCH 04/16] Add "resume" bulk action Also created a sample bulk action to resume tasks carrying failed executions of recently approved requests. Fixes MID-4469. (cherry picked from commit 2610fc4) --- .../scripting/actions/BaseActionExecutor.java | 2 + .../scripting/actions/ResumeExecutor.java | 85 +++++++++++++++++++ .../intest/scripting/TestScriptingBasic.java | 37 ++++++++ .../scripting/resume-suspended-tasks.xml | 60 +++++++++++++ .../scripting/task-to-keep-suspended.xml | 47 ++++++++++ .../resources/scripting/task-to-resume.xml | 47 ++++++++++ 6 files changed, 278 insertions(+) create mode 100644 model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/actions/ResumeExecutor.java create mode 100644 model/model-intest/src/test/resources/scripting/resume-suspended-tasks.xml create mode 100644 model/model-intest/src/test/resources/scripting/task-to-keep-suspended.xml create mode 100644 model/model-intest/src/test/resources/scripting/task-to-resume.xml diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/actions/BaseActionExecutor.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/actions/BaseActionExecutor.java index f7bee824e74..4c521d3156a 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/actions/BaseActionExecutor.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/actions/BaseActionExecutor.java @@ -18,6 +18,7 @@ import com.evolveum.midpoint.model.api.ModelExecuteOptions; import com.evolveum.midpoint.model.api.ModelService; +import com.evolveum.midpoint.model.api.TaskService; import com.evolveum.midpoint.model.impl.scripting.ActionExecutor; import com.evolveum.midpoint.model.impl.scripting.PipelineData; import com.evolveum.midpoint.model.impl.scripting.ExecutionContext; @@ -70,6 +71,7 @@ public abstract class BaseActionExecutor implements ActionExecutor { @Autowired protected ModelService modelService; @Autowired protected SecurityEnforcer securityEnforcer; @Autowired protected SecurityContextManager securityContextManager; + @Autowired protected TaskService taskService; // todo move to some helper? diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/actions/ResumeExecutor.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/actions/ResumeExecutor.java new file mode 100644 index 00000000000..ddc4dfa4515 --- /dev/null +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/scripting/actions/ResumeExecutor.java @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2010-2018 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.evolveum.midpoint.model.impl.scripting.actions; + +import com.evolveum.midpoint.model.api.PipelineItem; +import com.evolveum.midpoint.model.api.ScriptExecutionException; +import com.evolveum.midpoint.model.impl.scripting.ExecutionContext; +import com.evolveum.midpoint.model.impl.scripting.PipelineData; +import com.evolveum.midpoint.prism.PrismObject; +import com.evolveum.midpoint.prism.PrismObjectValue; +import com.evolveum.midpoint.prism.PrismValue; +import com.evolveum.midpoint.schema.result.OperationResult; +import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; +import com.evolveum.midpoint.xml.ns._public.common.common_3.TaskType; +import com.evolveum.midpoint.xml.ns._public.model.scripting_3.ActionExpressionType; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +import static java.util.Collections.singleton; + +/** + * @author mederly + */ +@Component +public class ResumeExecutor extends BaseActionExecutor { + + //private static final Trace LOGGER = TraceManager.getTrace(ResumeExecutor.class); + + private static final String NAME = "resume"; + + @PostConstruct + public void init() { + scriptingExpressionEvaluator.registerActionExecutor(NAME, this); + } + + @Override + public PipelineData execute(ActionExpressionType expression, PipelineData input, ExecutionContext context, OperationResult globalResult) throws ScriptExecutionException { + + for (PipelineItem item: input.getData()) { + PrismValue value = item.getValue(); + OperationResult result = operationsHelper.createActionResult(item, this, context, globalResult); + context.checkTaskStop(); + if (value instanceof PrismObjectValue) { + @SuppressWarnings({"unchecked", "raw"}) + PrismObject prismObject = ((PrismObjectValue) value).asPrismObject(); + ObjectType object = prismObject.asObjectable(); + if (object instanceof TaskType) { + long started = operationsHelper.recordStart(context, object); + Throwable exception = null; + try { + taskService.resumeTasks(singleton(object.getOid()), context.getTask(), result); + operationsHelper.recordEnd(context, object, started, null); + } catch (Throwable ex) { + operationsHelper.recordEnd(context, object, started, ex); + exception = processActionException(ex, NAME, value, context); + } + context.println((exception != null ? "Attempted to resume " : "Resumed ") + prismObject.toString() + exceptionSuffix(exception)); + } else { + //noinspection ThrowableNotThrown + processActionException(new ScriptExecutionException("Item is not a task"), NAME, value, context); + } + } else { + //noinspection ThrowableNotThrown + processActionException(new ScriptExecutionException("Item is not a PrismObject"), NAME, value, context); + } + operationsHelper.trimAndCloneResult(result, globalResult, context); + } + return input; + } +} diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/scripting/TestScriptingBasic.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/scripting/TestScriptingBasic.java index 96b69b5fdea..14f2aa9d22c 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/scripting/TestScriptingBasic.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/scripting/TestScriptingBasic.java @@ -56,6 +56,8 @@ import java.util.*; import java.util.stream.Collectors; +import static com.evolveum.midpoint.prism.xml.XmlTypeConverter.createDuration; +import static com.evolveum.midpoint.prism.xml.XmlTypeConverter.fromNow; import static java.util.Collections.emptyMap; import static java.util.Collections.singleton; import static org.apache.commons.collections4.CollectionUtils.emptyIfNull; @@ -105,6 +107,9 @@ public class TestScriptingBasic extends AbstractInitializedModelIntegrationTest private static final File GENERATE_PASSWORDS_3_FILE = new File(TEST_DIR, "generate-passwords-3.xml"); private static final File ECHO_FILE = new File(TEST_DIR, "echo.xml"); private static final File USE_VARIABLES_FILE = new File(TEST_DIR, "use-variables.xml"); + private static final File TASK_TO_RESUME_FILE = new File(TEST_DIR, "task-to-resume.xml"); + private static final File TASK_TO_KEEP_SUSPENDED_FILE = new File(TEST_DIR, "task-to-keep-suspended.xml"); + private static final File RESUME_SUSPENDED_TASKS_FILE = new File(TEST_DIR, "resume-suspended-tasks.xml"); private static final QName USER_NAME_TASK_EXTENSION_PROPERTY = new QName("http://midpoint.evolveum.com/xml/ns/samples/piracy", "userName"); private static final QName USER_DESCRIPTION_TASK_EXTENSION_PROPERTY = new QName("http://midpoint.evolveum.com/xml/ns/samples/piracy", "userDescription"); private static final QName STUDY_GROUP_TASK_EXTENSION_PROPERTY = new QName("http://midpoint.evolveum.com/xml/ns/samples/piracy", "studyGroup"); @@ -1099,6 +1104,38 @@ public void test570IterativeScriptingTask() throws Exception { assertEquals("Wrong administrator description", "hello administrator", administrator.asObjectable().getDescription()); } + @Test + public void test575ResumeTask() throws Exception { + final String TEST_NAME = "test570ResumeTask"; + TestUtil.displayTestTitle(this, TEST_NAME); + + // GIVEN + Task task = createTask(DOT_CLASS + TEST_NAME); + task.setOwner(getUser(USER_ADMINISTRATOR_OID)); + OperationResult result = task.getResult(); + + addObject(TASK_TO_KEEP_SUSPENDED_FILE); + + PrismObject taskToResume = prismContext.parseObject(TASK_TO_RESUME_FILE); + taskToResume.asObjectable().getWorkflowContext().setEndTimestamp(fromNow(createDuration(-1000L))); + addObject(taskToResume); + display("task to resume", taskToResume); + + ExecuteScriptType exec = prismContext.parserFor(RESUME_SUSPENDED_TASKS_FILE).parseRealValue(); + + // WHEN + ExecutionContext output = scriptingExpressionEvaluator.evaluateExpression(exec, emptyMap(), task, result); + + // THEN + dumpOutput(output, result); + result.computeStatus(); + // the task should be there + assertEquals("Unexpected # of items in output", 1, output.getFinalOutput().getData().size()); + + PrismObject taskAfter = getObject(TaskType.class, taskToResume.getOid()); + assertTrue("Task is still suspended", taskAfter.asObjectable().getExecutionStatus() != TaskExecutionStatusType.SUSPENDED); + } + private void assertNoOutputData(ExecutionContext output) { assertTrue("Script returned unexpected data", output.getFinalOutput() == null || output.getFinalOutput().getData().isEmpty()); } diff --git a/model/model-intest/src/test/resources/scripting/resume-suspended-tasks.xml b/model/model-intest/src/test/resources/scripting/resume-suspended-tasks.xml new file mode 100644 index 00000000000..bb24a580413 --- /dev/null +++ b/model/model-intest/src/test/resources/scripting/resume-suspended-tasks.xml @@ -0,0 +1,60 @@ + + + + + TaskType + + + + + category + Workflow + + + handlerUri + + http://midpoint.evolveum.com/xml/ns/public/task/noop/handler-3 + + + executionStatus + suspended + + + + workflowContext/endTimestamp + + + + basic.fromNow("-P14D") + + + + + + + + + resume + + + \ No newline at end of file diff --git a/model/model-intest/src/test/resources/scripting/task-to-keep-suspended.xml b/model/model-intest/src/test/resources/scripting/task-to-keep-suspended.xml new file mode 100644 index 00000000000..f3ddca7b279 --- /dev/null +++ b/model/model-intest/src/test/resources/scripting/task-to-keep-suspended.xml @@ -0,0 +1,47 @@ + + + + + Approval and execution of: Assigning role "abc" to user "def" (old) + 2222222222222-0-1 + + http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user + suspended + Workflow + http://midpoint.evolveum.com/xml/ns/public/task/noop/handler-3 + + partial_error + 2018-01-02T12:24:33.635+02:00 + 2018-01-02T12:25:46.587+02:00 + single + tight + + primary + + + 12345678 + ItemApproval + 2018-01-01T10:34:30.087+02:00 + 2018-01-12T12:24:23.192+02:00 + + \ No newline at end of file diff --git a/model/model-intest/src/test/resources/scripting/task-to-resume.xml b/model/model-intest/src/test/resources/scripting/task-to-resume.xml new file mode 100644 index 00000000000..1e4d4f18885 --- /dev/null +++ b/model/model-intest/src/test/resources/scripting/task-to-resume.xml @@ -0,0 +1,47 @@ + + + + + Approval and execution of: Assigning role "abc" to user "def" + 1522830887681-0-1 + + http://midpoint.evolveum.com/xml/ns/public/gui/channels-3#user + suspended + Workflow + http://midpoint.evolveum.com/xml/ns/public/task/noop/handler-3 + + partial_error + 2018-04-11T12:24:33.635+02:00 + 2018-04-11T12:25:46.587+02:00 + single + tight + + primary + + + 5246642 + ItemApproval + 2018-04-04T10:34:30.087+02:00 + 2018-04-11T12:24:23.192+02:00 + + \ No newline at end of file From 82bd46e12abc82f1fe1c12417cf56f5a6105121f Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Fri, 13 Apr 2018 14:44:16 +0200 Subject: [PATCH 05/16] Fixing tricky dependencies bug (MID-4554) --- .../lens/projector/ActivationProcessor.java | 36 +- .../impl/lens/projector/MappingEvaluator.java | 6 +- .../projector/MappingEvaluatorParams.java | 6 +- .../impl/lens/projector/MappingTimeEval.java | 26 + .../ProjectionCredentialsProcessor.java | 5 +- .../focus/AssignmentTripleEvaluator.java | 13 +- .../projector/focus/InboundProcessor.java | 3 +- .../model/intest/TestMultiResource.java | 257 ++++++++-- .../midpoint/model/intest/rbac/TestRbac.java | 2 +- .../src/test/resources/logback-test.xml | 6 +- ...sable.xml => resource-dummy-dark-peru.xml} | 7 +- .../multi/resource-dummy-dark-yellow.xml | 482 ++++++++++++++++++ ...-disable.xml => role-dark-yellow-peru.xml} | 8 +- .../test/AbstractModelIntegrationTest.java | 37 +- 14 files changed, 802 insertions(+), 92 deletions(-) create mode 100644 model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/MappingTimeEval.java rename model/model-intest/src/test/resources/multi/{resource-dummy-peru-disable.xml => resource-dummy-dark-peru.xml} (95%) create mode 100644 model/model-intest/src/test/resources/multi/resource-dummy-dark-yellow.xml rename model/model-intest/src/test/resources/multi/{role-yellow-peru-disable.xml => role-dark-yellow-peru.xml} (82%) diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/ActivationProcessor.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/ActivationProcessor.java index ff8d94f9add..f1238361137 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/ActivationProcessor.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/ActivationProcessor.java @@ -177,9 +177,11 @@ public void processActivationUserCurrent(LensContext co return; } - boolean shadowShouldExist = evaluateExistenceMapping(context, projCtx, now, true, task, result); + LOGGER.trace("Evaluating intended existence of projection {} (legal={})", projCtxDesc, projCtx.isLegal()); + + boolean shadowShouldExist = evaluateExistenceMapping(context, projCtx, now, MappingTimeEval.CURRENT, task, result); - LOGGER.trace("Evaluated intended existence of projection {} to {}", projCtxDesc, shadowShouldExist); + LOGGER.trace("Evaluated intended existence of projection {} to {} (legal={})", projCtxDesc, shadowShouldExist, projCtx.isLegal()); // Let's reconcile the existence intent (shadowShouldExist) and the synchronization intent in the context @@ -294,7 +296,7 @@ public void processActivationUserCurrent(LensContext co evaluateActivationMapping(context, projCtx, activationType.getAdministrativeStatus(), SchemaConstants.PATH_ACTIVATION_ADMINISTRATIVE_STATUS, SchemaConstants.PATH_ACTIVATION_ADMINISTRATIVE_STATUS, - capActivation, now, true, ActivationType.F_ADMINISTRATIVE_STATUS.getLocalPart(), task, result); + capActivation, now, MappingTimeEval.CURRENT, ActivationType.F_ADMINISTRATIVE_STATUS.getLocalPart(), task, result); } else { LOGGER.trace("Skipping activation administrative status processing because {} does not have activation administrative status capability", projCtx.getResource()); } @@ -307,7 +309,7 @@ public void processActivationUserCurrent(LensContext co } else { evaluateActivationMapping(context, projCtx, activationType.getValidFrom(), SchemaConstants.PATH_ACTIVATION_VALID_FROM, SchemaConstants.PATH_ACTIVATION_VALID_FROM, - null, now, true, ActivationType.F_VALID_FROM.getLocalPart(), task, result); + null, now, MappingTimeEval.CURRENT, ActivationType.F_VALID_FROM.getLocalPart(), task, result); } ResourceBidirectionalMappingType validToMappingType = activationType.getValidTo(); @@ -318,14 +320,14 @@ public void processActivationUserCurrent(LensContext co } else { evaluateActivationMapping(context, projCtx, activationType.getValidTo(), SchemaConstants.PATH_ACTIVATION_VALID_TO, SchemaConstants.PATH_ACTIVATION_VALID_TO, - null, now, true, ActivationType.F_VALID_TO.getLocalPart(), task, result); + null, now, MappingTimeEval.CURRENT, ActivationType.F_VALID_TO.getLocalPart(), task, result); } if (capLockoutStatus != null) { evaluateActivationMapping(context, projCtx, activationType.getLockoutStatus(), SchemaConstants.PATH_ACTIVATION_LOCKOUT_STATUS, SchemaConstants.PATH_ACTIVATION_LOCKOUT_STATUS, - capActivation, now, true, ActivationType.F_LOCKOUT_STATUS.getLocalPart(), task, result); + capActivation, now, MappingTimeEval.CURRENT, ActivationType.F_LOCKOUT_STATUS.getLocalPart(), task, result); } else { LOGGER.trace("Skipping activation lockout status processing because {} does not have activation lockout status capability", projCtx.getResource()); } @@ -415,7 +417,7 @@ public void processActivationUserFuture(LensContext con accCtx.recompute(); - evaluateExistenceMapping(context, accCtx, now, false, task, result); + evaluateExistenceMapping(context, accCtx, now, MappingTimeEval.FUTURE, task, result); PrismObject focusNew = context.getFocusContext().getObjectNew(); if (focusNew == null) { @@ -446,26 +448,26 @@ public void processActivationUserFuture(LensContext con evaluateActivationMapping(context, accCtx, activationType.getAdministrativeStatus(), SchemaConstants.PATH_ACTIVATION_ADMINISTRATIVE_STATUS, SchemaConstants.PATH_ACTIVATION_ADMINISTRATIVE_STATUS, - capActivation, now, false, ActivationType.F_ADMINISTRATIVE_STATUS.getLocalPart(), task, result); + capActivation, now, MappingTimeEval.FUTURE, ActivationType.F_ADMINISTRATIVE_STATUS.getLocalPart(), task, result); } if (capValidFrom != null) { evaluateActivationMapping(context, accCtx, activationType.getAdministrativeStatus(), SchemaConstants.PATH_ACTIVATION_VALID_FROM, SchemaConstants.PATH_ACTIVATION_VALID_FROM, - null, now, false, ActivationType.F_VALID_FROM.getLocalPart(), task, result); + null, now, MappingTimeEval.FUTURE, ActivationType.F_VALID_FROM.getLocalPart(), task, result); } if (capValidTo != null) { evaluateActivationMapping(context, accCtx, activationType.getAdministrativeStatus(), SchemaConstants.PATH_ACTIVATION_VALID_TO, SchemaConstants.PATH_ACTIVATION_VALID_TO, - null, now, false, ActivationType.F_VALID_FROM.getLocalPart(), task, result); + null, now, MappingTimeEval.FUTURE, ActivationType.F_VALID_FROM.getLocalPart(), task, result); } } private boolean evaluateExistenceMapping(final LensContext context, - final LensProjectionContext projCtx, final XMLGregorianCalendar now, final boolean current, + final LensProjectionContext projCtx, final XMLGregorianCalendar now, final MappingTimeEval current, Task task, final OperationResult result) throws ExpressionEvaluationException, ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, SecurityViolationException { final String projCtxDesc = projCtx.toHumanReadableString(); @@ -475,8 +477,6 @@ private boolean evaluateExistenceMapping(final LensContext throw new IllegalStateException("Null 'legal' for "+projCtxDesc); } - LOGGER.trace("Evaluating intended existence of projection {}; legal={}", projCtxDesc, legal); - ResourceObjectTypeDefinitionType resourceAccountDefType = projCtx.getResourceObjectTypeDefinitionType(); if (resourceAccountDefType == null) { return legal; @@ -581,7 +581,7 @@ private boolean evaluateExistenceMapping(final LensContext private void evaluateActivationMapping(final LensContext context, final LensProjectionContext projCtx, ResourceBidirectionalMappingType bidirectionalMappingType, final ItemPath focusPropertyPath, final ItemPath projectionPropertyPath, - final ActivationCapabilityType capActivation, XMLGregorianCalendar now, final boolean current, + final ActivationCapabilityType capActivation, XMLGregorianCalendar now, final MappingTimeEval current, String desc, final Task task, final OperationResult result) throws ExpressionEvaluationException, ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, SecurityViolationException { MappingInitializer,PrismPropertyDefinition> initializer = @@ -645,7 +645,7 @@ private void evaluateOutboundMapping(final LensContext< final LensProjectionContext projCtx, ResourceBidirectionalMappingType bidirectionalMappingType, final ItemPath focusPropertyPath, final ItemPath projectionPropertyPath, final MappingInitializer,PrismPropertyDefinition> initializer, - XMLGregorianCalendar now, final boolean evaluateCurrent, String desc, final Task task, final OperationResult result) throws ExpressionEvaluationException, ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, SecurityViolationException { + XMLGregorianCalendar now, final MappingTimeEval evaluateCurrent, String desc, final Task task, final OperationResult result) throws ExpressionEvaluationException, ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, SecurityViolationException { if (bidirectionalMappingType == null) { LOGGER.trace("No '{}' definition in projection {}, skipping", desc, projCtx.toHumanReadableString()); @@ -694,7 +694,7 @@ private void evaluateOutboundMapping(final LensContext< Map>> outputTripleMap = mappingEvaluator.evaluateMappingSetProjection(params, task, result); if (LOGGER.isTraceEnabled()) { - LOGGER.trace("Mapping processing output after {}:\n{}", desc, DebugUtil.debugDump(outputTripleMap, 1)); + LOGGER.trace("Mapping processing output after {} ({}):\n{}", desc, evaluateCurrent, DebugUtil.debugDump(outputTripleMap, 1)); } if (projCtx.isDoReconciliation()) { @@ -702,7 +702,7 @@ private void evaluateOutboundMapping(final LensContext< } } - + /** * TODO: can we align this with ReconciliationProcessor? */ @@ -924,7 +924,7 @@ private void processLifecycleFocus(LensContext context, LOGGER.trace("Computing projection lifecycle (mapping): {}", lifecycleStateMappingType); evaluateActivationMapping(context, projCtx, lifecycleStateMappingType, SchemaConstants.PATH_LIFECYCLE_STATE, SchemaConstants.PATH_LIFECYCLE_STATE, - null, now, true, ObjectType.F_LIFECYCLE_STATE.getLocalPart(), task, result); + null, now, MappingTimeEval.CURRENT, ObjectType.F_LIFECYCLE_STATE.getLocalPart(), task, result); } } diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/MappingEvaluator.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/MappingEvaluator.java index 19719ea2685..e078cfad155 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/MappingEvaluator.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/MappingEvaluator.java @@ -143,7 +143,7 @@ public void evaluateOutboundMapping(final LensContext outboundMappings, final ItemPath focusPropertyPath, final ItemPath projectionPropertyPath, final MappingInitializer,PrismPropertyDefinition> initializer, MappingOutputProcessor> processor, - XMLGregorianCalendar now, final boolean evaluateCurrent, boolean evaluateWeak, + XMLGregorianCalendar now, final MappingTimeEval evaluateCurrent, boolean evaluateWeak, String desc, final Task task, final OperationResult result) throws ExpressionEvaluationException, ObjectNotFoundException, SchemaException, CommunicationException, ConfigurationException, SecurityViolationException { String projCtxDesc = projCtx.toHumanReadableString(); @@ -232,11 +232,11 @@ public context; private boolean hasFullTargetObject; @@ -137,11 +137,11 @@ public void setSourceContext(ObjectDeltaObject sourceContext) { this.sourceContext = sourceContext; } - public Boolean getEvaluateCurrent() { + public MappingTimeEval getEvaluateCurrent() { return evaluateCurrent; } - public void setEvaluateCurrent(Boolean evaluateCurrent) { + public void setEvaluateCurrent(MappingTimeEval evaluateCurrent) { this.evaluateCurrent = evaluateCurrent; } diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/MappingTimeEval.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/MappingTimeEval.java new file mode 100644 index 00000000000..d049c9a1537 --- /dev/null +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/MappingTimeEval.java @@ -0,0 +1,26 @@ +/** + * Copyright (c) 2018 Evolveum + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.evolveum.midpoint.model.impl.lens.projector; + +/** + * @author semancik + * + */ +public enum MappingTimeEval { + + CURRENT, FUTURE; + +} diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/credentials/ProjectionCredentialsProcessor.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/credentials/ProjectionCredentialsProcessor.java index a0b0768a3ba..2b302c2c46d 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/credentials/ProjectionCredentialsProcessor.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/credentials/ProjectionCredentialsProcessor.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2017 Evolveum + * Copyright (c) 2010-2018 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,6 +40,7 @@ import com.evolveum.midpoint.model.impl.lens.projector.MappingEvaluator; import com.evolveum.midpoint.model.impl.lens.projector.MappingInitializer; import com.evolveum.midpoint.model.impl.lens.projector.MappingOutputProcessor; +import com.evolveum.midpoint.model.impl.lens.projector.MappingTimeEval; import com.evolveum.midpoint.prism.ItemDefinition; import com.evolveum.midpoint.prism.OriginType; import com.evolveum.midpoint.prism.PrismContainerValue; @@ -255,7 +256,7 @@ public ValuePolicyType resolve() { mappingEvaluator.evaluateOutboundMapping(context, projCtx, outboundMappingTypes, SchemaConstants.PATH_PASSWORD_VALUE, SchemaConstants.PATH_PASSWORD_VALUE, initializer, processor, - now, true, evaluateWeak, "password mapping", task, result); + now, MappingTimeEval.CURRENT, evaluateWeak, "password mapping", task, result); } diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/AssignmentTripleEvaluator.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/AssignmentTripleEvaluator.java index 7c265012347..0da3183f092 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/AssignmentTripleEvaluator.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/AssignmentTripleEvaluator.java @@ -396,16 +396,25 @@ private void processAssignment(DeltaSetTriple> evalua } else { // No change in assignment if (LOGGER.isTraceEnabled()) { - LOGGER.trace("Processing unchanged assignment {}", SchemaDebugUtil.prettyPrint(assignmentCVal)); + LOGGER.trace("Processing unchanged assignment ({}) {}", + presentInCurrent ? "present" : "not present", + SchemaDebugUtil.prettyPrint(assignmentCVal)); } EvaluatedAssignmentImpl evaluatedAssignment = evaluateAssignment(createAssignmentIdiNoChange(assignmentCVal), PlusMinusZero.ZERO, false, context, source, assignmentEvaluator, assignmentPlacementDesc, task, result); if (evaluatedAssignment == null) { return; } + // NOTE: unchanged may mean both: + // * was there before, is there now + // * was not there before, is not there now evaluatedAssignment.setPresentInCurrentObject(presentInCurrent); evaluatedAssignment.setPresentInOldObject(presentInOld); evaluatedAssignment.setWasValid(evaluatedAssignment.isValid()); - collectToZero(evaluatedAssignmentTriple, evaluatedAssignment, forceRecon); + if (presentInCurrent) { + collectToZero(evaluatedAssignmentTriple, evaluatedAssignment, forceRecon); + } else { + collectToMinus(evaluatedAssignmentTriple, evaluatedAssignment, forceRecon); + } } } } diff --git a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/InboundProcessor.java b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/InboundProcessor.java index e03e782137f..c15b4aceba5 100644 --- a/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/InboundProcessor.java +++ b/model/model-impl/src/main/java/com/evolveum/midpoint/model/impl/lens/projector/focus/InboundProcessor.java @@ -51,6 +51,7 @@ import com.evolveum.midpoint.model.impl.lens.projector.MappingEvaluatorParams; import com.evolveum.midpoint.model.impl.lens.projector.MappingInitializer; import com.evolveum.midpoint.model.impl.lens.projector.MappingOutputProcessor; +import com.evolveum.midpoint.model.impl.lens.projector.MappingTimeEval; import com.evolveum.midpoint.model.impl.lens.projector.credentials.CredentialsProcessor; import com.evolveum.midpoint.prism.Item; import com.evolveum.midpoint.prism.ItemDefinition; @@ -1428,7 +1429,7 @@ private void processSpecialPropertyInbound(Collection userBefore = getUser(USER_JACK_OID); display("User before", userBefore); assertAssignments(userBefore, 0); + assertLinks(userBefore, 1); // WHEN displayWhen(TEST_NAME); - assignAccount(USER_JACK_OID, RESOURCE_DUMMY_YELLOW_OID, null, task, result); + deleteUserAccount(USER_JACK_OID, RESOURCE_DUMMY_YELLOW_OID, task, result); // THEN displayThen(TEST_NAME); assertSuccess(result); PrismObject userAfter = getUser(USER_JACK_OID); + display("User after", userAfter); + assertAssignments(userAfter, 0); + assertLinks(userAfter, 0); + + assertNoDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME); + assertNoDummyAccount(RESOURCE_DUMMY_DARK_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME); + assertNoDummyAccount(RESOURCE_DUMMY_DARK_PERU_NAME, ACCOUNT_JACK_DUMMY_USERNAME); + } + + @Test + public void test501JackAssignDummyDarkYellow() throws Exception { + final String TEST_NAME = "test501JackAssignDummyDarkYellow"; + displayTestTitle(TEST_NAME); + + // GIVEN + Task task = createTask(TEST_NAME); + OperationResult result = task.getResult(); + assumeAssignmentPolicy(AssignmentPolicyEnforcementType.RELATIVE); + + PrismObject userBefore = getUser(USER_JACK_OID); + display("User before", userBefore); + assertAssignments(userBefore, 0); + assertLinks(userBefore, 0); + + // WHEN + displayWhen(TEST_NAME); + assignAccount(USER_JACK_OID, RESOURCE_DUMMY_DARK_YELLOW_OID, null, task, result); + + // THEN + displayThen(TEST_NAME); + assertSuccess(result); + + PrismObject userAfter = getUser(USER_JACK_OID); + display("User after", userAfter); assertAssignments(userAfter, 1); assertLinks(userAfter, 1); - assertDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); + assertDummyAccount(RESOURCE_DUMMY_DARK_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); } - + @Test - public void test502JackAssignDummyPeruDisable() throws Exception { - final String TEST_NAME = "test502JackAssignDummyPeruDisable"; + public void test502JackAssignDummyDarkPeru() throws Exception { + final String TEST_NAME = "test502JackAssignDummyDarkPeru"; displayTestTitle(TEST_NAME); // GIVEN @@ -2324,26 +2371,27 @@ public void test502JackAssignDummyPeruDisable() throws Exception { // WHEN displayWhen(TEST_NAME); - assignAccount(USER_JACK_OID, RESOURCE_DUMMY_PERU_DISABLE_OID, null, task, result); + assignAccount(USER_JACK_OID, RESOURCE_DUMMY_DARK_PERU_OID, null, task, result); // THEN displayThen(TEST_NAME); assertSuccess(result); PrismObject userAfter = getUser(USER_JACK_OID); + display("User after", userAfter); assertAssignments(userAfter, 2); assertLinks(userAfter, 2); - assertDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); - assertDummyAccount(RESOURCE_DUMMY_PERU_DISABLE_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); + assertDummyAccount(RESOURCE_DUMMY_DARK_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); + assertDummyAccount(RESOURCE_DUMMY_DARK_PERU_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); } /** * MID-4554 */ @Test - public void test504JackUnassignDummyPeruDisable() throws Exception { - final String TEST_NAME = "test504JackUnassignDummyPeruDisable"; + public void test504JackUnassignDummyDarkPeru() throws Exception { + final String TEST_NAME = "test504JackUnassignDummyDarkPeru"; displayTestTitle(TEST_NAME); // GIVEN @@ -2355,23 +2403,24 @@ public void test504JackUnassignDummyPeruDisable() throws Exception { // WHEN displayWhen(TEST_NAME); - unassignAccount(USER_JACK_OID, RESOURCE_DUMMY_PERU_DISABLE_OID, null, task, result); + unassignAccount(USER_JACK_OID, RESOURCE_DUMMY_DARK_PERU_OID, null, task, result); // THEN displayThen(TEST_NAME); assertSuccess(result); PrismObject userAfter = getUser(USER_JACK_OID); + display("User after", userAfter); assertAssignments(userAfter, 1); assertLinks(userAfter, 2); - assertDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); - assertDummyAccount(RESOURCE_DUMMY_PERU_DISABLE_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, false); + assertDummyAccount(RESOURCE_DUMMY_DARK_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); + assertDummyAccount(RESOURCE_DUMMY_DARK_PERU_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, false); } @Test - public void test509JackUnassignDummyYellow() throws Exception { - final String TEST_NAME = "test509JackUnassignDummyYellow"; + public void test507JackUnassignDummyDarkYellow() throws Exception { + final String TEST_NAME = "test507JackUnassignDummyDarkYellow"; displayTestTitle(TEST_NAME); // GIVEN @@ -2383,23 +2432,82 @@ public void test509JackUnassignDummyYellow() throws Exception { // WHEN displayWhen(TEST_NAME); - unassignAccount(USER_JACK_OID, RESOURCE_DUMMY_YELLOW_OID, null, task, result); + unassignAccount(USER_JACK_OID, RESOURCE_DUMMY_DARK_YELLOW_OID, null, task, result); // THEN displayThen(TEST_NAME); assertSuccess(result); PrismObject userAfter = getUser(USER_JACK_OID); + display("User after", userAfter); + assertAssignments(userAfter, 0); + assertLinks(userAfter, 2); + + assertDummyAccount(RESOURCE_DUMMY_DARK_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, false); + assertDummyAccount(RESOURCE_DUMMY_DARK_PERU_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, false); + } + + @Test + public void test508JackDeleteDummyDarkYellowAccount() throws Exception { + final String TEST_NAME = "test508JackDeleteDummyDarkYellowAccount"; + displayTestTitle(TEST_NAME); + + // GIVEN + Task task = createTask(TEST_NAME); + OperationResult result = task.getResult(); + + PrismObject userBefore = getUser(USER_JACK_OID); + display("User before", userBefore); + + // WHEN + displayWhen(TEST_NAME); + deleteUserAccount(USER_JACK_OID, RESOURCE_DUMMY_DARK_YELLOW_OID, task, result); + + // THEN + displayThen(TEST_NAME); + assertSuccess(result); + + PrismObject userAfter = getUser(USER_JACK_OID); + display("User after", userAfter); assertAssignments(userAfter, 0); assertLinks(userAfter, 1); - assertNoDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME); - assertDummyAccount(RESOURCE_DUMMY_PERU_DISABLE_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, false); + assertNoDummyAccount(RESOURCE_DUMMY_DARK_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME); + assertDummyAccount(RESOURCE_DUMMY_DARK_PERU_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, false); } @Test - public void test510JackAssignRoleYellowPeruDisable() throws Exception { - final String TEST_NAME = "test510JackAssignRoleYellowPeruDisable"; + public void test509JackDeleteDummyDarkPeruAccount() throws Exception { + final String TEST_NAME = "test509JackDeleteDummyDarkPeruAccount"; + displayTestTitle(TEST_NAME); + + // GIVEN + Task task = createTask(TEST_NAME); + OperationResult result = task.getResult(); + + PrismObject userBefore = getUser(USER_JACK_OID); + display("User before", userBefore); + + // WHEN + displayWhen(TEST_NAME); + deleteUserAccount(USER_JACK_OID, RESOURCE_DUMMY_DARK_PERU_OID, task, result); + + // THEN + displayThen(TEST_NAME); + assertSuccess(result); + + PrismObject userAfter = getUser(USER_JACK_OID); + display("User after", userAfter); + assertAssignments(userAfter, 0); + assertLinks(userAfter, 0); + + assertNoDummyAccount(RESOURCE_DUMMY_DARK_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME); + assertNoDummyAccount(RESOURCE_DUMMY_DARK_PERU_NAME, ACCOUNT_JACK_DUMMY_USERNAME); + } + + @Test + public void test510JackAssignRoleDarkYellowPeru() throws Exception { + final String TEST_NAME = "test510JackAssignRoleDarkYellowPeru"; displayTestTitle(TEST_NAME); // GIVEN @@ -2416,26 +2524,27 @@ public void test510JackAssignRoleYellowPeruDisable() throws Exception { // WHEN displayWhen(TEST_NAME); - assignRole(USER_JACK_OID, ROLE_YELLOW_PERU_DISABLE_OID, task, result); + assignRole(USER_JACK_OID, ROLE_DARK_YELLOW_PERU_OID, task, result); // THEN displayThen(TEST_NAME); assertSuccess(result); PrismObject userAfter = getUser(USER_JACK_OID); + display("User after", userAfter); assertAssignments(userAfter, 1); assertLinks(userAfter, 2); - assertDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); - assertDummyAccount(RESOURCE_DUMMY_PERU_DISABLE_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); + assertDummyAccount(RESOURCE_DUMMY_DARK_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); + assertDummyAccount(RESOURCE_DUMMY_DARK_PERU_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); } /** * MID-4554 */ @Test - public void test519JackUnassignRoleYellowPeruDisable() throws Exception { - final String TEST_NAME = "test519JackUnassignRoleYellowPeruDisable"; + public void test519JackUnassignDarkRoleYellowPeru() throws Exception { + final String TEST_NAME = "test519JackUnassignDarkRoleYellowPeru"; displayTestTitle(TEST_NAME); // GIVEN @@ -2447,18 +2556,86 @@ public void test519JackUnassignRoleYellowPeruDisable() throws Exception { // WHEN displayWhen(TEST_NAME); - unassignRole(USER_JACK_OID, ROLE_YELLOW_PERU_DISABLE_OID, task, result); + unassignRole(USER_JACK_OID, ROLE_DARK_YELLOW_PERU_OID, task, result); // THEN displayThen(TEST_NAME); assertSuccess(result); PrismObject userAfter = getUser(USER_JACK_OID); + display("User after", userAfter); assertAssignments(userAfter, 0); - assertLinks(userAfter, 1); + assertLinks(userAfter, 2); - assertNoDummyAccount(RESOURCE_DUMMY_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME); - assertDummyAccount(RESOURCE_DUMMY_PERU_DISABLE_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, false); + assertDummyAccount(RESOURCE_DUMMY_DARK_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, false); + assertDummyAccount(RESOURCE_DUMMY_DARK_PERU_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, false); + } + + @Test + public void test520JackAssignRoleDarkYellowPeru() throws Exception { + final String TEST_NAME = "test520JackAssignRoleDarkYellowPeru"; + displayTestTitle(TEST_NAME); + + // GIVEN + Task task = createTask(TEST_NAME); + OperationResult result = task.getResult(); + assumeAssignmentPolicy(AssignmentPolicyEnforcementType.RELATIVE); + + // Old password too short for yellow resource + modifyUserChangePassword(USER_JACK_OID, "123abc456QWE", task, result); + + PrismObject userBefore = getUser(USER_JACK_OID); + display("User before", userBefore); + assertAssignments(userBefore, 0); + + // WHEN + displayWhen(TEST_NAME); + assignRole(USER_JACK_OID, ROLE_DARK_YELLOW_PERU_OID, task, result); + + // THEN + displayThen(TEST_NAME); + assertSuccess(result); + + PrismObject userAfter = getUser(USER_JACK_OID); + display("User after", userAfter); + assertAssignments(userAfter, 1); + assertLinks(userAfter, 2); + + assertDummyAccount(RESOURCE_DUMMY_DARK_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); + assertDummyAccount(RESOURCE_DUMMY_DARK_PERU_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, true); + } + + /** + * MID-4554 + */ + @Test + public void test529JackUnassignRoleDarkYellowPeru() throws Exception { + final String TEST_NAME = "test529JackUnassignRoleDarkYellowPeru"; + displayTestTitle(TEST_NAME); + + // GIVEN + Task task = createTask(TEST_NAME); + OperationResult result = task.getResult(); + + PrismObject userBefore = getUser(USER_JACK_OID); + display("User before", userBefore); + AssignmentType currentAssignment = findAssignmentByTargetRequired(userBefore, ROLE_DARK_YELLOW_PERU_OID); + + // WHEN + displayWhen(TEST_NAME); + unassign(UserType.class, USER_JACK_OID, currentAssignment.getId(), task, result); + + // THEN + displayThen(TEST_NAME); + assertSuccess(result); + + PrismObject userAfter = getUser(USER_JACK_OID); + display("User after", userAfter); + assertAssignments(userAfter, 0); + assertLinks(userAfter, 2); + + assertDummyAccount(RESOURCE_DUMMY_DARK_YELLOW_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, false); + assertDummyAccount(RESOURCE_DUMMY_DARK_PERU_NAME, ACCOUNT_JACK_DUMMY_USERNAME, ACCOUNT_JACK_DUMMY_FULLNAME, false); } } diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/rbac/TestRbac.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/rbac/TestRbac.java index 17cfb384dbb..ee96d2d3286 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/rbac/TestRbac.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/rbac/TestRbac.java @@ -1522,7 +1522,7 @@ public void test539JackUnAssignRoleCleric() throws Exception { // WHEN displayWhen(TEST_NAME); - modelService.executeChanges(MiscSchemaUtil.createCollection(assignmentDelta), getDefaultOptions(), task, result); + executeChanges(assignmentDelta, getDefaultOptions(), task, result); // THEN displayThen(TEST_NAME); diff --git a/model/model-intest/src/test/resources/logback-test.xml b/model/model-intest/src/test/resources/logback-test.xml index 51016166b76..81fc1303dea 100644 --- a/model/model-intest/src/test/resources/logback-test.xml +++ b/model/model-intest/src/test/resources/logback-test.xml @@ -49,20 +49,20 @@ - - + + @@ -89,7 +89,7 @@ - + diff --git a/model/model-intest/src/test/resources/multi/resource-dummy-peru-disable.xml b/model/model-intest/src/test/resources/multi/resource-dummy-dark-peru.xml similarity index 95% rename from model/model-intest/src/test/resources/multi/resource-dummy-peru-disable.xml rename to model/model-intest/src/test/resources/multi/resource-dummy-dark-peru.xml index f5b9c07c50f..02b77cb71e3 100644 --- a/model/model-intest/src/test/resources/multi/resource-dummy-peru-disable.xml +++ b/model/model-intest/src/test/resources/multi/resource-dummy-dark-peru.xml @@ -29,7 +29,7 @@ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - Dummy Resource Peru Disable + Dummy Resource Dark Peru @@ -48,7 +48,7 @@ xmlns:icfc="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/connector-schema-3"> - peru-disable + dark-peru @@ -99,7 +99,7 @@ - + relaxed @@ -113,7 +113,6 @@ - strong + + + + + weak + + $c:user/c:name + + + + + icfs:uid + UID + + + ri:fullname + Full Name + + + $user/fullName + + + + weak + + $user/fullName + + + + + ri:location + Location + + strong + + + $c:user/c:locality + + + + + + + + http://midpoint.evolveum.com/xml/ns/public/provisioning/channels-3#import + + + + + description + + + + + ri:ship + Ship + + + + + + organizationalUnit + + + + + + + + ri:loot + Loot + explicit + + http://pirates.net/avast + + + + + + + ri:weapon + Weapon + + weak + + + declare namespace piracy = "http://midpoint.evolveum.com/xml/ns/samples/piracy"; + $user/extension/piracy:weapon + + + + + + ri:drink + Drink + false + + strong + + drink + + + + + ri:quote + Quote + false + + yellow-outbound-quote + strong + + shadowStatus + $shadow/activation/administrativeStatus + + + + + + + + + + + ri:gossip + Gossip + + + + + + + + + + ri:water + + true + + + + + fishy + + + + + + very FISHY + + + $user/fullName + + + + + + 5 + + + + daviejones + + + calypso + + + + + + weak + + $focusExists + + + + + + + + + + + + + + + + passwd-asis + + + + + + passwd-generate + weak + + + + + + weak + + + + + + + + + + + + + + usr + + + + acc + + + + res + + + 3 + size + + +to spiral :size + if :size > 30 [stop] + fd :size rt 15 + spiral :size *1.02 +end + + add + after + + + + + + + + + + + + + + + + true + + + + + true + + + c:name + + declare namespace icfs="http://midpoint.evolveum.com/xml/ns/public/connector/icf-1/resource-schema-3"; + $account/attributes/icfs:name + + + + + + + diff --git a/model/model-intest/src/test/resources/multi/role-yellow-peru-disable.xml b/model/model-intest/src/test/resources/multi/role-dark-yellow-peru.xml similarity index 82% rename from model/model-intest/src/test/resources/multi/role-yellow-peru-disable.xml rename to model/model-intest/src/test/resources/multi/role-dark-yellow-peru.xml index 7095aadcdae..4d76765a876 100644 --- a/model/model-intest/src/test/resources/multi/role-yellow-peru-disable.xml +++ b/model/model-intest/src/test/resources/multi/role-dark-yellow-peru.xml @@ -18,17 +18,17 @@ xmlns:c="http://midpoint.evolveum.com/xml/ns/public/common/common-3" xmlns:t="http://prism.evolveum.com/xml/ns/public/types-3" xmlns:ri="http://midpoint.evolveum.com/xml/ns/public/resource/instance-3"> - Yellow Peru Disable - Yellow account + Peru disable account + Dark Yellow Peru + Dark yellow account + dark peru account - + account - + account diff --git a/model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java b/model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java index 425c7436d1c..0b87f4f2366 100644 --- a/model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java +++ b/model/model-test/src/main/java/com/evolveum/midpoint/model/test/AbstractModelIntegrationTest.java @@ -1010,8 +1010,7 @@ protected void modifyUserAssignment(String userOid, String roleOid, QName refTyp SchemaException, ExpressionEvaluationException, CommunicationException, ConfigurationException, ObjectAlreadyExistsException, PolicyViolationException, SecurityViolationException { ObjectDelta userDelta = createAssignmentUserDelta(userOid, roleOid, refType, relation, extension, activationType, add); - Collection> deltas = MiscSchemaUtil.createCollection(userDelta); - modelService.executeChanges(deltas, options, task, result); + executeChanges(userDelta, options, task, result); } protected void modifyFocusAssignment(Class focusClass, String focusOid, String roleOid, QName refType, QName relation, Task task, @@ -1028,8 +1027,7 @@ protected void modifyFocusAssignment(Class focusClass, SchemaException, ExpressionEvaluationException, CommunicationException, ConfigurationException, ObjectAlreadyExistsException, PolicyViolationException, SecurityViolationException { ObjectDelta delta = createAssignmentFocusDelta(focusClass, focusOid, roleOid, refType, relation, extension, activationType, add); - Collection> deltas = MiscSchemaUtil.createCollection(delta); - modelService.executeChanges(deltas, options, task, result); + executeChanges(delta, options, task, result); } protected void modifyUserAssignment(String userOid, String roleOid, QName refType, QName relation, Task task, @@ -1055,7 +1053,7 @@ protected void modifyFocusAssignment(Class focusClass, throws ObjectNotFoundException, SchemaException, ExpressionEvaluationException, CommunicationException, ConfigurationException, ObjectAlreadyExistsException, PolicyViolationException, SecurityViolationException { ObjectDelta focusDelta = createAssignmentFocusDelta(focusClass, focusOid, roleOid, refType, relation, modificationBlock, add); Collection> deltas = MiscSchemaUtil.createCollection(focusDelta); - modelService.executeChanges(deltas, options, task, result); + executeChanges(focusDelta, options, task, result); } protected void deleteFocusAssignmentEmptyDelta(PrismObject existingFocus, String targetOid, Task task, OperationResult result) @@ -1072,10 +1070,19 @@ protected void deleteFocusAssignmentEmptyDelta(PrismObject ModelExecuteOptions options, Task task, OperationResult result) throws ObjectNotFoundException, SchemaException, ExpressionEvaluationException, CommunicationException, ConfigurationException, ObjectAlreadyExistsException, PolicyViolationException, SecurityViolationException { ObjectDelta focusDelta = createAssignmentFocusEmptyDeleteDelta(existingFocus, targetOid, relation); - Collection> deltas = MiscSchemaUtil.createCollection(focusDelta); - modelService.executeChanges(deltas, options, task, result); + executeChanges(focusDelta, options, task, result); + } + + protected void unassign(Class focusClass, String focusOid, long assignmentId, Task task, OperationResult result) + throws ObjectNotFoundException, SchemaException, ExpressionEvaluationException, CommunicationException, ConfigurationException, ObjectAlreadyExistsException, PolicyViolationException, SecurityViolationException { + unassign(focusClass, focusOid, assignmentId, null, task, result); } + protected void unassign(Class focusClass, String focusOid, long assignmentId, ModelExecuteOptions options, Task task, OperationResult result) + throws ObjectNotFoundException, SchemaException, ExpressionEvaluationException, CommunicationException, ConfigurationException, ObjectAlreadyExistsException, PolicyViolationException, SecurityViolationException { + unassign(focusClass, focusOid, createAssignmentIdOnly(assignmentId), options, task, result); + } + protected void unassign(Class focusClass, String focusOid, AssignmentType currentAssignment, ModelExecuteOptions options, Task task, OperationResult result) throws ObjectNotFoundException, SchemaException, ExpressionEvaluationException, CommunicationException, ConfigurationException, ObjectAlreadyExistsException, PolicyViolationException, SecurityViolationException { Collection> modifications = new ArrayList<>(); @@ -1083,8 +1090,7 @@ protected void unassign(Class focusClass, String focusO assignmentDelta.addValuesToDelete(currentAssignment.asPrismContainerValue().clone()); modifications.add(assignmentDelta); ObjectDelta focusDelta = ObjectDelta.createModifyDelta(focusOid, modifications, focusClass, prismContext); - Collection> deltas = MiscSchemaUtil.createCollection(focusDelta); - modelService.executeChanges(deltas, options, task, result); + executeChanges(focusDelta, options, task, result); } /** @@ -2625,7 +2631,11 @@ protected ObjectDelta createModifyUserDeleteDummyAccount(String userOi } protected ObjectDelta createModifyUserDeleteAccount(String userOid, PrismObject resource) throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException { - String accountOid = getLinkRefOid(userOid, resource.getOid()); + return createModifyUserDeleteAccount(userOid, resource.getOid()); + } + + protected ObjectDelta createModifyUserDeleteAccount(String userOid, String resourceOid) throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException, ConfigurationException, ExpressionEvaluationException { + String accountOid = getLinkRefOid(userOid, resourceOid); PrismObject account = getShadowModel(accountOid); ObjectDelta userDelta = ObjectDelta.createEmptyModifyDelta(UserType.class, userOid, prismContext); @@ -2648,6 +2658,11 @@ protected ObjectDelta createModifyUserUnlinkAccount(String userOid, Pr return userDelta; } + + protected void deleteUserAccount(String userOid, String resourceOid, Task task, OperationResult result) throws ObjectAlreadyExistsException, ObjectNotFoundException, SchemaException, ExpressionEvaluationException, CommunicationException, ConfigurationException, PolicyViolationException, SecurityViolationException { + ObjectDelta userDelta = createModifyUserDeleteAccount(userOid, resourceOid); + executeChanges(userDelta, null, task, result); + } // TASKS @@ -4280,7 +4295,7 @@ protected void modifyRoleDeleteInducement(String roleOid, long inducementId, boo RoleType.F_INDUCEMENT, prismContext, inducement); ModelExecuteOptions options = nullToEmpty(defaultOptions); options.setReconcileAffected(reconcileAffected); - modelService.executeChanges(MiscSchemaUtil.createCollection(roleDelta), options, task, result); + executeChanges(roleDelta, options, task, result); result.computeStatus(); if (reconcileAffected) { TestUtil.assertInProgressOrSuccess(result); From 92b9b29c460784a53c38f291d5e25a8795d34873 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Ga=C5=A1par=C3=ADk?= Date: Fri, 13 Apr 2018 16:48:25 +0200 Subject: [PATCH 06/16] Translation sync. New language: French! MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks to all that contributed: charles.dc.chen (zh_CN), petr.gasparik (cs), rpudil (cs), StéphaneA (fr), wstaszewski pl) --- .../src/main/resources/localization/Midpoint_en.properties | 4 +++- .../src/main/resources/localization/schema_en.properties | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties b/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties index 6a67e5735a0..96c92421d10 100644 --- a/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties +++ b/gui/admin-gui/src/main/resources/localization/Midpoint_en.properties @@ -2979,7 +2979,7 @@ SystemConfigPanel.mail.server.remove.warn=Could not delete selected mail server SystemConfigPanel.mail.server.tooltip=Select the mail server to configure it. To add new configuration, press '+' button. To remove selected configuration, press '-' button. SystemConfigPanel.mail.transportSecurity=Transport security SystemConfigPanel.mail.username=Username -SystemConfigPanel.misc.enableExperimentalCode=Enable experimental code +SystemConfigPanel.misc.enableExperimentalCode=Enable MODEL experimental code SystemConfigPanel.notification.redirectToFile.placeholder=Filename SystemConfigPanel.notification.redirectToFile=Redirect to file SystemConfigPanel.title.accountSynchronization=Global account synchronization settings @@ -3676,6 +3676,7 @@ PageAssignmentsList.submitButton=Submit PageAssignmentsList.resolveConflicts=Resolve conflicts PageAssignmentsList.commentHere=Comment here... PageAssignmentsList.requestComment=Request comment (optional) +PageAssignmentsList.saveAssignmentsError=Could not save assignments. Reason: AssignmentShoppingCartPanel.treeTitle=Role catalog AssignmentViewType.ROLE_CATALOG_VIEW=Role catalog view AssignmentViewType.ROLE_TYPE=All roles view @@ -3979,3 +3980,4 @@ pageAdminFocus.dataProtection=Data protection PageInternals.title.cache=Caches PageInternals.tab.cache=Cache management InternalsCachePanel.button.clearCaches=Clear caches +PageAccountActivation.user.not.found=Unexpected problem occurs. Please contact system administrator. diff --git a/infra/schema/src/main/resources/localization/schema_en.properties b/infra/schema/src/main/resources/localization/schema_en.properties index 4f17209e40e..d6164438593 100644 --- a/infra/schema/src/main/resources/localization/schema_en.properties +++ b/infra/schema/src/main/resources/localization/schema_en.properties @@ -689,4 +689,4 @@ relation.owner=owner relation.consent=consent AbstractCredentialType.forceChange=Force change on next login PasswordType.value=Value -AdminGuiConfigurationType.enableExperimentalFeatures=Enable GUI experimental features +AdminGuiConfigurationType.enableExperimentalFeature=Enable GUI experimental features From 179fc9301b4fa5afbfaa83139a41acfe62a3884f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Ga=C5=A1par=C3=ADk?= Date: Fri, 13 Apr 2018 16:58:53 +0200 Subject: [PATCH 07/16] New language - French --- .../initial-objects/200-lookup-languages.xml | 4 + .../initial-objects/210-lookup-locales.xml | 4 + .../localization/Midpoint_fr.properties | 3983 +++++++++++++++++ .../resources/localization/locale.properties | 3 + .../localization/schema_fr.properties | 692 +++ 5 files changed, 4686 insertions(+) create mode 100644 gui/admin-gui/src/main/resources/localization/Midpoint_fr.properties create mode 100644 infra/schema/src/main/resources/localization/schema_fr.properties diff --git a/gui/admin-gui/src/main/resources/initial-objects/200-lookup-languages.xml b/gui/admin-gui/src/main/resources/initial-objects/200-lookup-languages.xml index 899e145a4b9..90fba579bb0 100644 --- a/gui/admin-gui/src/main/resources/initial-objects/200-lookup-languages.xml +++ b/gui/admin-gui/src/main/resources/initial-objects/200-lookup-languages.xml @@ -53,6 +53,10 @@ fi + + fr + + hu diff --git a/gui/admin-gui/src/main/resources/initial-objects/210-lookup-locales.xml b/gui/admin-gui/src/main/resources/initial-objects/210-lookup-locales.xml index f4d0d9d8e56..0bd0cb35fd4 100644 --- a/gui/admin-gui/src/main/resources/initial-objects/210-lookup-locales.xml +++ b/gui/admin-gui/src/main/resources/initial-objects/210-lookup-locales.xml @@ -44,6 +44,10 @@ fi + + fr + + hu diff --git a/gui/admin-gui/src/main/resources/localization/Midpoint_fr.properties b/gui/admin-gui/src/main/resources/localization/Midpoint_fr.properties new file mode 100644 index 00000000000..b5685e99570 --- /dev/null +++ b/gui/admin-gui/src/main/resources/localization/Midpoint_fr.properties @@ -0,0 +1,3983 @@ + +# Copyright (c) 2010-2018 Evolveum +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +AbstractRoleType.delegable=Delegable +AbstractRoleType.requestable=Requestable +ACAttributePanel.button.showExprEditor=Afficher l'expression +ACAttributePanel.hasOutbound=Has outbound mapping +ACAttributePanel.required=Champ obligatoire +addCapabilityDialog.button.Add=Ajouter +addCapabilityDialog.button.cancel=Annuler +addCapabilityDialog.column.name=Nom +addCapabilityDialog.title=Choisir les capacités à ajouter +admStatusFetchStrategy.nullValid=Choisir un +AEPlevel.FULL=Complet +AEPlevel.LEGALIZE=Relatif +AEPlevel.MARK=Marque +AEPlevel.NONE=Aucun +AEPlevel.POSITIVE=Positive +AssignableOrgSelectionPanel.button.assignRoot=Assigner la racine +assignablePopupContent.button.assign=Assigner +assignablePopupContent.button.add=Ajouter +assignablePopupContent.description=Description +assignablePopupContent.displayName=Affichage du nom +assignablePopupContent.message.errorLoadingRoleTypes=Could not load available role types for search purposes. +assignablePopupContent.message.noOrgStructureDefined=Aucune structure d'organisation de définie +assignablePopupContent.name=Nom +assignablePopupContent.role.type=Role type +AssignmentEditorPanel.attributes=Attributs +AssignmentEditorPanel.browser.title=Navigateur +AssignmentEditorPanel.description=Description +AssignmentEditorPanel.enabledFrom={0}, du {1,date,medium} +AssignmentEditorPanel.enabledFromTo={0}, du {1,date,medium} au {2,date,medium} +AssignmentEditorPanel.enabledTo={0}, jusqu'au {1,date,medium} +AssignmentEditorPanel.focusType=Focus type +AssignmentEditorPanel.hideEmpty=Masquer si vide +AssignmentEditorPanel.loadError=Error loading object +AssignmentEditorPanel.manager=Manager +AssignmentEditorPanel.member=Membre +AssignmentEditorPanel.name.focus=(focus mapping) +AssignmentEditorPanel.name.noTarget=(aucune cible) +AssignmentEditorPanel.orgRef=Unité d'organisation / projet +AssignmentEditorPanel.relation.notSpecified="Non spécifié" +AssignmentEditorPanel.relation=Relation +AssignmentEditorPanel.resource=Ressource +AssignmentEditorPanel.showEmpty=Afficher si vide +AssignmentEditorPanel.showMore=Afficher plus +AssignmentEditorPanel.targetError=Assignment target was not found. Either target oid is malformed or target object does not exist. +AssignmentEditorPanel.target=Cible +AssignmentEditorPanel.tenantRef=Locataire +AssignmentEditorPanel.undefined=Non défini +AssignmentEditorPanel.metadataBlock={0} Metadata +AssignmentActivationPopupPanel.title=Activation +AssignmentActivationPopupPanel.okButton=OK +AssignmentActivationPopupPanel.cancelButton=Annuler +MetadataPanel.requestTimestamp=Request timestamp +MetadataPanel.requestorRef=Requester +MetadataPanel.createTimestamp=Create timestamp +MetadataPanel.creatorRef=Creator +MetadataPanel.createApproverRef=Create approver +MetadataPanel.createApprovalTimestamp=Create Approval Timestamp +MetadataPanel.modifyTimestamp=Modify timestamp +MetadataPanel.modifierRef=Modifier +MetadataPanel.modifyApproverRef=Modify approver +MetadataPanel.modifyApprovalTimestamp=Modify approval timestamp +RelationTypes.MANAGER=Manager +RelationTypes.OWNER=Propriétaire +RelationTypes.APPROVER=Approver +RelationTypes.MEMBER=Default +RelationTypes.ANY=N'importe quel +DelegationEditorPanel.from=De +DelegationEditorPanel.to=A +DelegationEditorPanel.meLabel=Current user +DelegationEditorPanel.limitPrivilegesButton=Limit privileges +DelegationEditorPanel.privileges=Assignment privileges +DelegationEditorPanel.workflowApprovals=Workflow approvals +DelegationEditorPanel.delegateApprovalWorkItems=Delegate completion of approval work items +DelegationEditorPanel.delegateCertificationWorkItems=Delegate review of certification work items +DelegationEditorPanel.allPrivilegesLabel=Delegate all/selected assignment privileges +DelegationEditorPanel.noPrivilegesLabel=No privileges +DelegationEditorPanel.delegateManagementWorkItems=Delegate completion of case management work items +DelegationEditorPanel.assignmentLimitations=Assignment limitations +DelegationEditorPanel.allowTransitive=Allow transitive delegations +AssignmentPreviewDialog.button.cancel=Annuler +AssignmentPreviewDialog.column.description=Description +AssignmentPreviewDialog.column.intent=Objectif +AssignmentPreviewDialog.column.kind=Sorte +AssignmentPreviewDialog.column.name=Nom +AssignmentPreviewDialog.column.orgRef=Org +AssignmentPreviewDialog.column.tenant=Locataire +AssignmentPreviewDialog.column.relation=Relation +AssignmentPreviewDialog.label=Voir les affectations directes et indirectes +AssignmentPreviewDialog.delegationPreviewLabel=Limit privileges +AssignmentPreviewDialog.type.direct=Direct +AssignmentPreviewDialog.type.indirect=Indirect +AssignmentTablePanel.menu.assign=Attribuer +AssignmentTablePanel.menu.assignOrg=Attribuer org. +AssignmentTablePanel.menu.assignOrg.noorgs=No organization structure defined. +AssignmentTablePanel.menu.assignRole=Attribuer un rôle +AssignmentTablePanel.menu.addDelegation=Add delegation +AssignmentTablePanel.menu.deleteDelegation=Delete delegation +AssignmentTablePanel.menu.unassign=Effacer l'attribution +AssignmentTablePanel.menu.showAllAssignments=Montrer toutes les attributions +AssignmentTablePanel.message.couldntAssignObject=Impossible d'attribuer l'objet '{0}', raison: {1}. +AssignmentTablePanel.message.illegalAssignmentState=État d'attribution invalide '{0}'. +AssignmentTablePanel.message.noAssignmentSelected=Aucune affectation sélectionnée +AssignmentTablePanel.message.noDelegationsSelected=No delegation selected. +AssignmentTablePanel.modal.message.delete=Voulez-vous vraiment effacer {0} attribution(s)? +AssignmentTablePanel.modal.message.deleteDelegation=Do you really want to delete {0} delegation(s)? +AssignmentTablePanel.modal.message.noDelegationWarning=User doesn't have any delegable item +AssignmentTablePanel.modal.title.confirmDeletion=Confirmer la suppression +AssignmentTablePanel.modal.title.selectAssignment=Sélectionnez un objet +associationAttribute.nullValid=Choisir un +AsyncDashboardPanel.loading=Chargement des données +AuditPopulPanel.exportType.label=Type de fichier d'export +AuditPopupPanel.auditEventType=Type d'événement +AuditPopupPanel.dateFrom=De +AuditPopupPanel.dateTo=A +AuditPopupPanel.title=Configuration de base du rapport d'audit +BasicSearchPanel.clear=Effacer la recherche +BasicSearchPanel.search=Recherche +BasicSearchPanel.textPlaceholder=Recherche +capabilityActivationPanel.label=Configuration de l'activation +capabilityActivationPanel.label.attributeName=Nom d'attribut +capabilityActivationPanel.label.disableList=Désactiver la liste +capabilityActivationPanel.label.enabledDisabled=Activé/désactivé +capabilityActivationPanel.label.enabled=Activé +capabilityActivationPanel.label.enableList=Activer la liste +capabilityActivationPanel.label.normalList=Normal list +capabilityActivationPanel.label.lockedList=Locked list +capabilityActivationPanel.label.ignoreAttribute=Ignorer l'attribut +capabilityActivationPanel.label.returnedByDefault=Renvoyé par défaut +capabilityActivationPanel.label.status.message=The same as enabled/disabled +capabilityActivationPanel.label.status=Statut +capabilityActivationPanel.label.lockout=Lockout +capabilityActivationPanel.label.validFrom=Valide à partir du +capabilityActivationPanel.label.validTo=Valide jusqu'au +capabilityActivationPanel.list.placeholder=Insérer une valeur +capabilityCredentialsPanel.label=Configuration des informations d'identification +capabilityCredentialsPanel.label.enabled=Activé +capabilityCredentialsPanel.label.password=Mot de passe +capabilityCredentialsPanel.label.returned=Renvoyé par défaut +capabilityListRepeater.label.text.placeholder=Language URL +capabilityScriptPanel.label.enabled=Activé +capabilityScriptPanel.label.onConnector=Sur le connecteur +capabilityScriptPanel.label.onResource=Sur la ressource +capabilityScriptPanel.label=Configuration du script +CapabilityStep.capabilities=Capabilities +CapabilityStep.addCapabilities=Add capabilities +CapabilityStep.disabled=(disabled) +CapabilityStep.activation.tooltip.attributeName=Name of the attribute that contains a value for simulated administrativeStatus. This is usually an attribute that contains some kind of enabled/disabled information. Typical examples are attributes such as "enabled", "ds-pwp-account-disabled", "accountStatus", etc. +CapabilityStep.activation.tooltip.disableList=List of attribute values that represent the "disabled" state. If any of these values are present in the attribute then the object will be considered to be disabled. Typical values are "false", "disabled", "0" or empty value. +CapabilityStep.activation.tooltip.enabled=True if this capability is active. False if it is disabled. Disabled capability acts in the same way as if it was not there. Capabilities can be disabled e.g. to work around connector bugs, to make resource read-only, etc. +CapabilityStep.activation.tooltip.enableList=List of attribute values that represent the "enabled" state. If any of these values are present in the attribute then the object will be considered to be enabled. Typical values are "true", "ENABLED", "1" and so on. +CapabilityStep.activation.tooltip.ignoreAttribute=If set to true then the attribute which is used for simulated activation will be marked as ignored in the schema. I.e. system will pretend that this attribute does not exist and only use the standard administrativeStatus. This is the default. If set to false then the attribute will also be visible in the schema and both the administrativeStatus and the original attribute will work. This may be needed if the attribute has a richer set of states than the administrativeStatus attribute. But in this case beware of value conflicts between administrativeStatus and the original attribute. +CapabilityStep.activation.tooltip.lockoutAttributeName=Name of the attribute that contains a value for simulated lockoutStatus. This is usually an attribute that contains some kind of normal/locked information. +CapabilityStep.activation.tooltip.lockoutNormalList=List of attribute values that represent the "normal" state. If any of these values are present in the attribute then the object will be considered to be in a normal state. +CapabilityStep.activation.tooltip.lockoutLockedList=List of attribute values that represent the "locked" state. If any of these values are present in the attribute then the object will be considered to be in a locked state. +CapabilityStep.activation.tooltip.lockoutIgnoreAttribute=If set to true then the attribute which is used for simulated activation will be marked as ignored in the schema. I.e. system will pretend that this attribute does not exist and only use the standard lockoutStatus. This is the default. If set to false then the attribute will also be visible in the schema and both the lockoutStatus and the original attribute will work. This may be needed if the attribute has a richer set of states than the lockoutStatus attribute. But in this case beware of value conflicts between lockoutStatus and the original attribute. +CapabilityStep.activation.tooltip.returnedByDefault=If true then the activation attribute is returned with resource objects by default and it does not need to be requested. If false then the activation attribute has to be explicitly requested. +CapabilityStep.activation.tooltip.validFromEnabled=True if the resource supports validFrom activation property. +CapabilityStep.activation.tooltip.validFromReturned=True if the validFrom property is returned by default. False if it needs to be explicitly requested. +CapabilityStep.activation.tooltip.validToEnabled=True if the resource supports validTo activation property +CapabilityStep.activation.tooltip.validToReturned=True if the validTo property is returned by default. False if it needs to be explicitly requested. +CapabilityStep.capability.activation.tooltip=Activation capability. Ability to enable/disable accounts, set validity dates, etc. +CapabilityStep.capability.create.tooltip=Capability to create (add) new objects on resource. +CapabilityStep.capability.credentials.tooltip=Capability to set credentials for resource accounts. +CapabilityStep.capability.delete.tooltip=Capability to delete existing objects on resource. +CapabilityStep.capability.liveSync.tooltip=Live synchronization capability. Ability to efficiently fetch data changes in almost-real-time. +CapabilityStep.capability.read.tooltip=Capability to read data from the resource. +CapabilityStep.capability.script.tooltip=Capability to execute scripts on connector and resource. +CapabilityStep.capability.testConnection.tooltip=Capability to test connection to the resource. +CapabilityStep.capability.update.tooltip=Capability to update (modify) existing objects on resource. +CapabilityStep.configured=Configuré +CapabilityStep.credentials.tooltip.enabled=True if this capability is active. False if it is disabled. Disabled capability acts in the same way as if it was not there. Capabilities can be disabled e.g. to work around connector bugs, to make resource read-only, etc. +CapabilityStep.credentials.tooltip.passEnabled=True if the resource supports password credentials. +CapabilityStep.credentials.tooltip.passReturned=True if the password is returned by default. False if it needs to be explicitly requested. +CapabilityStep.message.cantLoadCaps=Impossible de charger les capacités +CapabilityStep.native=Natal +CapabilityStep.script.tooltip.enabled=True if this capability is active. False if it is disabled. Disabled capability acts in the same way as if it was not there. Capabilities can be disabled e.g. to work around connector bugs, to make resource read-only, etc. +CapabilityStep.script.tooltip.onConnector=Capability to execute scripts "on connector". This means that the scripts will be executed on the machine where the connector is installed. This is usually system node or a connector server. +CapabilityStep.script.tooltip.onResource=Capability to execute scripts "on resource". This means that the scripts will be executed on the machine where the connector connects. This is usually the server that hosts the resource (AD server, remote Unix machine, database server, etc.) +CapabilityStep.title=Capabilities +capabilityValuePanel.label.capability.create=Create capability +capabilityValuePanel.label.capability.delete=Delete capability +capabilityValuePanel.label.capability.liveSync=Live synchronization capability +capabilityValuePanel.label.capability.read=Read capability +capabilityValuePanel.label.capability.testConnection=Test connection capability +capabilityValuePanel.label.capability.update=Update capability +capabilityValuePanel.label.enabled=Activé +capabilityValuePanel.label.capability.addRemoveAttributeValues=Add/remove values capability +capabilityValuePanel.label.capability.auxiliaryObjectClasses=Auxiliary object classes capability +CertDefinitionPage.message.cantSaveEmpty=Impossible de sauvegarder un XML vide +CertDefinitionPage.message.cantSaveEmptyName=Can't save definition with empty name +Channel.discovery=Discovery +Channel.import=Importer +Channel.liveSync=Live Synchronization +Channel.null=Choisir un +channel.nullValid=Choisir un +Channel.reconciliation=Réconciliation +Channel.recompute=Recompute +Channel.user=Utilisateur +Channel.webService=Service Web +Channel.resetPassword=Réinitialiser le mot de passe +Channel.selfRegistration=Self registration +Channel.init=Initialization +Channel.rest=REST +Channel.objectImport=Object import +CheckTableHeader.label.error=Erreur +CheckTableHeader.protected=Protégé +CheckTableHeader.showMore=Afficher plus +CheckTableHeader.triggerPlanned=Trigger planned on {0}. +CheckTableHeader.triggerUnknownTime=Trigger without time planned. +chooseTypeDialog.button.cancel=Annuler +chooseTypeDialog.column.name=Nom +chooseTypeDialog.message.queryError=Error occurred during translation search query to filter. +chooseTypeDialog.title=Choose Object +chooseTypePanel.ObjectNameValue.badOid=(tenant not found) +chooseTypePanel.ObjectNameValue.null=Aucun +com.evolveum.midpoint.notifications.api.transports.MailTransport.send=Send mail (Notifications) +com.evolveum.midpoint.notifications.api.transports.SimpleSmsTransport.send=Send SMS (Notifications) +ConditionalSearchFilterEditor.condition.label=Conditions +ConditionalSearchFilterEditor.condition.description.label=Condition description +ConditionalSearchFilterEditor.condition.update.label=Update condition +ConditionalSearchFilterEditor.condition.type.label=Condition type +ConditionalSearchFilterEditor.description=Description +ConditionalSearchFilterEditor.label=Edit synchronization correlation +configurationProperties=Configuration +ConfigurationStep.button.testConnection=Save and test connection +ConfigurationStep.title=Configuration +confirmationDialog.no=No +confirmationDialog.yes=Yes +connectorPoolConfiguration=Connector pool +ContainerValuePanel.label.attribute=Attribute +ContainerValuePanel.label.value=Value(s) +contentPanel.accounts=Content +contentPanel.entitlements=Entitlements +CountToolbar.label={0,number,integer} to {1,number,integer} of {2,number,integer} +CountToolbar.noFound=No matching result found. +DateValidator.message.fromAfterTo=Valid from date must be before valid to date. +DebugButtonPanel.button.delete=Effacer +DebugButtonPanel.button.export=Exporter +PageDebugView.xmlViewButton=XML +PageDebugView.xmlJsonButton=JSON +PageDebugView.xmlYamlButton=YAML +DecisionsPanel.comment=Comment +DecisionsPanel.result=Outcome +DecisionsPanel.user=Utilisateur +DecisionsPanel.attorney=Attorney +DecisionsPanel.originalActor=Original actor +DecisionsPanel.stage=Stage +DecisionsPanel.when=When +DecisionsPanel.escalation=Esc. level +DefinitionScopeObjectType.FocusType=Users, roles, orgs and services +DefinitionScopeObjectType.AbstractRoleType=Roles, orgs and services +DefinitionScopeObjectType.RoleType=Roles +DefinitionScopeObjectType.UserType=Users +DefinitionScopeObjectType.OrgType=Orgs +DefinitionScopeObjectType.ServiceType=Services +deleteAllDialog.label.accountShadowsDelete=Account shadows to delete: {0} +deleteAllDialog.label.nonAccountShadowsDelete=Non-Account shadows to delete: {0} +deleteAllDialog.label.org=Org. Units +deleteAllDialog.label.orgUnitsDelete=Org. units to delete: {0} +deleteAllDialog.label.shadow.account=Account shadows +deleteAllDialog.label.shadow.nonAccount=Non-Account shadows +deleteAllDialog.label.shadow.org=Org. unit shadows +deleteAllDialog.label.shadow.role=Role shadows +deleteAllDialog.label.totalToDelete=Total objects to delete: {0} +deleteAllDialog.label.usersDelete=Users to delete: {0} (User 'Administrator' will not be deleted) +deleteAllDialog.label.users=Users +deleteAllDialog.message.choose=Choose object types to delete: +deleteAllDialog.no=No +deleteAllDialog.yes=Yes +DeltaPanel.label.changeType=Change type: +DeltaPanel.label.modifications=Modifications: +DeltaPanel.label.objectToAdd=Object to add: +DeltaPanel.label.oid=object with oid: +direction.nullvalid=Choisir un +DoubleButtonPanel.button.default=Execute +DoubleButtonPanel.download=Download +DropDownChoicePanel.empty=Choose one +DropDownChoicePanel.notDefined=Non défini +EmptyProcessDetailsPanel.message=Process details are not available. +ExecuteChangeOptionsPanel.label.executeAfterAllApprovals=Execute after all approvals +ExecuteChangeOptionsPanel.label.executeAfterAllApprovals.help=If checked, execution of changes is delayed until all the required approvals are gathered. If unchecked, partial changes are executed as soon as they are approved - or immediately, if no approval is required. +ExecuteChangeOptionsPanel.label.force=Force +ExecuteChangeOptionsPanel.label.force.help=Force the operation even if it would otherwise fail due to an external failure. E.g. attempt to delete an account that no longer exists on resource may fail without a Force option. If this option is used then the operation is finished even if the account does not exist (meaning that - at least - shadow is removed from midPoint repository). +ExecuteChangeOptionsPanel.label.keepDisplayingResults=Keep displaying results +ExecuteChangeOptionsPanel.label.keepDisplayingResults.help=Should the execution results and operational statistics be displayed even after the operation completes? If not checked, the page with results and statistics will disappear automatically on operation completion. +ExecuteChangeOptionsPanel.label.reconcileAffected=Reconcile affected objects +ExecuteChangeOptionsPanel.label.reconcileAffected.help=Reconcile affected objects +ExecuteChangeOptionsPanel.label.reconcile=Reconcile +ExecuteChangeOptionsPanel.label.reconcile.help=Option to reconcile focus and all projections while executing changes. +ExecuteChangeOptionsPanel.options=Options +existenceFetchStrategy.nullValid=Choisir un +ExportType.CSV=CSV +ExportType.DOCX=DOCX +ExportType.HTML=HTML +ExportType.JXL=JXL +ExportType.ODS=ODS +ExportType.ODT=ODT +ExportType.PDF=PDF +ExportType.PPTX=PPTX +ExportType.RTF=RTF +ExportType.XHTML=XHTML +ExportType.XLS=XLS +ExportType.XLSX=XLSX +ExportType.XML_EMBED=XML_EMBED +ExportType.XML=XML +ExpressionEditorPanel.button.expressionSave=Update Expression +ExpressionEditorPanel.label.expression=Expression +ExpressionEditorPanel.label.language=Language +ExpressionEditorPanel.label.type=Expression Type +ExpressionEditorPanel.label.description=Description +ExpressionEditorPanel.label.valuePolicyRef=Policy Ref. +ExpressionEditorPanel.message.cantSerialize=Could not create JAXBElement from provided XML expression. Please enter correct expression. Reason: {0} +ExpressionEditorPanel.message.expressionSuccess=Expression has been update successfully. +ExpressionEvaluatorType.AS_IS=As is +ExpressionEvaluatorType.GENERATE=Generate +ExpressionEvaluatorType.LITERAL=Literal +ExpressionEvaluatorType.null=Choose one +ExpressionEvaluatorType.PATH=Path +ExpressionEvaluatorType.SCRIPT=Script +ExpressionReturnMultiplicityType.MULTI=Multi +ExpressionReturnMultiplicityType.SINGLE=Single +ExpressionVariableEditor.button.cancel=Annuler +ExpressionVariableEditor.button.save=Enregistrer +ExpressionVariableEditor.button.apply=Apply +ExpressionVariableEditor.label.description=Description +ExpressionVariableEditor.label=Edit expression variable +ExpressionVariableEditor.label.name=Nom +ExpressionVariableEditor.label.objectRef=Object reference +ExpressionVariableEditor.label.path=Path +ExpressionVariableEditor.label.value=Valeur +FeedbackAlertMessage.error=Erreur +FeedbackAlertMessage.info=Information +FeedbackAlertMessage.success=Réussi +FeedbackAlertMessage.warn=Alerte +feedbackMessagePanel.cause=Cause : +feedbackMessagePanel.collapseAll=Collapse all +feedbackMessagePanel.context=Contexte : +feedbackMessagePanel.count=Compte : +feedbackMessagePanel.expandAll=Expand all +feedbackMessagePanel.export=Exporter en XML +feedbackMessagePanel.hideStack=[ HIDE ERROR STACK ] +feedbackMessagePanel.message.debug=Déboguer +feedbackMessagePanel.message.error=Erreur +feedbackMessagePanel.message.expectedError=Erreur attendue +feedbackMessagePanel.message.fatalError=Erreur fatale +feedbackMessagePanel.message.info=Information +feedbackMessagePanel.message.inProgress=En cours +feedbackMessagePanel.message.notApplicable=Non applicable +feedbackMessagePanel.message.partialError=Erreur partielle +feedbackMessagePanel.message.success=Réussi +feedbackMessagePanel.message.undefined=Non défini +feedbackMessagePanel.message.unknown=Inconnu +feedbackMessagePanel.message.warn=Alerte +feedbackMessagePanel.param=Param: +feedbackMessagePanel.showStack=[ SHOW ERROR STACK ] +feedbackMessagePanel.times=times +feedtempMessagePanelbackMessagePanel.message.info=Information +fetchStrategy.nullValid=Choisir un +filter.duplicate=Le filtre avec le nom '{0}' est déjà défini +filter.emptyFilter=Un filtre ne doit pas être vide +H3Header.label.error=Erreur +H3Header.showMore=Afficher plus +HandlerUriActions.ACTION_ADD_FOCUS=Add focus +HandlerUriActions.ACTION_ADD_USER=Ajouter un utilisateur (obsolète) +HandlerUriActions.ACTION_DELETE_ACCOUNT=Effacer le compte (obsolète) +HandlerUriActions.ACTION_DELETE_FOCUS=Delete focus +HandlerUriActions.ACTION_DELETE_SHADOW=Delete shadow +HandlerUriActions.ACTION_DELETE_USER=Effacer l'utilisateur (obsolète) +HandlerUriActions.ACTION_DISABLE_ACCOUNT=Désactiver le compte (obsolète) +HandlerUriActions.ACTION_DISABLE_USER=Désactiver l'utilisateur (obsolète) +HandlerUriActions.ACTION_INACTIVATE_FOCUS=Inactivate focus +HandlerUriActions.ACTION_INACTIVATE_SHADOW=Inactivate shadow +HandlerUriActions.ACTION_LINK_ACCOUNT=Lier le compte (obsolète) +HandlerUriActions.ACTION_LINK=Lier +HandlerUriActions.ACTION_MODIFY_USER=Modifier l'utilisateur (obsolète) +HandlerUriActions.ACTION_SYNCHRONIZE=Synchroniser (obsolète) +HandlerUriActions.ACTION_UNLINK_ACCOUNT=Délier le compte (obsolète) +HandlerUriActions.ACTION_UNLINK=Délier +HoursValidator.range=Field '${label}' have to be between ${minimum} and ${maximum}. +ImportOptionsPanel.errorCount=Error count +importOptionsPanel.fetchResourceSchema=Fetch resource schema +importOptionsPanel.keepOid=Conserver l'OID +ImportOptionsPanel.options=Options +importOptionsPanel.overwriteExistingObject=Overwrite existing object +importOptionsPanel.protectedByEncryption=Protected by encryption +importOptionsPanel.referentialIntegrity=Referential integrity +importOptionsPanel.stopAfter=Stop after errors reach +importOptionsPanel.summarizeErrors=Summarize errors +importOptionsPanel.summarizeSuccesses=Summarize successes +importOptionsPanel.validateDynamicSchema=Validate dynamic schema +importOptionsPanel.validateStaticSchema=Validate static schema (XML only) +importOptionsPanel.fullProcessing=Full processing +ItemApprovalPanel.approvalSchema=Approval schema +ItemApprovalPanel.currentWorkItems=Current work items +ItemApprovalPanel.nextStages=Following stages +ItemApprovalPanel.wholeProcess=Whole approval process +ItemApprovalPanel.decisionsDoneWhenFinishedIs_false=Decisions done so far +ItemApprovalPanel.decisionsDoneWhenFinishedIs_true=Decisions done +ItemApprovalPanel.itemThatWasApproved=Item that was considered (and was APPROVED) +ItemApprovalPanel.itemThatWasCompleted=Item that was completed +ItemApprovalPanel.itemThatWasRejected=Item that was considered (and was REJECTED) +ItemApprovalPanel.itemToBeApproved=Item to be approved +JasperReportConfigurationPanel.addField=Add field +JasperReportConfigurationPanel.addParameter=Ajouter paramètre +JasperReportConfigurationPanel.deleteField=Effacer le champ +JasperReportConfigurationPanel.deleteParameter=Effacer le paramètre +JasperReportConfigurationPanel.fieldClass=Field class +JasperReportConfigurationPanel.fieldName=Field name +JasperReportConfigurationPanel.forPrompting=For prompting +JasperReportConfigurationPanel.parameterClass=Parameter class +JasperReportConfigurationPanel.nestedClass=Nested class +JasperReportConfigurationPanel.parameterName=Parameter name +JasperReportConfigurationPanel.parameterProperty=Propriété : {0} +JasperReportConfigurationPanel.reportFields=Report fields +JasperReportConfigurationPanel.reportParameters=Report parameters +JasperReportConfigurationPanel.reportQuery=Report query +JasperReportConfigurationPanel.errormsg=Valeurs nulles non autorisées +JasperReportConfigurationPanel.properties=Propriétés +JasperReportConfigurationPanel.configure=Configurer +JasperReportParameterProperties.property.name=Property name +JasperReportParameterProperties.property.value=Property value +JasperReportParameterProperties.key=Key +JasperReportParameterProperties.label=Label +JasperReportParameterProperties.targetType=Target type +JasperReportParameterProperties.multivalue=Multivalue +JasperReportParameterProperties.config=Properties configuration +JasperReportParameterProperties.title=Configurer +kind.nullValid=Choisir un +Language.GROOVY=Groovy (default) +Language.JAVASCRIPT=Javascript +Language.XPATH=XPath +LimitationsEditorDialog.allow=Autoriser +LimitationsEditorDialog.button.add=Add Limitation Object +LimitationsEditorDialog.button.cancel=Annuler +LimitationsEditorDialog.button.save=Enregistrer +LimitationsEditorDialog.button.apply=Apply +LimitationsEditorDialog.deny=Refuser +LimitationsEditorDialog.inherit=Inherit +LimitationsEditorDialog.label.add=Ajouter +LimitationsEditorDialog.label.close=Fermer +LimitationsEditorDialog.label=Edit Resource Limitations +LimitationsEditorDialog.label.ignore=Ignorer +LimitationsEditorDialog.label.layers=Layers +LimitationsEditorDialog.label.maxOccurs=Max. occurs +LimitationsEditorDialog.label.minOccurs=Min. occurs +LimitationsEditorDialog.label.model=Modèle +LimitationsEditorDialog.label.modify=Modifier +LimitationsEditorDialog.label.other=Autre +LimitationsEditorDialog.label.presentation=Presentation +LimitationsEditorDialog.label.propertyAccess=Property access +LimitationsEditorDialog.label.read=Lire +LimitationsEditorDialog.label.schema=Schéma +logger.duplicate=Logger with name '{0}' is already defined +logger.emptyLogger=Logger must not be empty +LoggingConfigPanel.appender=Appender +LoggingConfigPanel.appenders=Appenders +LoggingConfigPanel.appenders.appending=Appending +LoggingConfigPanel.appenders.filePath=File path +LoggingConfigPanel.appenders.filePattern=File pattern +LoggingConfigPanel.appenders.Inherit=Inherited +LoggingConfigPanel.appenders.maxFileSize=Max. file size [kB] +LoggingConfigPanel.appenders.maxHistory=Max. history +LoggingConfigPanel.appenders.name=Nom +LoggingConfigPanel.appenders.pattern=Pattern +LoggingConfigPanel.audit=Audit +LoggingConfigPanel.auditLog=Audit log +LoggingConfigPanel.button.addClassLogger=Add logger +LoggingConfigPanel.button.addComponentLogger=Add component logger +LoggingConfigPanel.button.addConsoleAppender=Add console appender +LoggingConfigPanel.button.addFileAppender=Add file appender +LoggingConfigPanel.button.addStandardLogger=Add standard logger +LoggingConfigPanel.button.deleteAppender=Delete appender +LoggingConfigPanel.button.deleteLogger=Delete logger +LoggingConfigPanel.button.reset=Reset +LoggingConfigPanel.button.save=Enregistrer +LoggingConfigPanel.details=Détails +LoggingConfigPanel.logger=Logger +LoggingConfigPanel.loggersAppender=Appender +LoggingConfigPanel.loggersLevel=Level +LoggingConfigPanel.loggers=Loggers +LoggingConfigPanel.profiling.dumpInterval=Dump interval +LoggingConfigPanel.profiling.dumpInterval.placeholder=Dump interval +LoggingConfigPanel.profiling.dumpInterval.tooltip=Specify value in minutes (Default is 30 min.) +LoggingConfigPanel.profiling.entryExit=Profiling entry/exit +LoggingConfigPanel.profiling.general=Profiling +LoggingConfigPanel.profiling.performanceStatistics=Performance Statistics +LoggingConfigPanel.profiling.requestFilter=Request Filter +LoggingConfigPanel.profiling.subsystem.model=Modèle +LoggingConfigPanel.profiling.subsystem.provisioning=Provisioning +LoggingConfigPanel.profiling.subsystem.repository=Repository +LoggingConfigPanel.profiling.subsystem.resourceObjectChangeListener=Resource Object Change Listener +LoggingConfigPanel.profiling.subsystem.synchronizationService=Synchronization Service +LoggingConfigPanel.profiling.subsystems=Profiling subsystems +LoggingConfigPanel.profiling.subsystem.taskManager=Task Manager +LoggingConfigPanel.profiling.subsystem.ucf=Ucf +LoggingConfigPanel.profiling.subsystem.workflow=Workflow +LoggingConfigPanel.rootAppender=Root appender +LoggingConfigPanel.rootLogger=Root logger +LoggingConfigPanel.subsystem.appender=Appender +LoggingConfigPanel.subsystem.level=Level +lower.ActivationStatusType.ARCHIVED=archived +lower.ActivationStatusType.DISABLED=disabled +lower.ActivationStatusType.ENABLED=enabled +lower.ActivationStatusType.null=undefined +mainForm.category.null=Tout +mainForm.mailServer.nullValid=Choisir un +mainForm.state.null=Tout +mainForm.tabPanel.panel.aepChooser.null=Relative (Default) +MappingEditorDialog.button.cancel=Annuler +MappingEditorDialog.button.save=Enregistrer +MappingEditorDialog.button.apply=Apply +MappingEditorDialog.label.authoritative=Authoritative +MappingEditorDialog.label.channel=Channel +MappingEditorDialog.label.condition=Conditions +MappingEditorDialog.label.conditionType=Condition type +MappingEditorDialog.label.description=Description +MappingEditorDialog.label=Edit Mapping +MappingEditorDialog.label.exceptChannel=Except channel +MappingEditorDialog.label.exclusive=Exclusive +MappingEditorDialog.label.expression=Expression +MappingEditorDialog.label.expressionType=Expression type +MappingEditorDialog.label.language=Language +MappingEditorDialog.label.name=Nom +MappingEditorDialog.label.passPolicyRef=Policy ref. +MappingEditorDialog.label.source=Source +MappingEditorDialog.label.strength=Force +MappingEditorDialog.label.target=Cible +MappingEditorDialog.label.timeFrom=Time from +MappingEditorDialog.label.timeTo=Time to +MappingEditorDialog.message.cantSave=Couldn't save mapping. Reason: +MappingEditorDialog.message.warn.emptyTarget=Inbound mapping requires 'target' field to be specified. +MappingsStatistics.AverageTime=Avg time +MappingsStatistics.Count=Invocations count +MappingsStatistics.MaxTime=Max +MappingsStatistics.MinTime=Min +MappingsStatistics.Object=Containing object +MappingsStatistics.TotalTime=Total time +MappingType.label.placeholder=Create new mapping +matchingRule.nullValid=Choisir un +message.emptyLevel=Level must not be empty +message.emptyString=Input panel must not be empty +message.error=Please try again +Message.SourceMemory=tâche en mémoire (récupéré {0}) +Message.SourceRepository=repository (statistics updated on {0}) +message.success=Your Answers Were Updated Successfully +message.WrongAnswer=Questions Not Answered Correctly +ModelOperationStatusPanel.label.focusName=Object: +ModelOperationStatusPanel.label.focusType=of type: +ModelOperationStatusPanel.label.primaryDelta=Primary delta: +ModelOperationStatusPanel.label.state=State: +ModelOperationStatusPanel.state.FINAL=Final: operation has been executed (successfully or not) +ModelOperationStatusPanel.state.PRIMARY=Primary: operation is being approved +ModelOperationStatusPanel.state.SECONDARY=Secondary: resource operation(s) are being approved +ModificationsPanel.label.attribute=Attribute +ModificationsPanel.label.change=Change +ModificationsPanel.label.value=Value(s) +multiplicityContainer.label.description=Description +multiplicityContainer.label.enforcement=Enforcement +multiplicityContainer.label.multiplicity=Multiplicity +MultiplicityPolicyDialog.label=Configure multiplicity constraints +MultiplicityPolicyDialog.message.badUpdate=Can't show empty multiplicity constraints config. +MultiplicityPolicyDialog.message.invalidMultiplicity=Invalid multiplicity value. Set numeric value (0, 1, ...) or value 'unbounded' (use checkbox) +MultiValueField.nameNotSpecified=(Name not specified) +MyAccountsPanel.account.name=Nom +MyAccountsPanel.account.resource=Ressource +MyAssignmentsPanel.assignment.displayName=Nom +MyAssignmentsPanel.assignment.description=Description +MyAssignmentsPanel.type.accountConstruction=Account construction +MyAssignmentsPanel.type.error=Erreur +MyAssignmentsPanel.type.orgUnit=Org. unit +MyAssignmentsPanel.type.role=Role +MyAssignmentsPanel.type.service=Service +MyAssignmentsPanel.type.user=Utilisateur +MyAssignmentsPanel.type.policyRule=Policy rule +NameStep.arrowToTurotialText=Each step of the wizard has a help button. Press this button to gain information about the purpose of a specific configuration step. +NameStep.connectorBundle=Bundle +NameStep.connectorHost=Connector host +NameStep.connectorInformation=Information +NameStep.connectorName=Connector name +NameStep.connectorNotSelected=Connector was not selected. +NameStep.connectorType=Connecteur +NameStep.connectorVersion=Connector version +NameStep.description=Description +NameStep.hostNotUsed=Not used +NameStep.name=Resource name +NameStep.title=Resource basics +NameStep.undefinedName=Undefined name +NameStep.undefinedVersion=Undefined version +NameStep.unknownVersion=Inconnu +NavigatorPanel.firstLink=<< +NavigatorPanel.lastLink=>> +NavigatorPanel.nextLink=> +NavigatorPanel.previousLink=< +NodeExecutionStatus.COMMUNICATION_ERROR=Injoignable +NodeExecutionStatus.DOWN=Turned off +NodeExecutionStatus.ERROR=Erreur +NodeExecutionStatus.PAUSED=Stoppé +NodeExecutionStatus.RUNNING=En éxecution +NotificationsStatistics.AverageTime=Avg time +NotificationsStatistics.CountFailure=Failed +NotificationsStatistics.CountSuccess=Successful +NotificationsStatistics.MaxTime=Max +NotificationsStatistics.MinTime=Min +NotificationsStatistics.TotalTime=Total time +NotificationsStatistics.Transport=Transport +nullValid=Choose one +objectPolicyConfigurationEditor.button.edit=Éditer +objectPolicyConfigurationEditor.label=Object policies +objectPolicyConfigurationEditor.name.placeholder=Insert object policy +ObjectPolicyDialog.button.cancel=Annuler +ObjectPolicyDialog.button.save=Enregistrer +ObjectPolicyDialog.label=Edit Object Policy +ObjectPolicyDialog.label.oidBound.help=Oid bound - The property value will be bound to OID. This property will be set to the value of OID and it cannot be changed. +ObjectPolicyDialog.propertyConstraint=Property constraint +ObjectPolicyDialog.conflictResolution=Conflict resolution +ObjectPolicyDialog.present=(present) +ObjectPolicyDialog.property.placeholder=Insert property path +ObjectPolicyDialog.subtype=Object subtype +ObjectPolicyDialog.template=Object template +ObjectPolicyDialog.type=Object type +objectSyncConfig.editorFocus.nullValid=Choisir un +objectSyncConfig.editorKind.nullValid=Choisir un +objectSyncConfig.editorObjectTemplate.nullValid=Choisir un +objectTemplateRef.nullValid=Choisir un +ObjectTypeGuiDescriptor.abstractRole=Abstract role +ObjectTypeGuiDescriptor.accessCertificationCampaign=Access certification campaign +ObjectTypeGuiDescriptor.accessCertificationDefinition=Access certification definition +ObjectTypeGuiDescriptor.account=Compte +ObjectTypeGuiDescriptor.connector=Connecteur +ObjectTypeGuiDescriptor.connectorHost=Connector host +ObjectTypeGuiDescriptor.focus=Focus +ObjectTypeGuiDescriptor.form=Form +ObjectTypeGuiDescriptor.genericObject=Objet générique +ObjectTypeGuiDescriptor.lookupTable=Lookup table +ObjectTypeGuiDescriptor.node=Node +ObjectTypeGuiDescriptor.object=Objet +ObjectTypeGuiDescriptor.objectTemplate=Object template +ObjectTypeGuiDescriptor.orgManager=Org. manager +ObjectTypeGuiDescriptor.org=Organisation +ObjectTypeGuiDescriptor.reportOutput=Report output +ObjectTypeGuiDescriptor.report=Signaler +ObjectTypeGuiDescriptor.resource=Ressource +ObjectTypeGuiDescriptor.role=Role +ObjectTypeGuiDescriptor.securityPolicy=Security policy +ObjectTypeGuiDescriptor.sequence=Sequence +ObjectTypeGuiDescriptor.shadow=Shadow +ObjectTypeGuiDescriptor.systemConfiguration=Configuration du système +ObjectTypeGuiDescriptor.task=Tâche +ObjectTypeGuiDescriptor.user=Utilisateur +ObjectTypeGuiDescriptor.service=Service +ObjectTypeGuiDescriptor.case=Case +ObjectTypeGuiDescriptor.valuePolicy=Value policy +ObjectTypeGuiDescriptor.functionLibrary=Function library +ObjectTypeGuiDescriptor.unknown=Not defined +operation.com.evolveum.midpoint.common.crypto.CryptoUtil.securitySelfTest=Security self test +operation.com.evolveum.midpoint.common.operation.import.object=Import object +operation.com.evolveum.midpoint.common.policy.PasswordPolicyUtils.passwordValidation=Password validation against password policy +operation.com.evolveum.midpoint.common.validator.Validator.objectBasicsCheck=Basic checks +operation.com.evolveum.midpoint.common.validator.Validator.resourceNamespaceCheck=Resource namespace check +operation.com.evolveum.midpoint.common.validator.Validator.validateSchema=Schema validation +operation.com.evolveum.midpoint.model.api.ModelDiagnosticService.provisioningSelfTest=Provisioning self test (Model) +operation.com.evolveum.midpoint.model.api.ModelDiagnosticService.repositorySelfTest=Repository self test (Model) +operation.com.evolveum.midpoint.model.api.ModelInteractionService.previewChanges=Preview changes (Model) +operation.com.evolveum.midpoint.model.api.ModelService.addObject=Add object (Model) +operation.com.evolveum.midpoint.model.api.ModelService.addUser=Add user (Model) +operation.com.evolveum.midpoint.model.api.ModelService.deleteObject=Delete object (Model) +operation.com.evolveum.midpoint.model.api.ModelService.discoverConnectors=Discover connectors +operation.com.evolveum.midpoint.model.api.ModelService.executeChanges=Execute changes (Model) +operation.com.evolveum.midpoint.model.api.ModelService.getObject=Get object (Model) +operation.com.evolveum.midpoint.model.api.ModelService.getPropertyAvailableValues=Get Property Available Values (Model) +operation.com.evolveum.midpoint.model.api.ModelService.importAccountsFromResource=Import accounts from resource +operation.com.evolveum.midpoint.model.api.ModelService.importObjectsFromFile=Import objects (Model) +operation.com.evolveum.midpoint.model.api.ModelService.importObjectsFromStream=Import objects (Model) +operation.com.evolveum.midpoint.model.api.ModelService.listAccountShadowOwner=List Account Shadow Owner +operation.com.evolveum.midpoint.model.api.ModelService.listObjects=List objects (Model) +operation.com.evolveum.midpoint.model.api.ModelService.listResourceObjectShadows=List resource object shadows (Model) +operation.com.evolveum.midpoint.model.api.ModelService.listResourceObjects=List resource objects (Model) +operation.com.evolveum.midpoint.model.api.ModelService.modifyObject=Modify object (Model) +operation.com.evolveum.midpoint.model.api.ModelService.modifyObjectWithExclusion=Modify object with exclusion +operation.com.evolveum.midpoint.model.api.ModelService.postInit=Post initialization (Model) +operation.com.evolveum.midpoint.model.api.ModelService.testResource=Test Resource (Model) +operation.com.evolveum.midpoint.model.ChangeExecutor.executeChanges=Execute changes - change executor (Model) +operation.com.evolveum.midpoint.model.common.mapping.Mapping.evaluate=Mapping evaluate (Model) +operation.com.evolveum.midpoint.model.controller.ModelControllerImpl.createAccount=Create account +operation.com.evolveum.midpoint.model.controller.ModelControllerImpl.getSystemConfiguration=Get system configuration +operation.com.evolveum.midpoint.model.controller.ModelControllerImpl.processUserTemplate=Process user template +operation.com.evolveum.midpoint.model.controller.ModelControllerImpl.resolveAccountAttributes=Resolve account attributes +operation.com.evolveum.midpoint.model.controller.ModelControllerImpl.resolveUserAttributes=Resolve user attributes +operation.com.evolveum.midpoint.model.controller.ModelControllerImpl.updateAccount=Update account +operation.com.evolveum.midpoint.model.controller.ModelController.modifyObjectWithExclusion=Modify object with exclusion +operation.com.evolveum.midpoint.model.controller.ModelController.processAddDeleteAccountFromChanges=Process account from changes +operation.com.evolveum.midpoint.model.controller.ModelController.searchObjectsInProvisioning=Search objects in provisioning +operation.com.evolveum.midpoint.model.controller.ModelController.searchObjectsInRepository=Search objects in repository +operation.com.evolveum.midpoint.model.controller.ModelController.searchObjects=Search objects (Model) +operation.com.evolveum.midpoint.model.impl.controller.ModelDiagController.repositorySelfTest.user.getObject=Get object (Model) +operation.com.evolveum.midpoint.model.impl.controller.ModelDiagController.repositorySelfTest.user.searchObjects.employeeType=Search objects - employeeType (Model) +operation.com.evolveum.midpoint.model.impl.controller.ModelDiagController.repositorySelfTest.user.searchObjects.fullName=Search objects - fullName (Model) +operation.com.evolveum.midpoint.model.impl.controller.ModelDiagController.repositorySelfTest.user.searchObjects.organization=Search objects - organization (Model) +operation.com.evolveum.midpoint.model.impl.controller.ModelDiagController.repositorySelfTest.lookupTable.getObject=Get object (Model) +operation.com.evolveum.midpoint.model.impl.controller.ModelDiagController.repositorySelfTest.lookupTable.getObject.key=Get object by row key (Model) +operation.com.evolveum.midpoint.model.controller.SchemaHandler.insertUserDefinedVariables=Insert user defined variables +operation.com.evolveum.midpoint.model.controller.SchemaHandler.processAttributeInbound=Process attribute inbound +operation.com.evolveum.midpoint.model.controller.SchemaHandler.processInboundHandling=Process inbound handling +operation.com.evolveum.midpoint.model.controller.SchemaHandler.processOutboundHandling=Process outbound handling +operation.com.evolveum.midpoint.model.controller.SchemaHandler.processPropertyConstruction=Process property construction +operation.com.evolveum.midpoint.model.controller.SchemaHandler.processPropertyConstructions=Process property constructions +operation.com.evolveum.midpoint.model.impl.controller.ModelDiagController.repositorySelfTest.user=Repository self test, user (Model) +operation.com.evolveum.midpoint.model.impl.controller.ModelDiagController.repositorySelfTest.lookupTable=Repository self test, lookup table (Model) +operation.com.evolveum.midpoint.model.importer.ImportAccountsFromResourceTaskHandler.launch=Import accounts from resource +operation.com.evolveum.midpoint.model.importer.ObjectImporter.checkResourceSchema=Check resource schema +operation.com.evolveum.midpoint.model.importer.ObjectImporter.encryptValues=Encryption +operation.com.evolveum.midpoint.model.importer.ObjectImporter.importObjectToRepository=Store object in repository +operation.com.evolveum.midpoint.model.importer.ObjectImporter.resolveReference=Reference resolution +operation.com.evolveum.midpoint.model.importer.ObjectImporter.validateDynamicSchema=Validate dynamic schema +operation.com.evolveum.midpoint.model.importer.ObjectImporter.validateResourceConfigurationSchema=Validate resource configuration schema +operation.com.evolveum.midpoint.model.lens.ChangeExecutor.executeChanges=Execute changes - change executor (Model) +operation.com.evolveum.midpoint.model.lens.ChangeExecutor.executeDelta=Execute delta (Model) +operation.com.evolveum.midpoint.model.lens.ChangeExecutor.execute=Execute (Model) +operation.com.evolveum.midpoint.model.lens.ChangeExecutor.execute.focus.UserType=Execute user delta (Model) +operation.com.evolveum.midpoint.model.lens.ChangeExecutor.execute.projection.ShadowType=Execute shadow delta (Model) +operation.com.evolveum.midpoint.model.lens.projector.ContextLoader.checkProjectionContexts=Check projection contexts (Model) +operation.com.evolveum.midpoint.model.lens.projector.InboundProcessor.processInbound=Process inbound (Model) +operation.com.evolveum.midpoint.model.lens.projector.Projector.project=Project (Model) +operation.com.evolveum.midpoint.model.lens.projector.ReconciliationProcessor.processReconciliation=Process reconciliation (Model) +operation.com.evolveum.midpoint.model.synchronizer.InboundProcessor.processInbound=Process inbound (Model) +operation.com.evolveum.midpoint.model.synchronizer.ReconciliationProcessor.processReconciliation=Process reconciliation (Model) +operation.com.evolveum.midpoint.model.synchronizer.UserSynchronizer.checkAccountContextReconciliation=Check account context reconciliation (Model) +operation.com.evolveum.midpoint.model.sync.SynchronizeAccountResultHandler.handle=Synchronize account result handler, handle (Model) +operation.com.evolveum.midpoint.notifications.AccountOperationListener.notifyFailure=Notify failure (Notifications) +operation.com.evolveum.midpoint.notifications.AccountOperationListener.notifyInProgress=Notify in progress (Notifications) +operation.com.evolveum.midpoint.notifications.AccountOperationListener.notifySuccess=Notify success (Notifications) +operation.com.evolveum.midpoint.provisioning.api.ProvisioningService.addObject=Add object (Provisioning) +operation.com.evolveum.midpoint.provisioning.api.ProvisioningService.deleteObject=Delete object (Provisioning) +operation.com.evolveum.midpoint.provisioning.api.ProvisioningService.discoverConnectors=Discover connectors (Provisioning) +operation.com.evolveum.midpoint.provisioning.api.ProvisioningService.getObject=Get object (Provisioning) +operation.com.evolveum.midpoint.provisioning.api.ProvisioningService.modifyObject=Modify object (Provisioning) +operation.com.evolveum.midpoint.provisioning.api.ProvisioningService.searchObjects=Search objects (Provisioning) +operation.com.evolveum.midpoint.provisioning.api.ProvisioningService.testResource=Test resource (Provisioning) +operation.com.evolveum.midpoint.provisioning.api.ResourceObjectChangeListener.checkSituation=Check synchronization situation +operation.com.evolveum.midpoint.provisioning.api.ResourceObjectChangeListener.notifyChange=Notify change +operation.com.evolveum.midpoint.provisioning.impl.ResourceManager.completeResource=Complete resource (Provisioning) +operation.com.evolveum.midpoint.provisioning.impl.ResourceTypeManager.completeResource=Complete resource (Provisioning) +operation.com.evolveum.midpoint.provisioning.impl.ShadowConverter.addShadow=Add shadow (Provisioning) +operation.com.evolveum.midpoint.provisioning.ucf.api.ConnectorInstance.addObject=Add object (Ucf) +operation.com.evolveum.midpoint.provisioning.ucf.api.ConnectorInstance.configure=UCF connector configuration +operation.com.evolveum.midpoint.provisioning.ucf.api.ConnectorInstance.deleteObject=Delete object (Ucf) +operation.com.evolveum.midpoint.provisioning.ucf.api.ConnectorInstance.fetchObject=Fetch object (Ucf) +operation.com.evolveum.midpoint.provisioning.ucf.api.ConnectorInstance.getCapabilities=Capabilities (Ucf) +operation.com.evolveum.midpoint.provisioning.ucf.api.ConnectorInstance.initialize=Connector initialization (Ucf) +operation.com.evolveum.midpoint.provisioning.ucf.api.ConnectorInstance.modifyObject=Modify object (Ucf) +operation.com.evolveum.midpoint.repo.api.RepositoryService.addObject=Add object (Repository) +operation.com.evolveum.midpoint.repo.api.RepositoryService.deleteObject=Delete object (Repository) +operation.com.evolveum.midpoint.repo.api.RepositoryService.getObject=Get object (Repository) +operation.com.evolveum.midpoint.repo.api.RepositoryService.modifyObject=Modify object (Repository) +operation.com.evolveum.midpoint.repo.api.RepositoryService.searchObjects=Search objects (Repository) +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connector.connection=Connector connection +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connector.initialization=Connector initialization +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connector.configuration=Connector configuration +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connector.capabilities=Connector capabilities +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.resourceSchema=Resource schema +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.resourceSanity=Resource sanity +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.extraTest=Extra test +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.testConnection=Tester la connexion +operation.com.evolveum.midpoint.task.api.TaskManager.addTask=Add task (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.createTaskInstance=Create task instance (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.deactivateServiceThreads=Deactivate local service threads (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.deleteTask=Delete task (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.getNextRunStartTime=Get next task run start time (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.getNextStartTimes=Get next task start times (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.getTask=Get task (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.onTaskCreate=Task creation listener (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.onTaskDelete=Task deletion listener (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.reactivateServiceThreads=Reactivate local service threads (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.resumeTask=Resume task (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.searchNodes=Search nodes (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.searchTasks=Search tasks (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.suspendTasks=Suspend tasks (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.switchToBackground=Switch task to background (Task) +operation.com.evolveum.midpoint.task.quartzimpl.cluster.ClusterManager.stopClusterManagerThread=Stop ClusterManager thread (Task) +operation.com.evolveum.midpoint.task.quartzimpl.cluster.NodeRegistrar.deleteNode=Delete node (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.ExecutionManager.addNodeAndTaskInformation=Add node and tasks information (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.ExecutionManager.getClusterStatusInformation=Get cluster status information (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.ExecutionManager.scheduleTaskNow=Schedule task now (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.ExecutionManager.startScheduler=Start scheduler (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.ExecutionManager.stopAllTasksOnThisNodeAndWait=Stop all tasks on this node and wait for their completion (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.ExecutionManager.stopSchedulersAndTasks=Stop schedulers and tasks (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.ExecutionManager.stopScheduler=Stop scheduler (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.ExecutionManager.stopTasksRunAndWait=Stop tasks and wait for their completion (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.ExecutionManager.unscheduleTask=Unschedule task (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.ExecutionManager.waitForTaskRunCompletion=Wait for task run completion (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.LocalNodeManager.getLocallyRunningTasks=Get locally running tasks (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.LocalNodeManager.stopLocalTaskRun=Stop local task run (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.LocalNodeManager.stopSchedulerAndTasks=Stop scheduler and tasks on local node (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.RemoteNodesManager.addNodeStatusFromRemoteNode=Get status of remote node (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.RemoteNodesManager.stopRemoteScheduler=Stop remote scheduler (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.RemoteNodesManager.stopRemoteTaskRun=Stop remote task run (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.TaskSynchronizer.synchronizeJobStores=Synchronize system repository and Quartz Job Store (Task) +operation.com.evolveum.midpoint.task.quartzimpl.execution.TaskSynchronizer.synchronizeTask=Synchronize task in system repository and Quartz Job Store (Task) +operation.com.evolveum.midpoint.task.quartzimpl.GlobalExecutionManager.addNodeAndTaskInformation=Add node and task information (Task) +operation.com.evolveum.midpoint.task.quartzimpl.GlobalExecutionManager.stopSchedulersAndTasks=Stop schedulers and tasks (Task) +operation.com.evolveum.midpoint.task.quartzimpl.LocalExecutionManager.getLocallyRunningTasks=Get locally running tasks (Task) +operation.com.evolveum.midpoint.task.quartzimpl.TaskManagerQuartzImpl.addTaskToRepositoryAndQuartz=Add task to repository and Quartz Job Store (Task) +operation.com.evolveum.midpoint.web.component.assignment.AssignmentEditorPanel.loadAttributes=Load attributes (Gui) +operation.com.evolveum.midpoint.web.component.assignment.AssignmentEditorPanel.loadObject=Load object (Gui) +operation.com.evolveum.midpoint.web.component.assignment.AssignmentEditorPanel.loadResource=Load resource (Gui) +operation.com.evolveum.midpoint.web.component.orgStruct.BookmarkableFolderContent.loadOrgUnit=Loading organization unit +operation.com.evolveum.midpoint.web.component.prism.ContainerWrapper.createProperties=Create properties (Gui) +operation.com.evolveum.midpoint.web.component.prism.ObjectWrapper.createContainers=Create containers (Gui) +operation.com.evolveum.midpoint.web.page.admin.configuration.PageDebugList.deleteObject=Delete object (Gui) +operation.com.evolveum.midpoint.web.page.admin.configuration.PageDebugList.deleteObjects=Delete objects (Gui) +operation.com.evolveum.midpoint.web.page.admin.configuration.PageDebugView.loadObject=Load object (Gui) +operation.com.evolveum.midpoint.web.page.admin.configuration.PageDebugView.saveObject=Save object (Gui) +operation.com.evolveum.midpoint.web.page.admin.configuration.PageImportObject.importFile=Import file (Gui) +operation.com.evolveum.midpoint.web.page.admin.configuration.PageImportObject.importXml=Import xml (Gui) +operation.com.evolveum.midpoint.web.page.admin.configuration.PageInternals.changeTime=Change time (Gui) +operation.com.evolveum.midpoint.web.page.admin.configuration.PageInternals.changeTimeReset=Change time - reset (Gui) +operation.com.evolveum.midpoint.web.page.admin.configuration.PageLogging.loadLoggingConfiguration=Load logging configuration (Gui) +operation.com.evolveum.midpoint.web.page.admin.configuration.PageLogging.updateLoggingConfiguration=Update logging configuration (Gui) +operation.com.evolveum.midpoint.web.page.admin.help.PageSystem.getRepoDiag=Get repository diagnostics (Gui) +operation.com.evolveum.midpoint.web.page.admin.help.PageSystem.testRepository=Test repository (Gui) +operation.com.evolveum.midpoint.web.page.admin.home.PageDashboard.loadAccounts=Load accounts (Gui) +operation.com.evolveum.midpoint.web.page.admin.home.PageDashboard.loadAssignments=Load assignments (Gui) +operation.com.evolveum.midpoint.web.page.admin.home.PageDashboard.loadUser=Load user (Gui) +operation.com.evolveum.midpoint.web.page.admin.home.PageDashboard.loadWorkItems=Load work items (Gui) +operation.com.evolveum.midpoint.web.page.admin.home.PageMyPasswords.loadAccount=Load account (Gui) +operation.com.evolveum.midpoint.web.page.admin.home.PageMyPasswords.loadUser=Load user (Gui) +operation.com.evolveum.midpoint.web.page.admin.home.PageMyPasswords.loadUserWithAccounts=Load user with accounts (Gui) +operation.com.evolveum.midpoint.web.page.admin.home.PageMyPasswords.savePassword=Save password (Gui) +operation.com.evolveum.midpoint.web.page.admin.reports.PageReport.saveReport=Save report (Gui) +operation.com.evolveum.midpoint.web.page.admin.reports.PageReports.loadReport=Load report (Gui) +operation.com.evolveum.midpoint.web.page.admin.reports.PageReports.runReport=Run report (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.content.dto.AccountContentDataProvider.loadAccounts=Load accounts (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.content.PageAccount.saveAccount=Save account (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.content.PageContentAccounts.changeOwner=Change owner (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.content.PageContentAccounts.createUserFromAccount=Create user from account (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.dto.ResourceDtoProvider.countResources=Count resources (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.dto.ResourceDtoProvider.listResources=List resources (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.PageAdminResources.loadResource=Load resource (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.PageResourceEdit.saveResource=Save resource (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.PageResource.importFromResource=Import from resource +operation.com.evolveum.midpoint.web.page.admin.resources.PageResources.connectorDiscovery=Connector discovery (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.PageResources.deleteHosts=Delete hosts (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.PageResources.deleteResources=Delete resources (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.PageResources.syncStatus=Synchronization status (Gui) +operation.com.evolveum.midpoint.web.page.admin.resources.PageResources.testResource=Test resource (Gui) +operation.com.evolveum.midpoint.web.page.admin.roles.PageRole.loadRole=Load role (Gui) +operation.com.evolveum.midpoint.web.page.admin.roles.PageRole.saveRole=Save role (Gui) +operation.com.evolveum.midpoint.web.page.admin.roles.PageRoles.deleteRoles=Delete roles (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.dto.NodeDtoProvider.countNodes=Count nodes (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.dto.NodeDtoProvider.listNodes=List nodes (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.dto.TaskDtoProvider.countTasks=Count tasks (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.dto.TaskDtoProvider.listTasks=List tasks (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTaskAdd.saveTask=Save task (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTasks.deactivateServiceThreads=Deactivate service threads (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTasks.deleteNodes=Delete nodes (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTasks.deleteTasks=Delete tasks (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTasks.reactivateServiceThreads=Reactivate service threads (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTasks.resumeTask=Resume task (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTasks.resumeTasks=Resume tasks (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTasks.scheduleTasks=Schedule tasks (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTasks.startSchedulers=Start schedulers (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTasks.stopSchedulersAndTasks=Stop schedulers and tasks (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTasks.stopSchedulers=Stop schedulers (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTasks.suspendTasks=Suspend tasks (Gui) +operation.com.evolveum.midpoint.web.page.admin.server.PageTasks.synchronizeTasks=Synchronize tasks (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.component.TreeTablePanel.deleteObject=Delete object (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.component.TreeTablePanel.deleteObjects=Delete objects (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.component.TreeTablePanel.moveObject=Move object (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.component.TreeTablePanel.moveObjects=Move objects (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.component.TreeTablePanel.updateObjects=Update objects (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.component.TreeTablePanel.updateObject=Update object (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageOrgUnit.saveOrgUnit=Save org. unit (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUser.loadAccount=Load account (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUser.loadAccounts=Load accounts (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUser.loadAssignment=Load assignment (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUser.loadAssignments=Load assignments (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUser.loadUser=Load user (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUserPreview.modifyAccount=Modify account (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUserPreview.saveUser=Save user (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUser.save=Save user (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUsers.deleteUser=Delete user (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUsers.deleteUsers=Delete users (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUsers.disableUser=Disable user (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUsers.disableUsers=Disable users (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUsers.enableUser=Enable user (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUsers.enableUsers=Enable users (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUser.sendToSubmit=Send for submit (Gui) +operation.com.evolveum.midpoint.web.page.admin.users.PageUsers.reconcileUser=Reconcile user (Gui): {0} +operation.com.evolveum.midpoint.web.page.admin.users.PageUsers.reconcileUsers=Reconcile users (Gui) +operation.com.evolveum.midpoint.web.page.admin.workflow.PageWorkItem.saveWorkItem=Save work item (Gui) +operation.com.evolveum.midpoint.web.util.WebModelUtils.deleteObject=Delete object (Gui) +operation.com.evolveum.midpoint.web.util.WebModelUtils.loadObject=Load object (Gui) +operation.com.evolveum.midpoint.wf.WfHook.invoke=Workflow hook invocation (Workflow) +operation.com.evolveum.midpoint.xml.ns._public.model.model_1_wsdl.ModelPortType.addObject=Model web service add object +operation.com.evolveum.midpoint.xml.ns._public.model.model_1_wsdl.ModelPortType.deleteObject=Model web service delete object +operation.com.evolveum.midpoint.xml.ns._public.model.model_1_wsdl.ModelPortType.getObject=Model web service get object +operation.com.evolveum.midpoint.xml.ns._public.model.model_1_wsdl.ModelPortType.getPropertyAvailableValues=Model web service get property available values +operation.com.evolveum.midpoint.xml.ns._public.model.model_1_wsdl.ModelPortType.importFromResource=Model web service import from resource +operation.com.evolveum.midpoint.xml.ns._public.model.model_1_wsdl.ModelPortType.listAccountShadowOwner=Model web service list account shadow owner +operation.com.evolveum.midpoint.xml.ns._public.model.model_1_wsdl.ModelPortType.listObjects=Model web service list objects +operation.com.evolveum.midpoint.xml.ns._public.model.model_1_wsdl.ModelPortType.listResourceObjectShadows=Model web service list resource object shadows +operation.com.evolveum.midpoint.xml.ns._public.model.model_1_wsdl.ModelPortType.listResourceObjects=Model web service list resource objects +operation.com.evolveum.midpoint.xml.ns._public.model.model_1_wsdl.ModelPortType.modifyObject=Model web service modify object +operation.com.evolveum.midpoint.xml.ns._public.model.model_1_wsdl.ModelPortType.searchObjects=Model web service search objects +operation.com.evolveum.midpoint.xml.ns._public.model.model_1_wsdl.ModelPortType.testResource=Model web service test resource +operation.linkShadow=Link account (Model) +operation.org.identityconnectors.framework.api.ConnectorFacade.addAttributeValues=Add attribute values (Icf) +operation.org.identityconnectors.framework.api.ConnectorFacade.create=Create (Icf) +operation.org.identityconnectors.framework.api.ConnectorFacade.delete=Delete object (ICF) +operation.org.identityconnectors.framework.api.ConnectorFacade.getObject=ICF get object +operation.org.identityconnectors.framework.api.ConnectorFacade.schema=ICF schema +operation.org.identityconnectors.framework.api.ConnectorFacade.update=Update (Icf) +operation.com.evolveum.midpoint.web.component.wizard.resource.NameStep.saveResource=Save resource basic information +operation.com.evolveum.midpoint.web.component.wizard.resource.ConfigurationStep.saveResource=Save resource configuration +operation.com.evolveum.midpoint.web.component.wizard.resource.SchemaHandlingStep.saveSchemaHandling=Save resource schema handling +operation.com.evolveum.midpoint.web.component.wizard.resource.SynchronizationStep.saveResourceSynchronization=Save resource synchronization +operation.com.evolveum.midpoint.web.component.wizard.resource.CapabilityStep.saveCapabilities=Save resource capabilities +operation.com.evolveum.midpoint.web.page.admin.PageAdminFocus.loadShadow=Load shadow +operationResultPanel.cause=Cause : +operationResultPanel.context=Contexte : +operationResultPanel.count=Compte : +operationResultPanel.hideStack=[ HIDE ERROR STACK ] +operationResultPanel.param=Param: +operationResultPanel.showStack=[ SHOW ERROR STACK ] +operationResultPanel.times=times +operationResultPanel.title.expectedError=Erreur attendue +operationResultPanel.title.fatalError=Erreur fatale +operationResultPanel.title.info=Information +operationResultPanel.title.inProgress=En cours +operationResultPanel.title.partialError=Erreur partielle +operationResultPanel.title.success=Réussi +operationResultPanel.title.unknown=Inconnu +operationResultPanel.title.warn=Alerte +OperationResultStatus.FATAL_ERROR=Erreur fatale +OperationResultStatus.IN_PROGRESS=En cours +OperationResultStatus.NOT_APPLICABLE=Non applicable +OperationResultStatus.PARTIAL_ERROR=Erreur partielle +OperationResultStatus.SUCCESS=Réussi +OperationResultStatus.UNKNOWN=Inconnu +OperationResultStatus.WARNING=Alerte +operation.unlinkShadow=Unlink account (Model) +operation.updateSituationInShadow=Update situation in account (Model) +org.apache.wicket.extensions.wizard.cancel=Annuler +org.apache.wicket.extensions.wizard.finish=Finish +org.apache.wicket.extensions.wizard.last=Last +org.apache.wicket.extensions.wizard.next=Next +org.apache.wicket.extensions.wizard.previous=Previous +org.apache.wicket.extensions.wizard.validate=Validate +org.apache.wicket.extensions.wizard.save=Enregistrer +orgUnitAddDeletePopup.button.add=Add Org. Unit(s) +orgUnitAddDeletePopup.button.cancel=Annuler +orgUnitAddDeletePopup.button.remove=Remove Org. Unit(s) +orgUnitAddDeletePopup.column.name=Nom +orgUnitAddDeletePopup.title=Choose Org. Unit +OrgUnitBrowser.cancel=Annuler +OrgUnitBrowser.createRoot=Make it root +OrgUnitBrowser.message.queryError=Error occurred during translation search query to filter. +OrgUnitBrowser.search=Recherche +OrgUnitBrowser.title=Choose new parent for org. unit +PageAbout.allRightsReserved=©2014 Evolveum. +PageAbout.button.testProvisioning=Provisioning self test +PageAbout.button.cleanupActivitiProcesses=Clean-up Activiti processes +PageAbout.button.testRepositoryCheckOrgClosure=Check and repair org closure consistency +PageAbout.button.reindexRepositoryObjects=Reindex repository objects +PageAbout.button.testRepository=Repository self test +PageAbout.button.clearCssJsCache=Clear CSS/JS cache +PageAbout.message.couldntObtainJvmParams=Couldn't obtain JVM parameters from JMX. +PageAbout.midPointRevision=${git.describe} +PageAbout.builtAt=Build at +PageAbout.build=${timestamp} +PageAbout.midPointRevisionTitle=Git describe +PageAbout.midPointVersion=${pom.version} +PageAbout.midPointVersionTitle=Version +PageAbout.repoDiag.additionalDetails.name=Nom +PageAbout.repoDiag.additionalDetails.value=Valeur +PageAbout.repoDiag.driverShortName=Driver short name +PageAbout.repoDiag.driverVersion=Driver version +PageAbout.repoDiag.implementationDescription=Implementation description +PageAbout.repoDiag.implementationShortName=Implementation name +PageAbout.repoDiag.isEmbedded=Is embedded +PageAbout.repoDiag.repositoryUrl=Repository URL +PageAbout.title=About this system +PageAbout.title.basic=Basic +PageAbout.title.jvmProperties=JVM properties +PageAbout.title.provisioning=Provisioning +PageAbout.title.repository.additional=Additional details +PageAbout.title.repository=Repository +PageAbout.title.systemProperties=System properties +PageAbout.unknownBuildNumber=unknown +pageAccount.button.back=Retour +pageAccount.button.save=Enregistrer +pageAccount.description=Account on resource +pageAccount.message.cantEditAccount=Couldn't load account for editing. +pageAccount.message.cantEditProtectedAccount=This is protected account, it can't be modified. +PageAccounts.accounts.description=Description +PageAccounts.accounts.intent=Objectif +PageAccounts.accounts.kind=Sorte +PageAccounts.accounts.name=Nom +PageAccounts.accounts.objectClass=Object class +PageAccounts.accounts.failedOperationType=Failed operation +PageAccounts.accounts.oid=OID +PageAccounts.accounts.owner=Propriétaire +PageAccounts.accounts.result=Result +PageAccounts.accounts.synchronizationSituation=Situation +PageAccounts.accounts.synchronizationTimestamp=Timestamp +PageAccounts.button.clearExportFolder=Clear export folder +PageAccounts.button.export=Exporter +PageAccounts.button.load=Load +PageAccounts.count=Count +PageAccounts.deleted=Effacé +PageAccounts.disputed=Disputed +PageAccounts.exportException=Error occurred during export, reason {0} +PageAccounts.exportFileDoesntExist=Couldn't create file {0} +PageAccounts.linked=Lié +PageAccounts.message.cantShowOwner=Can't show details of owner. +PageAccounts.message.ownerNotFound=Could not found owner for shadow with oid {0}. +PageAccounts.message.unsupportedOwnerType=Unsupported owner type. +pageAccounts.message.resourceNotSelected=Resource not selected. Please select a resource to display it's shadows. +PageAccounts.message.success.clearExport=Export folder was cleared successfully +PageAccounts.message.success.export=Export was successful. Exported file: {0}. +PageAccounts.message.validationError=Searched objectClass value: '{0}' is not valid. Please provide valid objectClass value. +PageAccounts.nothing=Nothing +PageAccounts.resource=Ressource +PageAccounts.shadows=Shadows +PageAccounts.state=Etat +PageAccounts.summary=Summary +PageAccounts.title=Shadow synchronization details +PageAccounts.total=Total +PageAccounts.unlinked=Unlinked +PageAccounts.unmatched=Unmatched +PageAccount.title=Account '{0}' on '{1}' +pageAdmin.certification=Certification +pageAdmin.certification.description=Certifications, recertifications +pageAdmin.configuration=Configuration +pageAdmin.configuration.description=Security, logging, import +pageAdmin.home.description=Start here +pageAdmin.home=Home +PageAdmin.menu.top.certification.campaigns=Campaigns +PageAdmin.menu.top.certification.scheduling=Campaigns scheduling +PageAdmin.menu.top.certification=Certification +PageAdmin.menu.top.certification.decisions=My work items +PageAdmin.menu.top.certification.definitions=Campaign definitions +PageAdmin.menu.top.certification.newDefinition=New campaign definition +PageAdmin.menu.top.certification.viewDefinition=View campaign definition +PageAdmin.menu.top.configuration.about=About +PageAdmin.menu.top.configuration.basic=System +PageAdmin.menu.top.configuration.bulkActions=Bulk actions +PageAdmin.menu.top.configuration.repoQuery=Query playground +PageAdmin.menu.top.configuration.evaluateMapping=Mapping playground +PageAdmin.menu.top.configuration=Configuration +PageAdmin.menu.top.configuration.configuration=Configuration +PageAdmin.menu.top.configuration.development=Development +PageAdmin.menu.top.configuration.expressionEvaluator=Expression evaluator +PageAdmin.menu.top.configuration.importObject=Import object +PageAdmin.menu.top.configuration.internals=Internals configuration +PageAdmin.menu.top.configuration.logging=Logging +PageAdmin.menu.top.configuration.notifications=Notifications +PageAdmin.menu.top.configuration.profiling=Profiling +PageAdmin.menu.top.configuration.adminGui=Admin GUI +PageAdmin.menu.top.configuration.repositoryObjects=Repository objects +PageAdmin.menu.top.configuration.repositoryObjectsList=List objects +PageAdmin.menu.top.configuration.security=Security +PageAdmin.menu.top.home=Home +PageAdmin.menu.top.reports.created=Created reports +PageAdmin.menu.top.reports.list=List reports +PageAdmin.menu.top.reports.new=Importer un rapport Jasper +PageAdmin.menu.top.reports=Reports +PageAdmin.menu.top.resources.import=Import resource definition +PageAdmin.menu.top.resources.list=List resources +PageAdmin.menu.top.resources.new=Nouvelle ressource +PageAdmin.menu.top.resources.view=View resource +PageAdmin.menu.top.resources.edit=Éditer les ressources +PageAdmin.menu.top.resources=Resources +PageAdmin.menu.top.connectorHosts.list=List connector hosts +PageAdmin.menu.top.roles.list=List roles +PageAdmin.menu.top.roles.new=New role +PageAdmin.menu.top.roles=Roles +PageAdmin.menu.top.serverTasks.list=List tasks +PageAdmin.menu.top.serverTasks.new=New task +PageAdmin.menu.top.serverTasks=Server tasks +PageAdmin.menu.top.users.find=Find users +PageAdmin.menu.top.users.list=List users +PageAdmin.menu.top.users.new=New user +PageAdmin.menu.top.users.org.new=New organization +PageAdmin.menu.top.users.org=Org. structure +PageAdmin.menu.top.users.org.tree=Organization tree +PageAdmin.menu.top.users=Users +PageAdmin.menu.top.valuePolicies.list= List value policies +PageAdmin.menu.top.valuePolicies.new = New value policy +PageAdmin.menu.top.valuePolicies= Value policies +PageAdmin.menu.top.workItems.listClaimable=Items claimable by me +PageAdmin.menu.top.workItems.list=My items +PageAdmin.menu.top.workItems.listAll=All items +PageAdmin.menu.top.workItems.listProcessInstancesAll=All requests +PageAdmin.menu.top.workItems.listProcessInstancesRequestedBy=My requests +PageAdmin.menu.top.workItems.listProcessInstancesRequestedFor=Requests about me +PageAdmin.menu.top.workItems=Work items +PageAdmin.menu.top.workItems.listAttorney=Attorney items +PageAdmin.menu.top.caseWorkItems.list=My case work items +PageAdmin.menu.top.caseWorkItems.listAll=All case work items +PageAdmin.menu.top.caseWorkItems.view=View case work item +PageAdmin.menu.top.case.new=New case +PageAdmin.menu.top.cases.list=My cases +PageAdmin.menu.top.cases.listAll=All cases +pageAdmin.reports.description=Exporting reports +pageAdmin.reports=Reports +PageAdmin.menu.top.users.requestAssign=Request Assignment +PageAdminObjectDetails.title.editUserType=Edit user '{0}' +PageAdminObjectDetails.title.newUserType=Create new user +PageAdminObjectDetails.title.editRoleType=Edit role '{0}' +PageAdminObjectDetails.title.newServiceType=Create new service +PageAdminObjectDetails.title.editServiceType=Edit service '{0}' +PageAdminObjectDetails.title.newRoleType=Create new role +PageAdminObjectDetails.title.editOrgType=Edit organization '{0}' +PageAdminObjectDetails.title.newOrgType=Create new organization +PageAdminObjectDetails.noChangesSave=There were no changes to be saved. +PageAdminObjectDetails.noChangesPreview=There are no changes to be previewed. +pageAdminFocus.basic=Basic +pageAdminFocus.message.cantEditFocus=Unknown error occurred, can't edit focus object. +pageAdminFocus.message.cantNewFocus=Unknown error occurred, can't create new focus object. +pageAdminFocus.message.illegalAccountState=Illegal shadow state '{0}'. +pageAdminFocus.message.noAssignmentsAvailable=There are currently no assignments to preview. +pageAdminFocus.message.noOrgSelected=No organization was selected. +pageAdminFocus.menu.assignShadow=Assign resource +pageAdminFocus.menu.assignRole=Assign role +pageAdminFocus.menu.assignOrg=Assign org. unit +pageAdminFocus.menu.unassign=Effacer l'assignation +pageAdminFocus.button.addShadow=Add projection +pageAdminFocus.button.enable=Enable +pageAdminFocus.button.disable=Disable +pageAdminFocus.button.unlink=Délier +pageAdminFocus.button.unlock=Unlock +pageAdminFocus.button.delete=Effacer +pageAdminFocus.button.addToOrg=Add to organization +pageAdminFocus.focusDetails=Détails +pageAdminFocus.projections=Projections +pageAdminFocus.personas=Personas +pageAdminFocus.organizations=Organizations +pageAdminFocus.assignments=Affectations +pageAdminFocus.policyRules=Policy Rules +pageAdminFocus.applicablePolicies=Applicable Policies +pageAdminFocus.message.couldntCreateAccountNoSchema=Couldn't create projection form for '{0}', no refined schema available. Possible problem with connector configuration and/or connection. Please check logs for more information. +pageAdminFocus.message.couldntCreateAccountNoAccountSchema=Couldn't create projection form for '{0}', no schema for default 'account' object type available. Possible problem with resource configuration. Please check logs for more information. +pageAdminFocus.message.couldntCreateAccount=Couldn't create projection form for '{0}', reason: {1}. +pageAdminFocus.message.noAssignableSelected=Une affectation sélectionnée +pageAdminFocus.message.couldntAssignObject=Impossible d'attribuer l'objet '{0}', raison: {1}. +pageAdminFocus.message.noActivationFound=No activation found for projection '{0}'. +pageAdminFocus.message.noEnabledPropertyFound=No enabled property found for account '{0}'. +pageAdminFocus.message.noLockoutStatusPropertyFound=No lockout status property found for account '{0}'. +pageAdminFocus.message.notLocked=Account '{0}' is not locked. +pageAdminFocus.message.unlocked=Account '{0}' was marked to be unlocked. Apply by choosing 'Save'. +pageAdminFocus.message.noAccountSelected=No projection selected. +pageAdminFocus.message.noAssignmentSelected=Une affectation sélectionnée +pageAdminFocus.title.selectResource=Select resource(s) +pageAdminFocus.title.selectAssignable=Sélectionnez un objet +pageAdminFocus.task.name=Task name +pageAdminFocus.task.category=Category +pageAdminFocus.task.descriptionHasTasks=Active tasks related to this object: +pageAdminFocus.task.descriptionNoTasks=There are no active tasks related to this object. +pageAdminFocus.task.execution=Execution state +pageAdminFocus.task.status=Statut +pageAdminFocus.tasks=Tasks +pageAdminFocus.button.save=Enregistrer +pageAdminFocus.button.previewChanges=Preview changes +pageAdminFocus.button.abort=Abort +pageAdminFocus.button.recompute.assignments=Montrer toutes les attributions +pageAdminFocus.button.back=Retour +pageAdminFocus.button.continueEditing=Continue editing +pageAdminFocus.title.confirmDelete=Confirm delete +pageAdminFocus.message.deleteAccountConfirm=Do you really want to delete {0} projection(s)? +pageAdminFocus.message.deleteAssignmentConfirm=Voulez-vous vraiment effacer {0} attribution(s)? +pageAdminResources.accountDetails=Account details +pageAdminResources.contentAccounts=Content +pageAdmin.resources.description=Connected systems +pageAdminResources.detailsResource=Resource details +pageAdminResources.editResource=Éditer les ressources +pageAdminResources.importResource=Import resource +pageAdminResources.listResources=List resources +pageAdminResources.message.cantLoadResource=Couldn't load resource details. +pageAdminResources.newResource=Nouvelle ressource +pageAdmin.resources=Resources +pageAdmin.roles.description=Roles configuration +pageAdmin.roles=Roles +pageAdmin.serverTasks.description=Running tasks +pageAdmin.serverTasks=Server Tasks +pageAdmin.users.description=Users in repository +pageAdmin.users=Users +pageAdmin.workItems.description=Requests, approving +pageAdmin.workItems=Work Items +PageBase.button.abort=Abort +PageBase.button.back=Retour +PageBase.button.cancel=Annuler +PageBase.button.delete=Effacer +PageBase.button.unassign=Effacer l'assignation +PageBase.button.edit=Éditer +PageBase.button.run=Exécuter +PageBase.button.saveAndRun=Save & Run +PageBase.button.save=Enregistrer +PageBase.button.search=Recherche +PageBase.button.send=Send +PageBase.button.update=Mettre à jour +PageBase.clearCssCache=Clear less/js cache +pageBase.midPointVersion=${pom.version}, ${git.describe} +pageBase.unknownBuildNumber=unknown +PageBase.subscriptionMessage=Non-subscription. +PageBase.nonActiveSubscriptionMessage=No active subscription. Please support midPoint by purchasing a subscription. +PageBase.demoSubscriptionMessage=Demo subscription. +PageBulkAction.async=Asynchronous +PageBulkAction.button.start=Start +PageBulkAction.message.emptyString=Inserted bulk action is empty. Please provide non-empty script. +PageBulkAction.options=Options +PageBulkAction.title=User bulk actions +PageRepositoryQuery.title=Repository query +PageRepositoryQuery.button.translateAndExecute=Translate and execute +PageRepositoryQuery.button.translate=Translate to hibernate query +PageRepositoryQuery.button.useInObjectList=Use in object list +PageRepositoryQuery.button.execute=Execute +PageRepositoryQuery.message.emptyString=Entered query string is empty. Please provide non-empty query string. +PageRepositoryQuery.result=Result +PageRepositoryQuery.resultObjects=Result: retrieved {0} object(s) +PageRepositoryQuery.resultException=Result: {0} +PageRepositoryQuery.midPoint=MidPoint query +PageRepositoryQuery.objectType=Object type: +PageRepositoryQuery.hibernateQuery=Hibernate query +PageRepositoryQuery.hibernateParameters=Query parameters +PageRepositoryQuery.hibernateParametersNote=Note: The parameters are shown here only to indicate how midPoint query is translated into hibernate query. They are not used when manually executing a hibernate query, so the query you enter here should contain no references to parameters. +PageRepositoryQuery.incompleteResultsNote=Because you do not have administrator rights, results shown here were probably filtered by applying additional search conditions derived from your authorizations. These additional conditions are not visible in the hibernate query shown above. +PageRepositoryQuery.chooseSample=Or use a sample: +PageRepositoryQuery.sample.ObjectType_AllObjectsInAnOrg=All objects in an organization (directly) +PageRepositoryQuery.sample.ObjectType_AllObjectsInASubtree=All objects in a subtree +PageRepositoryQuery.sample.OrgType_AllRootOrgs=All organizational roots +PageRepositoryQuery.sample.OrgType_OrgOfType1=Organizations of type "type1" +PageRepositoryQuery.sample.UserType_AllUsers=All users +PageRepositoryQuery.sample.UserType_UsersStartingWithA=Users starting with "a" (normalized) +PageRepositoryQuery.sample.UserType_UsersContainingJack=Users containing "jack" in a name (normalized) +PageRepositoryQuery.sample.UserType_UsersNamedJack=Users with a given name of "jack" (normalized) +PageRepositoryQuery.sample.UserType_First10UsersStartingWithA=First 10 users starting with "a" +PageRepositoryQuery.sample.UserType_UsersWithAGivenMailDomain=Users with a given mail domain +PageRepositoryQuery.sample.UserType_UsersThatHaveAssignedRole=Users that have a direct assignment of a role +PageRepositoryQuery.sample.UserType_UsersThatHaveARole=Users that have active assignment of a role +PageRepositoryQuery.sample.UserType_SpecifiedCostCenters=Users in cost centers 100000-999999 or X100-X999 +PageRepositoryQuery.sample.ShadowType_ShadowsOnGivenResource=Shadows on a given resource +PageRepositoryQuery.sample.UserType_UsersWithShadowOnGivenResource=Users with linked shadow on a given resource +PageRepositoryQuery.queryVsFilterNote=Note: midPoint query contains a filter along with paging instruction, wrapped together within the <query> element. In contrast, when used in "Advanced filter" in GUI, only the <filter> sub-element is applicable. Paging is managed by the GUI itself. +PageCert.ago={0} ago +PageCertCampaign.basic=Basic +PageCertCampaign.button.back=Retour +PageCertCampaign.button.closeCampaign=Close campaign +PageCertCampaign.button.closeStage=Close stage +PageCertCampaign.button.openNextStage=Open next stage +PageCertCampaign.button.startCampaign=Start campaign +PageCertCampaign.button.startRemediation=Start remediation +PageCertCampaign.currentState=Current state +PageCertCampaign.description=Description +PageCertCampaign.menu.accept=Accepter +PageCertCampaign.menu.delegate=Déléguer +PageCertCampaign.menu.noResponse=No Response +PageCertCampaign.menu.notDecided=Not Decided +PageCertCampaign.menu.reduce=Réduire +PageCertCampaign.menu.revoke=Révoquer +PageCertCampaign.name=Nom +PageCertCampaign.numberOfStages=Number of stages +PageCertCampaign.owner=Propriétaire +PageCertCampaigns.agoForCampaign=(campaign: {0} ago) +PageCertCampaigns.agoForStage={0} ago +PageCertCampaigns.button.closeCampaign=Close campaign +PageCertCampaigns.button.closeStage=Close stage +PageCertCampaigns.button.openNextStage=Open next stage +PageCertCampaigns.button.startCampaign=Start campaign +PageCertCampaigns.button.startRemediation=Start remediation +PageCertCampaigns.dialog.title.confirmCloseCampaign=Confirm Close Campaign +PageCertCampaigns.dialog.title.confirmCloseStage=Confirm Close Stage +PageCertCampaigns.dialog.title.confirmDeleteCampaign=Confirm Delete Campaign +PageCertCampaigns.inForCampaign=(campaign: in {0}) +PageCertCampaigns.inForStage=in {0} +PageCertCampaigns.menu.close=Close campaign +PageCertCampaigns.menu.closeSelected=Close selected campaigns +PageCertCampaigns.menu.delete=Delete campaign +PageCertCampaigns.menu.deleteSelected=Delete selected campaigns +PageCertCampaigns.menu.startSelected=Start selected campaigns +PageCertCampaigns.message.closeCampaignConfirmMultiple=Do you really want to close selected {0} campaigns? +PageCertCampaigns.message.closeCampaignConfirmSingle=Do you really want to close campaign '{0}' ? +PageCertCampaigns.message.closeStageConfirmSingle=Do you really want to close current stage for '{0}'? +PageCertCampaigns.message.deleteCampaignConfirmMultiple=Do you really want to delete selected {0} campaigns? +PageCertCampaigns.message.deleteCampaignConfirmSingle=Do you really want to delete campaign '{0}' ? +PageCertCampaigns.message.noCampaignsSelected=No relevant campaigns selected +PageCertCampaigns.nowForCampaign=(campaign: now) +PageCertCampaigns.nowForStage=now +PageCertCampaigns.table.deadline=Stage (campaign) deadline +PageCertCampaigns.table.escalationLevel=Esc. level +PageCertCampaigns.table.description=Description +PageCertCampaigns.table.name=Nom +PageCertCampaigns.table.stages=Stages +PageCertCampaigns.table.stage=Stage +PageCertCampaigns.table.state=Etat +PageCertCampaigns.search.state=Etat +PageCertCampaign.stageTime=Stage time +PageCertCampaign.escalationLevel=Escalation level +PageCertCampaign.statistics.accept=Accepter +PageCertCampaign.statistics.delegate=Déléguer +PageCertCampaign.statistics.items=Items +PageCertCampaign.statistics.noDecision=No decision (abstain) +PageCertCampaign.statistics.noResponse=Pas de réponse +PageCertCampaign.statistics.reduce=Réduire +PageCertCampaign.statistics.reduceRemedied=Reduce - remedied +PageCertCampaign.statistics.remedied=Remedied +PageCertCampaign.statistics.response=Response +PageCertCampaign.statistics.revokeRemedied=Revoke - remedied +PageCertCampaign.statistics.revoke=Révoquer +PageCertCampaign.statistics=Statistics +PageCertCampaigns.title=Access Certification Campaigns {0} +PageCertCampaign.table.campaignName=Campaign name +PageCertCampaign.table.comments=Comments +PageCertCampaign.table.deadline=Deadline +PageCertCampaign.table.decision=Decision +PageCertCampaign.table.objectName=Objet +PageCertCampaign.table.remediedAt=Remedied at +PageCertCampaign.table.requested=Requested +PageCertCampaign.table.reviewers=Reviewers +PageCertCampaign.table.reviewedAt=Reviewed at +PageCertCampaign.table.reviewedBy=Reviewed by +PageCertCampaign.table.reviewedInStage=In stage +PageCertCampaign.table.targetName=Cible +PageCertCampaign.table.conflictingTargetName=Conflicting +PageCertCampaign.noReviewers=(none) +PageCertCampaign.time=Time +PageCertCampaign.title=Access Certification Campaign +PageCertDecisions.ago={0} ago +PageCertDecisions.checkbox.showNoResponseOnly=Show "no response" cases only +PageCertDecisions.in=in {0} +PageCertDecisions.menu.accept=Accepter +PageCertDecisions.menu.acceptSelected=Accept selected +PageCertDecisions.menu.delegate=Déléguer +PageCertDecisions.menu.delegateSelected=Delegate selected +PageCertDecisions.menu.noResponse=No Response +PageCertDecisions.menu.noResponseSelected=Mark selected as No response +PageCertDecisions.menu.notDecided=Not Decided +PageCertDecisions.menu.notDecidedSelected=Mark selected as Not decided +PageCertDecisions.menu.reduce=Réduire +PageCertDecisions.menu.reduceSelected=Reduce selected +PageCertDecisions.menu.revoke=Révoquer +PageCertDecisions.menu.revokeSelected=Revoke selected +PageCertDecisions.message.noItemSelected=No item selected +PageCertDecisions.now=now +PageCertDecisions.table.campaignName=Campaign name +PageCertDecisions.table.campaignStage=Stage +PageCertDecisions.table.escalation=Esc +PageCertDecisions.table.comment=Comment +PageCertDecisions.table.deadline=Deadline +PageCertDecisions.table.decision=Decision +PageCertDecisions.table.objectName=Objet +PageCertDecisions.table.requested=Requested +PageCertDecisions.table.targetName=Cible +PageCertDecisions.table.conflictingTargetName=Conflicting +PageCertDecisions.table.targetType=Type +PageCertDecisions.title=My certification work items +PageCertDefinition.basicInformation=Basic information +PageCertDefinition.button.back=Retour +PageCertDefinition.button.save=Enregistrer +PageCertDefinition.description=Description +PageCertDefinition.name=Nom +PageCertDefinition.numberOfStages=Number of stages +PageCertDefinition.outcomeStrategy=Strategy for deriving overall outcome from stage outcomes +PageCertDefinition.campaignsInReviewStage=Campaigns in review stage +PageCertDefinition.campaignsTotal=Campaigns total +PageCertDefinition.campaignLastStarted=Campaign last started +PageCertDefinition.campaignLastClosed=Campaign last closed +PageCertDefinition.owner=Propriétaire +PageCertDefinition.stopReviewOn=stop review on: +PageCertDefinition.stopReviewOnDefault= +PageCertDefinition.stopReviewOnNone= +PageCertDefinitions.basicInformation=Basic information +PageCertDefinitions.button.createCampaign=Create campaign +PageCertDefinitions.button.deleteDefinition=Delete definition +PageCertDefinitions.button.editAsXml=Edit as XML +PageCertDefinitions.button.showCampaigns=Show campaigns +PageCertDefinitions.deleteDefinitionConfirmSingle=Do you really want to delete definition '{0}'? +PageCertDefinitions.table.description=Description +PageCertDefinitions.table.name=Nom +PageCertDefinitions.title=Access Certification Definitions +PageCertDefinitions.title.confirmDelete=Confirm delete +PageCertDefinitionsxmlDefinition=XML definition +PageCertDefinition.title=Access Certification Campaign Definition +PageCertDefinition.campaigns=Campaigns +PageCertDefinition.xmlDefinition=XML definition +PageCertDefinition.scopeDefinition=Scope definition +PageCertDefinition.basic=Basic +PageCertDefinition.scopeName=Scope name +PageCertDefinition.scopeDescription=Scope description +PageCertDefinition.scopeObjectType=Object type +PageCertDefinition.scopeSearchFilter=Filter to select objects +PageCertDefinition.scopeAssignmentsInducements=Include assignments or inducements +PageCertDefinition.scopeIncludeAssignments=Affectations +PageCertDefinition.scopeIncludeInducements=Inducements +PageCertDefinition.scopeIncludeTargetTypes=Include target types +PageCertDefinition.scopeIncludeRoles=Roles +PageCertDefinition.scopeIncludeOrgs=Orgs +PageCertDefinition.scopeIncludeServices=Services +PageCertDefinition.scopeIncludeResources=Resources +PageCertDefinition.scopeIncludeByStatus=Include by activation status +PageCertDefinition.scopeEnabledItemsOnly=Enabled items only +PageCertDefinition.stagesDefinition=Stages definition +PageCert.in=in {0} +PageCert.message.assignment={0} of {1} {2} to {3} {4}. +PageCert.message.textAdministrativeState=Administrative state: {0}. +PageCert.message.textAssignment=Affectation +PageCert.message.textDescription=Description: {0}. +PageCert.message.textExtensions=Extensions defined: {0}. +PageCert.message.textInducement=Inducement +PageCert.message.textIntent=Intent: {0}. +PageCert.message.textKind=Kind: {0}. +PageCert.message.textOrder=Order: {0}. +PageCert.message.textOrg=Org: {0}. +PageCert.message.textRelation=Relation: {0}. +PageCert.message.textTenant=Tenant: {0}. +PageCert.message.textValidFrom=Valid from: {0}. +PageCert.message.textValidTo=Valid to: {0}. +PageCert.now=now +StageEditorPanel.stageDefinitionLabelName = Stage Definition # +StageDefinitionPanel.stageName = Nom +StageDefinitionPanel.stageDescription = Description +StageDefinitionPanel.stageDuration = Duration +StageDefinitionPanel.notifyBeforeDeadline = Notify before deadline +StageDefinitionPanel.notifyWhenNoDecision = Notify only when no decision +StageDefinitionPanel.reviewerSpecification = Reviewer specification +StageDefinitionPanel.reviewerSpecificationName = Reviewer specification name (optional) +StageDefinitionPanel.reviewerSpecificationDescription = Reviewer specification description (optional) +StageDefinitionPanel.reviewerSpecificationTarget = Reviewers based on assignment target object +StageDefinitionPanel.reviewerSpecificationObject = Reviewers based on the object being assigned to +StageDefinitionPanel.reviewerUseTargetOwner = Use target owner +StageDefinitionPanel.reviewerUseTargetApprover = Use target approver +StageDefinitionPanel.reviewerUseObjectOwner = Use object owner +StageDefinitionPanel.reviewerUseObjectApprover = Use object approver +StageDefinitionPanel.reviewerUseObjectManager = Reviewers based on the manager of object being assigned to +StageDefinitionPanel.reviewerUseObjectManagerOrgType = Type of organization relation used to determine the manager (optional) +StageDefinitionPanel.reviewerUseObjectManagerAllowSelf = Allow managers to approve their own assignments +StageDefinitionPanel.reviewerUseObjectManagerBox = Use object manager +StageDefinitionPanel.defaultReviewerRef = Default reviewer reference +StageDefinitionPanel.additionalReviewerRef = Additional reviewer reference +StageDefinitionPanel.outcomeStrategy = Decision aggregation strategy in case of more than one reviewer +StageDefinitionPanel.outcomeIfNoReviewers = Outcome if there are no reviewers allocated +StageDefinitionPanel.stopReviewOn = Stop review on +StageDefinitionPanel.remediation = Remediation +StageDefinitionPanel.addNewStageButton = Add stage definition +StageDefinitionPanel.moveStageLeftButton = Move left +StageDefinitionPanel.moveStageRightButton = Move right +StageDefinitionPanel.deleteStageButton = Delete this stage +PageContacts.title=Contacts browser +pageContentAccounts.button.searchButton=Recherche +pageContentAccounts.dialog.title.confirmDelete=Delete Confirmation +pageContentAccounts.identifiers=Identifiers +pageContentAccounts.isProtected=Is protected +pageContentAccounts.intent=Objectif +pageContentAccounts.kind=Sorte +pageContentAccounts.menu.changeOwner=Change owner +pageContentAccounts.menu.deleteAccount=Effacer +pageContentAccounts.menu.disableAccount=Disable +pageContentAccounts.menu.enableAccount=Enable +pageContentAccounts.menu.importAccount=Importer +pageContentAccounts.menu.removeOwner=Remove owner +pageContentAccounts.menu.deleteAccounts=Delete selected +pageContentAccounts.menu.disableAccounts=Disable selected +pageContentAccounts.menu.enableAccounts=Enable selected +pageContentAccounts.menu.importAccounts=Import selected +pageContentAccounts.menu.removeOwners=Remove for selected +pageContentAccounts.message.cantImportAccount=Can't import account, oid={0} +pageContentAccounts.message.cantShowAccountDetails=Can't show details for account {0} ({1}). +pageContentAccounts.message.cantShowUserDetails=Can't show details of user {0} ({1}). +pageContentAccounts.message.deleteConfirmation=Do you really want to delete {0} account(s) from this resource? +pageContentAccounts.message.deleteConfirmationSingle=Do you really want to delete '{0}' account from this resource? +pageContentAccounts.message.noAccountSelected=No accounts has been selected. +pageContentAccounts.message.resourceOidNotDefined=Resource oid is not defined in url. +pageContentAccounts.name=Nom +pageContentAccounts.objectClass=Object class +pageContentAccounts.owner=Propriétaire +pageContentAccounts.search=Recherche +pageContentAccounts.situation=Situation +PageContentAccounts.title=Resource objects on '{0}' +pageContentEntitlements.entitlements=Entitlements +pageContentEntitlements.message.resourceOidNotDefined=Resource oid is not defined in url. +PageContentEntitlements.title={0} +pageCreatedReports.button.delete=Effacer +pageCreatedReports.button.download=Download +pageCreatedReports.button.searchButton=Recherche +pageCreatedReports.dialog.title.confirmDelete=Confirm Delete +pageCreatedReports.filter.default=Choose File Type +pageCreatedReports.filter.filetype=File Type +pageCreatedReports.filter.reportType=Report Type +pageCreatedReports.inlineMenu.deleteAll=Delete All +pageCreatedReports.inlineMenu.deleteSelected=Delete Selected +pageCreatedReports.message.deleteAll=Do you really want to delete all created report outputs? +pageCreatedReports.message.deleteOutputConfirmed=Do you really want to delete selected {0} Created report(s)? +pageCreatedReports.message.deleteOutputSingle=Do you really want to delete Created report '{0}'? +pageCreatedReports.message.downloadError=Could not download Report. +pageCreatedReports.message.fileNotFound=File with report was not found. +pageCreatedReports.message.nothingSelected=No reports have been selected. +pageCreatedReports.message.queryError=Error occurred during translation search query to filter. +pageCreatedReports.table.author=Author +pageCreatedReports.table.description=Description +pageCreatedReports.table.filetype=File Type +pageCreatedReports.table.name=Nom +pageCreatedReports.table.time=Time +pageCreatedReports.table.type=Report Type +PageCreatedReports.title=Created Reports +PageCaseWorkItems.table.name=Nom +PageCaseWorkItems.table.objectName=Objet +PageCaseWorkItems.table.actor=Actor +PageCaseWorkItems.table.description=Description +PageCaseWorkItems.table.openTimestamp=Créé +PageCaseWorkItems.table.closeTimestamp=Fermé +PageCaseWorkItems.table.deadline=Deadline +PageCaseWorkItems.table.state=État +PageCaseWorkItems.search.resource=Ressource +PageCaseWorkItems.search.assignee=Actor +PageCaseWorkItems.search.includeClosedCases=Include closed cases +PageDashboard.accounts=My accounts +PageDashboard.activeTasks=Active Tasks +PageDashboard.activeUsers=Active Users +PageDashboard.assignments=My assignments +PageDashboard.personalInfo=Personal info +PageDashboard.serverLoad=Server Load +PageDashboard.systemInfo=System status +PageDashboard.title=Dashboard +PageDashboard.usedRam=Used RAM +PageDashboard.workItems=My work items +PageDashboard.infobox.users.label=Users +PageDashboard.infobox.users.number=enabled +PageDashboard.infobox.users.total=total +PageDashboard.infobox.users.archived=archived +PageDashboard.infobox.orgs.label=Organizational units +PageDashboard.infobox.orgs.number=enabled +PageDashboard.infobox.orgs.total=total +PageDashboard.infobox.orgs.archived=archived +PageDashboard.infobox.roles.label=Roles +PageDashboard.infobox.roles.number=enabled +PageDashboard.infobox.roles.total=total +PageDashboard.infobox.roles.archived=archived +PageDashboard.infobox.services.label=Services +PageDashboard.infobox.services.number=enabled +PageDashboard.infobox.services.total=total +PageDashboard.infobox.services.archived=archived +PageDashboard.infobox.resources.label=Resources +PageDashboard.infobox.resources.number=up +PageDashboard.infobox.resources.total=total +PageDashboard.infobox.tasks.label=Tasks +PageDashboard.infobox.tasks.number=active +PageDashboard.infobox.tasks.total=total +PageDashboard.search.input=Enter the name to search for +PageDashboard.search.users=Users +PageDashboard.search.resources=Resources +PageDashboard.search.roles=Roles +PageDashboard.search.tasks=Tasks +pageDebugList.button.clear=Clear +pageDebugList.button.search=Recherche +pageDebugList.description=Description +pageDebugList.dialog.title.confirmDelete=Confirm delete +pageDebugList.dialog.title.deleteAll=Delete All Objects +pageDebugList.menu.deleteAllIdentities=Delete all identities +pageDebugList.menu.deleteAllType=Delete all of selected type +pageDebugList.menu.deleteSelected=Delete selected +pageDebugList.menu.deleteShadowsOnResource=Delete all shadows on resource +pageDebugList.menu.exportShadowsOnResource=Export all shadows on resource +pageDebugList.menu.exportAll=Export all objects +pageDebugList.menu.exportAllSelectedType=Export all of selected type +pageDebugList.menu.exportSelected=Export selected +pageDebugList.message.countSearchProblem=Couldn't perform search operation on users/shadows/org. units +pageDebugList.message.createFileException=Couldn't create file for download. +pageDebugList.message.deleteAllType=Do you really want to delete all objects of type "{0}"? +pageDebugList.message.deleteObjectConfirm=Do you really want to delete "{0}"? +pageDebugList.message.deleteSelectedConfirm=Do you really want to delete {0} objects? +pageDebugList.message.laxativeProblem=Drop all identities operation has not performed successfully +pageDebugList.message.nothingSelected=No object has been selected. +pageDebugList.message.queryException=Couldn't create query for name substring, reason: {0} +pageDebugList.message.resourceNotSelected=Resource not selected. +pageDebugList.message.singleOrgDeleteProblem=Couldn't delete org. unit +pageDebugList.message.singleShadowDeleteProblem=Couldn't delete shadow +pageDebugList.message.singleUserDeleteProblem=Couldn't delete user +pageDebugList.messsage.deleteAllOfType=Deleting objects of type {0}. +pageDebugList.messsage.deleteAllResourceShadows=Do you really want to delete all shadows on resource {0}? +pageDebugList.messsage.deleteAllShadowsStarted=Task which deletes all shadows on resource {0} was started. +pageDebugList.name=Nom +pageDebugList.oid=OID +pageDebugList.objectType=Object type +pageDebugList.options=Options +pageDebugList.resourceName=Resource name +pageDebugList.resource=Ressource +pageDebugList.resourceType=Resource type +pageDebugList.searchTextPlaceholder=Nom +PageDebugList.title=Raw objects +pageDebugList.zipCheck=Use zip +pageDebugView.button.back=Retour +pageDebugView.button.save=Enregistrer +pageDebugView.edit=Éditer +pageDebugView.encrypt=Protected by encryption +pageDebugView.message.cantSaveEmpty=Impossible d'enregistrer un xml vide. +pageDebugView.message.oidNotDefined=Object oid is not defined. +pageDebugView.options=Options +pageDebugView.reevaluateSearchFilters=Reevaluate search filters +pageDebugView.saveAsRaw=Save in raw mode +pageDebugView.switchToPlainText=Switch to plain text +PageDebugView.title='{0}' details +pageDebugView.validateSchema=Validate schema +PageError403.title=Forbidden (403) +PageError404.title=Not found (404) +PageError401.title=Unauthorized (401) +PageError410.title=Gone (410) +PageError.button.back=Retour +PageError.message=Unexpected error occurred, if necessary please contact system administrator. +PageError403.message=You don't have rights to see the required page, if necessary please contact system administrator. +PageError.title=Internal error (500) +PageFindUsers.title=Find users +PageForgetPassword.back=Retour +PageForgetPassword.email=E-mail +pageForgetPassword.message.ContactAdminQuestionsNotSet=You have not set any security questions yet. Please Contact Your Administrator to reset Your Password. +pageForgetPassword.message.usernotfound=User Not Found +PageForgetPassword.password=Mot de passe +PageForgetPassword.resetPassword=Reset Password +PageForgotPassword.title=Mot de passe oublié +PageForgetPassword.username=Identifiant +PageForgotPassword.unsupported.reset.type=Unsupported password reset type +PageForgotPassword.send.nonce.failed=User's password couldn't be reset. Please contact system administrator. +PageImportObject.button.import=Import object +PageImportObject.embeddedEditor=Embedded editor +PageImportObject.file=Fichier +PageImportObject.getObjectsFrom=Get objects from +pageImportObject.message.emptyXml=Impossible d'enregistrer un xml vide. +PageImportObject.message.help=Choose XML, JSON or YAML file for import. +pageImportObject.message.nullFile=Le fichier téléchargé est vide +PageImportObject.title=Import objects +PageInternals.button.changeTime=Change time +PageInternals.button.resetTimeChange=Reset to using system time +PageInternals.consistencyChecks=Check consistency +PageInternals.encryptionChecks=Check encryption +PageInternals.readEncryptionChecks=Check read encryption +PageInternals.detailedDebugDump=Detailed debug dump +PageInternals.message.debugUpdatePerformed=Debug util updated. New value: {0} +PageInternals.message.internalsConfigUpdate=Internals config update. consistencyChecks: {0},encryptionChecks: {1}, readEncryptionChecks: {2}, QNameUtil.tolerateUndeclaredPrefixes: {3} +PageInternals.offset=Offset +PageInternals.title.debugUtil=Debug util +PageInternals.title.internalsConfig=Internals config +PageInternals.title=Internals configuration +PageInternals.title.timeChange=Time change +PageInternals.tolerateUndeclaredPrefixes=Tolerate undeclared prefixes in QNames and paths +PageInternals.title.counters=Performance counters +PageInternals.title.traces=Performance traces +InternalOperationClasses.resourceSchemaOperations=Resource schema operations +InternalOperationClasses.connectorOperations=Connector operations +InternalOperationClasses.shadowFetchOperations=Shadow fetch operations +InternalOperationClasses.repositoryOperations=Repository operations +InternalOperationClasses.prismObjectClone=Prism object clones +InternalOperationClasses.roleEvaluations=Role evaluations +InternalCounters.resourceSchemaParseCount=Resource schema parse +InternalCounters.resourceSchemaFetchCount=Resource schema fetch +InternalCounters.connectorInstanceInitializationCount=Connector instance initialization +InternalCounters.connectorSchemaParseCount=Connector schema parse +InternalCounters.connectorCapabilitiesFetchCount=Connector capabilities fetch +InternalCounters.scriptCompileCount=Script compile +InternalCounters.scriptExecutionCount=Script execution +InternalCounters.connectorOperationCount=Connector operation +InternalCounters.connectorSimulatedPagingSearchCount=Connector simulated paging search +InternalCounters.shadowFetchOperationCount=Shadow fetch operation +InternalCounters.shadowChangeOperationCount=Shadow change operation +InternalCounters.provisioningAllExtOperationCount=All external provisioning operations +InternalCounters.repositoryReadCount=Repository read +InternalCounters.prismObjectCompareCount=Prism object compare +InternalCounters.prismObjectCloneCount=Prism object clone +InternalCounters.roleEvaluationCount=Role evaluation count +InternalCounters.roleEvaluationSkipCount=Role evaluation skip count +InternalCounters.projectorRunCount=Projector run count +pageLogging.appender=Appender: +pageLogging.appenders=Appenders +pageLogging.appenders.appending=Appending +pageLogging.appenders.filePath=File path +pageLogging.appenders.filePattern=File pattern +pageLogging.appenders.maxFileSize=Max. file size [kB] +pageLogging.appenders.maxHistory=Max. history +pageLogging.appenders.name=Nom +pageLogging.appenders.pattern=Pattern +pageLogging.audit=Audit +pageLogging.auditLog=Audit to log file: +pageLogging.button.addClassLogger=Add logger +pageLogging.button.addComponentLogger=Add component logger +pageLogging.button.addConsoleAppender=Add console appender +pageLogging.button.addFileAppender=Add file appender +pageLogging.button.addFilter=Add filter +pageLogging.button.advanced=Advanced +pageLogging.button.deleteAppender=Delete appender +pageLogging.button.deleteFilter=Delete filter +pageLogging.button.deleteLogger=Delete logger +pageLogging.button.reset=Reset +pageLogging.button.save=Enregistrer +pageLogging.details=Details: +pageLogging.dumpInterval=Dump interval: +pageLogging.filter.ALL=Tout +pageLogging.filter=Filter +pageLogging.filter.GUI=Web filter +pageLogging.filter.MODEL=Model filter +pageLogging.filter.NOTIFICATIONS=Notification filter +pageLogging.filter.PROVISIONING=Provisioning filter +pageLogging.filter.REPOSITORY=Repository filter +pageLogging.filter.RESOURCEOBJECTCHANGELISTENER=Resource object change listener filter +pageLogging.filtersTable=Filters table +pageLogging.filter.TASKMANAGER=Task manager filter +pageLogging.filter.WORKFLOWS=Workflow filter +pageLogging.logger.ALL=Tout +pageLogging.logger.GUI=Enregistreur Web +pageLogging.logger=Logger +pageLogging.logger.MODEL=Model logger +pageLogging.logger.NOTIFICATIONS=Notifications logger +pageLogging.logger.PROVISIONING=Provisioning logger +pageLogging.logger.REPOSITORY=Repository logger +pageLogging.logger.RESOURCEOBJECTCHANGELISTENER=Resource object change listener logger +pageLogging.loggersAppender=Appender +pageLogging.loggersLevel=Level +pageLogging.loggers=Loggers +pageLogging.loggersTable=Loggers table +pageLogging.logger.TASKMANAGER=Task manager logger +pageLogging.logger.WORKFLOWS=Workflow module logger +pageLogging.logSubsystemEntryExit=Log subsystem entry/exit +pageLogging.performanceStatistics=Performance statistics: +pageLogging.profiling=Profiling +pageLogging.requestFilter=Request filter: +pageLogging.rootAppender=Root appender: +pageLogging.rootLevel=Root logger: +pageLogging.subsystem.appender=Appender +pageLogging.subsystem.level=Level +pageLogging.subsystem.model=Modèle +pageLogging.subsystem.provisioning=Provisioning +pageLogging.subsystem.repository=Repository +pageLogging.subsystem.resourceObjectChangeListener=Resource object change listener +pageLogging.subsystems=Subsystems: +pageLogging.subsystem..taskManager=Task manager +pageLogging.subsystem.ucf=Ucf +pageLogging.subsystem.workflow=Workflow +PageLogging.title=Logging Management +PageLogin.forgetPassword=Mot de passe oublié +pageLogin.message.ForgetPasswordSettingsWrong=Forget Passwords settings are wrong. Please Contact Your Administrator for changing your password. +PageLogin.password=Mot de passe +PageLogin.signIn=S'enregistrer +PageLogin.title=Connexion +PageLogin.username=Nom d'utilisateur +PageMyPasswordQuestions.title=My Password Questions +PageMyPasswords.accountMidpoint=Identity Manager +PageMyPasswords.accounts=Comptes +PageMyPasswords.button.back=Retour +PageMyPasswords.button.save=Enregistrer +PageMyPasswords.couldntResolve=Couldn't resolve resource. +PageMyPasswords.enabled=Activé +PageMyPasswords.importantNote=If selected, user password and all accounts' credentials will be updated based on policies defined in resources definitions. +PageMyPasswords.name=Nom +PageMyPasswords.noAccountSelected=Password not changed. No account was selected. +PageMyPasswords.password=Mot de passe +PageMyPasswords.resourceMidpoint=Identity Repository +PageMyPasswords.resourceName=Ressource +PageMyPasswords.title=Mes mots de passe +PageNewReport.button.import=Import report +PageNewReport.embeddedEditor=Embedded editor +PageNewReport.file=Fichier +PageNewReport.getObjectsFrom=Create report from +PageNewReport.message.emptyXml=Impossible d'enregistrer un xml vide. +PageNewReport.message.help=Sélectionner le xml à importer +PageNewReport.message.nullFile=Le fichier téléchargé est vide +PageNewReport.title=Importer un rapport Jasper +PageOrgTree.message.noOrgStructDefined=Aucune structure d'organisation de définie +PageOrgTree.title=Organization tree +pageOrgUnit.accounts=Projections +PageOrgUnit.extension=Extension +PageOrgUnit.message.cantCreateExtensionDelta=Can't create delta for org. unit extension +PageOrgUnit.parentOrgRef=Parent +PageOrgUnit.title.approvers=Approvers +PageOrgUnit.title.assignments=Affectations +PageOrgUnit.title.authorizations=Authorizations +PageOrgUnit.title.basic=Basic +PageOrgUnit.title.exclusions=Exclusions +PageOrgUnit.title.inducements=Inducements +PageOrgUnit.title=New org. unit +PageOrgUnit.title.parentOrgUnit=Parent(s) +pageProcessInstance.button.back=Retour +pageProcessInstances.active=Currently active +pageProcessInstances.before=before +pageProcessInstances.button.back=Retour +pageProcessInstances.button.stop=Stop process instance(s) +pageProcessInstances.button.delete=Delete process instance(s) +pageProcessInstances.finished=Terminé récemment +pageProcessInstances.item.finished=Terminé +pageProcessInstances.item.name=Nom +pageProcessInstances.item.owner=Propriétaire +pageProcessInstances.item.result=Outcome +pageProcessInstances.item.started=Commencé +pageProcessInstances.item.object=Objet +pageProcessInstances.item.target=Cible +pageProcessInstances.item.state=État +pageProcessInstances.item.stage=Stage +pageProcessInstances.item.status=Statut +pageProcessInstances.message.noStoppableItemSelected=No process instance that could be stopped has been selected. +pageProcessInstances.message.noItemSelected=No process instance has been selected. +pageProcessInstances.notYet=Pas encore +PageProcessInstancesAll.title=All approval requests +PageProcessInstancesRequestedBy.title=My approval requests +PageProcessInstancesRequestedFor.title=Approval requests about me +PageReport.basic=Configuration +PageReport.fullXml=Full xml +PageReport.jasperTemplate=Modèle Jasper +PageReport.jasperTemplateStyle=Jasper template style +PageReport.message.cantSaveEmpty=Can't save empty report. +PageReport.message.cantSerializeFromObjectToString=Can't serialize object to XML. +PageReports.button.configure=Configurer +PageReports.button.run=Exécuter +PageReports.message.jasperError=Error occurred during creating Jasper report. +PageReports.message.queryError=Error occurred during translation search query to filter. +PageReports.message.resourceNotDefined=Ressource non définie +PageReports.message.unknownReport=Unknown report. +PageReports.report.auditDescription=Report made from audit records. +PageReports.report.auditName=Audit logs +PageReports.report.reconciliationDescription=Reconciliation report for selected resource. +PageReports.report.reconciliationName=Réconciliation +PageReports.report.usersDescription=Users listed in Identity Manager. +PageReports.report.usersName=Users in Identity Manager +PageReports.search.showSubreports=Show subreports +PageReports.table.description=Description +PageReports.table.name=Nom +PageReports.title.auditPopup=Audit report parameters +PageReports.title=Available reports +PageReports.title.reconciliationPopup=Reconciliation report parameters +PageReports.title.userPopup=User report parameters +PageReport.title=Report configuration +PageResource.resource.mappings=Mappings +PageResource.resource.source=Source +PageResource.resource.target=Cible +PageResource.resource.sourceAndTarget=Source and Target +PageResource.resource.noMappings=No mappings +PageResource.resource.sync=Synchronization defined +PageResource.resource.up=Resource is UP +PageResource.resource.down=Resource is DOWN +PageResource.resource.broken=Resource is BROKEN +PageResource.resource.availabilityUnknown=Resource state is unknown +PageResource.resource.objectTypes=object types +PageResource.resource.schemaDefinitions=schema definitions +PageResource.resource.schema=Schéma +PageResource.resource.noSchema=No schema +PageResource.resource.schemaError=Schema error +PageResource.tab.details=Détails +pageResource.bundle=Bundle +pageResource.button.back=Retour +pageResource.button.editXml=Éditer XML +pageResource.button.refreshSchema=Rafraichir le schéma +pageResource.button.wizard=Wizard +pageResource.button.configurationEdit=Edit configuration +pageResource.button.wizardShow=Show using wizard +pageResource.button.wizardEdit=Edit using wizard +pageResource.button.importAccounts=Importer les comptes +pageResource.refreshSchema.failed=Échec du rafraichissement du schéma des ressources +pageResource.button.save=Enregistrer +pageResource.button.test=Tester la connexion +pageResource.capabilities=Capabilities +pageResource.conConnection=Connexion au connecteur +pageResource.confValidation=Configuration validation +pageResource.conInitialization=Connection initialization +pageResource.conSanity=Connector sanity +pageResource.conSchema=Connector schema +pageResource.deleteSyncToken=Delete Sync. Token +pageResourceEdit.edit=Éditer +pageResourceEdit.message.emptyXml=Can't save empty xml as resource. +pageResourceEdit.options=Options +pageResource.editResource=Éditer les ressources +PageResourceEdit.title=Nouvelle ressource +pageResource.import=Importer +pageResource.message.invalidTaskSearch=Synchronization task search did not perform correctly. +pageResource.message.oidNotDefined=OID de la ressource non défini dans la requête +pageResource.name=Nom +pageResource.objectTypes.displayName=Affichage du nom +pageResource.objectTypes.help=Aide +pageResource.objectTypes.nativeObjectClass=Native object class +pageResource.objectTypes=Object types +pageResource.objectTypes.type=Type +pageResource.oid=OID +pageResource.overallStatus=Overall status +pageResource.progress=Progression +pageResource.resource=Ressource +pageResource.synchronizationTasks=Synchronization tasks +pageResources.bundle=Bundle +pageResources.connectorType=Connector type +pageResources.button.discoveryRemote=Discovery +pageResources.button.editAsXml=Éditer XML +pageResources.button.search=Recherche +pageResources.connector.hostname=Hostname +pageResources.connectorHosts=Connector hosts +pageResources.connector.name=Nom +pageResources.connector.port=Port +pageResources.connector.protectConnection=Protégé +pageResources.connector.timeout=Timeout +pageResources.content=Content +pageResources.dialog.title.confirmDelete=Confirm delete +pageResources.import=Importer +pageResources.inlineMenuItem.deleteSyncToken=Delete sync. token +pageResources.inlineMenuItem.editResource=Edit using wizard +pageResources.message.deleteHostConfirm=Do you really want to delete host '{0}'? +pageResources.message.deleteHostsConfirm=Do you really want to delete {0} hosts? +pageResources.message.deleteResourceConfirm=Do you really want to delete resource '{0}'? +pageResources.message.deleteResourcesConfirm=Do you really want to delete {0} resources? +pageResources.message.noHostSelected=No connector host has been selected. +pageResources.message.noResourceSelected=No resource has been selected. +pageResources.message.queryError=Error occurred during translation search query to filter. +pageResources.name=Nom +pageResources.progress=Progression +pageResources.resources=Resources +pageResources.searchText.placeholder=Nom +pageResources.status=Last status +pageResource.status=Statut +PageResources.title=Resources List +pageResources.version=Version +pageResource.sync=Sync +PageResource.title=Resource details +pageResource.type=Type +pageResource.version=Version +PageResourceWizard.title=Nouvelle ressource +PageResourceWizard.title.edit=Edit resource '{0}' +pageRole.members=Members +pageRole.governance=Governance +PageRoleEditor.extension=Extension +PageRoleEditor.label.approverRef=Approver +PageRoleEditor.label.approverRef.placeholder=Set approver +PageRoleEditor.label.assignmentConstraint.placeholder=Set assignment policy +PageRoleEditor.label.description=Description +PageRoleEditor.label.displayName=Affichage du nom +PageRoleEditor.label.identifier=Identifiant +PageRoleEditor.label.maxAssignments=Max. assignments +PageRoleEditor.label.minAssignments=Min. assignments +PageRoleEditor.label.name=Nom +PageRoleEditor.label.ownerRef=Propriétaire +PageRoleEditor.label.ownerRef.placeholder=Set owner +PageRoleEditor.label.requestable=Requestable +PageRoleEditor.label.riskLevel=Risk Level +PageRoleEditor.label.type=Type +PageRoleEditor.message.addApproverOk=Approver with name: '{0}' was added successfully. +PageRoleEditor.message.addOwnerOk=Owner with name: '{0}' was added successfully. +PageRoleEditor.message.cantAddOwner=Can't setup the selected owner. +PageRoleEditor.message.cantCreateExtensionDelta=Can't create delta for role extension +PageRoleEditor.subtitle.activation=Activation +PageRoleEditor.subtitle.basic=Basic +PageRoleEditor.subtitle.editingRole=role '{0}' +PageRoleEditor.subtitle.extension=Extension +PageRoleEditor.subtitle.newRole=new role +PageRoleEditor.title.assignments=Affectations +PageRoleEditor.title.editingRole=Éditer +PageRoleEditor.title.inducements=Inducements +PageRoleEditor.title.newRole=Créer +pageRoles.button.delete=Effacer +pageRoles.dialog.title.confirmDelete=Confirm delete +pageRoles.message.confirmationMessageForMultipleObject=Do you really want to {0} selected {1} role(s)? +pageRoles.message.confirmationMessageForSingleObject=Do you really want to {0} role '{1}'? +pageRoles.message.confirmationMessageForMultipleObject.members=Do you really want to {0} selected {1} role(s)? Some of the roles have member(s). +pageRoles.message.confirmationMessageForSingleObject.members=Do you really want to {0} role '{1}'? Selected role has member(s). +pageRoles.message.nothingSelected=No role has been selected. +pageRoles.message.queryError=Error occurred during translation search query to filter. +pageRoles.requestable=Requestable +PageRoles.title=List roles +pageSecurityQuestions.message.WrongAnswer=Questions Not Answered Correctly +pageSecurityQuestions.message.noPolicySet=No password policy is set +PageSecurityQuestions.title=Security Questions +PageShowPassword.message=Your new password is: +PageShowPassword.success=New password has been successfully created +PageShowPassword.title=New Password +PageSizePopover.title=Page size +pageSystemConfiguration.assignmentPolicyEnforcement.value.full=Complet +pageSystemConfiguration.assignmentPolicyEnforcement.value.legalize=Relatif +pageSystemConfiguration.assignmentPolicyEnforcement.value.mark=Marque +pageSystemConfiguration.assignmentPolicyEnforcement.value.none=Aucun +pageSystemConfiguration.assignmentPolicyEnforcement.value.positive=Positive +pageSystemConfiguration.logging.title=Logging +pageSystemConfiguration.notifications.title=Notifications +pageSystemConfiguration.profiling.title=Profiling +pageSystemConfiguration.adminGui.title=Admin GUI +pageSystemConfiguration.system.title=System +PageSystemConfiguration.title=Configuration +AdminGuiConfigPanel.dashboardLinksConfig=Dashboard links configuration +AdminGuiConfigPanel.additionalMenuItemConfig=Additional menu items +AdminGuiConfigPanel.title=Admin GUI configuration +AdminGuiConfigPanel.dashboardLinkDialogTitle.title=Configure dashboard link +AdminGuiConfigPanel.additionalMenuItemDialog.title=Configure additional menu item +RichHyperlinkConfigDialog.label=Label +RichHyperlinkConfigDialog.targetUrl=Target URL +RichHyperlinkConfigDialog.color=Color +RichHyperlinkConfigDialog.authorization=Authorization +RichHyperlinkConfigDialog.icon=Icon (css class) +RichHyperlinkConfigDialog.description=Description +RichHyperlinkConfigDialog.message.badUpdate=Can't show empty dashboard link config. +PageTaskAdd.title=New task +pageTask.advancedOption=Advanced option +pageTask.basic=Basic +pageTask.boundHelp=Tightly bound tasks are used to run short actions, which are repeating quite often (e.g. in intervals less than 1 minute). A typical example is the live synchronization. Cron-like specification is not supported for these tasks; you have to specify the time interval. +pageTask.bound=Tightly bound (use if recurring task runs often) +pageTask.browse=Browse +pageTask.category.BulkActions=Bulk actions +pageTask.category.Demo=Demo +pageTask.category.ImportFromFile=Import from file +pageTask.category.ImportingAccounts=Importing accounts +pageTask.category.LiveSynchronization=Live synchronization +pageTask.category.Recomputation=Recomputation +pageTask.category.Reconciliation=Réconciliation +pageTask.category.UserRecomputation=User recomputation +pageTask.category.Workflow=Workflow +pageTask.category.Custom=Personnalisé +pageTask.createSuspended=Create in SUSPENDED state +pageTask.cronHelp=Cron-like specification is in the form: SECONDS MINUTES HOURS DAY-OF-MONTH MONTH DAY-OF-WEEK YEAR (optional), e.g. '0 0 12 ? * WED' which means 'every Wednesday at 12:00:00 pm'. +pageTask.cronHelpLink=For more information, please see +pageTask.cronHelpLinkTutorial=tutorial +pageTask.cronSpec=Schedule cron-like specification +pageTask.dryRun=Dry run +pageTask.focusType=Applicable to type +pageTaskEdit.basic=Basic +pageTaskEdit.work=Work to do +pageTaskEdit.boundHelp=Tightly bound tasks are used to run short actions, which are repeating quite often (e.g. in intervals less than 1 minute). A typical example is the live synchronization. Cron-like specification is not supported for these tasks; you have to specify the time interval. +pageTaskEdit.bound=Tightly bound (use if recurring task runs often) +pageTaskEdit.binding=Binding +pageTaskEdit.button.back=Retour +pageTaskEdit.button.cancelEditing=Cancel editing +pageTaskEdit.button.edit=Éditer +pageTaskEdit.button.resume=Resume +pageTaskEdit.button.runNow=Run now +pageTaskEdit.button.stopApprovalProcess=Stop approval process +pageTaskEdit.button.save=Enregistrer +pageTaskEdit.button.suspend=Suspendre +pageTaskEdit.category=Category +pageTaskEdit.cronHelp=Cron-like specification is in the form: SECONDS MINUTES HOURS DAY-OF-MONTH MONTH DAY-OF-WEEK YEAR (optional), e.g. '0 0 12 ? * WED' which means 'every Wednesday at 12:00:00 pm'. +pageTaskEdit.cronHelpLink=For more information, please see +pageTaskEdit.cronHelpLinkTutorial=tutorial +pageTaskEdit.cronSpec=Schedule cron-like specification +pageTaskEdit.description=Description +pageTaskEdit.dryRun=Dry run +pageTaskEdit.executeInRawMode=Execute in raw mode +pageTaskEdit.execution=Statut d'exécution +pageTaskEdit.handlerUri=Handler URI +pageTaskEdit.identifier=Identifiant +pageTaskEdit.intent=Objectif +pageTaskEdit.kind=Sorte +pageTaskEdit.lastFinished=Task run last finished +pageTaskEdit.lastStarted=Task run last started +pageTaskEdit.message.cantTaskDetails=Couldn't load task details. +pageTaskEdit.message.node=- at node {0} +pageTaskEdit.misfire=Misfire action +pageTaskEdit.modelOperationStatusLabel=Model operation status +pageTaskEdit.name=Task name +pageTaskEdit.nextRun=Next scheduled task run +pageTaskEdit.nextRetry=Next retry +pageTaskEdit.notStartAfter=Do not start after +pageTaskEdit.notStartBefore=Do not start before +pageTaskEdit.objectClass=Object class +pageTaskEdit.objectDelta=Object delta +pageTaskEdit.bulkAction=Bulk action +pageTaskEdit.objectType=Object type +pageTaskEdit.objectQuery=Object query +pageTaskEdit.objectRef=Object reference +pageTaskEdit.token=Synchronization token +pageTaskEdit.retryUnhandledErr=Retry unhandled errors +pageTaskEdit.resourceRef=Resource reference +pageTaskEdit.oid=OID +pageTaskEdit.opResult.message=Message +pageTaskEdit.opResult.operation=Operation +pageTaskEdit.opResult.status=Statut +pageTaskEdit.opResult.token=Token +pageTaskEdit.options=Options +pageTaskEdit.parent=Parent task +pageTaskEdit.owner=Task owner +pageTaskEdit.recurring=Recurring task +pageTaskEdit.recurrence=Recurrence +pageTaskEdit.runUntilNodeDown=Run only until node down +pageTaskEdit.scheduleHelp=For one-time tasks, enter neither schedule interval nor cron-like specification. For recurring tasks, enter exactly one of these. +pageTaskEdit.scheduleInterval=Schedule interval (seconds) +pageTaskEdit.scheduleTitle=Scheduling +pageTaskEdit.approvals=Approvals +pageTaskEdit.operation=Operation context +pageTaskEdit.performance=Environmental performance +pageTaskEdit.progress=Progression +pageTaskEdit.subtasksAndThreads=Subtasks and threads +pageTaskEdit.statesAndActions=States and actions +pageTaskEdit.result=Result +pageTaskEdit.errors=Errors +pageTaskEdit.subtasksLabel=Subtasks +pageTaskEdit.suspendReq=For editing is necessary to suspend the task +pageTaskEdit.taskState=Task state +pageTaskEdit.threadAction=Thread action +pageTaskEdit.threadStop=Thread stop action +pageTaskEdit.requiredCapability=Required capability (e.g. node name) +pageTaskEdit.executionGroup=Execution group +pageTaskEdit.groupTaskLimit=Clusterwide limit for running tasks in this group +pageTaskEdit.allowedNodes=Nodes allowed to run tasks in this group (with number of threads if applicable) +pageTaskEdit.tightlyBound=Tightly bound +pageTaskEdit.title.edit=Details for '{0}' +PageTaskEdit.title=Task details +PageTaskEdit.title.wfOperation=Change operation details +PageTaskEdit.title.wfRequest=Approval request details +pageTaskEdit.workerThreads=Configured worker threads +pageTaskEdit.workflowInformationLabel=Workflow information +pageTaskEdit.displayResultInteractive=Display result in an interactive way. +pageTaskEdit.taskErros.objectName=Nom +pageTaskEdit.taskErros.status=Statut +pageTaskEdit.taskErros.message=Message +pageTask.intent=Objectif +pageTask.kind=Sorte +pageTask.misfire=Misfire action +pageTask.name=Task name +pageTask.notStartAfter=Do not start after +pageTask.notStartBefore=Do not start before +pageTask.notStartBefore.error1='Do not start before' is later than 'Do not start after' +pageTask.now=Now +pageTask.objectClass=Object class +pageTask.objectRef=Resource reference +pageTask.options=Options +pageTask.recurring=Recurring task +pageTask.runUntilNodeDown.error1=Compatible data for 'Thread stop action' are: Close, Suspend +pageTask.runUntilNodeDown.error2=Compatible data for 'Thread stop action' are: Restart, Reschedule +pageTask.runUntilNodeDown=Run only until node down +pageTasks.alreadyPassed=already passed +pageTasks.alreadyPassedForNotRunningTasks=(already passed) +pageTasks.button.deactivateServiceThreads=Stop all threads +pageTasks.button.deleteNode=Effacer +pageTasks.button.deleteTask=Effacer +pageTasks.button.deleteAllClosedTasks=Delete all closed tasks +pageTasks.button.reactivateServiceThreads=Start all threads +pageTasks.button.refreshTasks=Refresh tasks +pageTasks.button.resumeTask=Resume +pageTasks.button.scheduleTask=Run now +pageTasks.button.startScheduler=Start +pageTasks.button.stopSchedulerAndTasks=Stop scheduler + tasks +pageTasks.button.stopScheduler=Stop scheduler +pageTasks.button.suspendTask=Suspendre +pageTasks.button.synchronizeTasks=Synchronize tasks +pageTasks.button.synchronizeWorkflowRequests=Synchronize approval requests +pageTasks.category.AccessCertification=Access certification +pageTasks.category.AllCategories=All categories +pageTasks.category.BulkActions=Bulk actions +pageTasks.category=Category +pageTasks.category.Cleanup=Cleanup +pageTasks.category.Demo=Demo +pageTasks.category.ImportFromFile=Import from file +pageTasks.category.ImportingAccounts=Importing accounts +pageTasks.category.LiveSynchronization=Live synchronization +pageTasks.category.null=(undefined) +pageTasks.category.Recomputation=Recomputation +pageTasks.category.Reconciliation=Réconciliation +pageTasks.category.Report=Signaler +pageTasks.category.System=System +pageTasks.category.UserRecomputation=User recomputation +pageTasks.category.Utility=Utility +pageTasks.category.Workflow=Workflow +pageTasks.category.Custom=Personnalisé +pageTasks.category.ExecuteChanges=Execute changes +pageTasks.message.suspendAction=suspend +pageTasks.message.resumeAction=resume +pageTasks.message.runNowAction=run now +pageTasks.message.deleteAction=delete +pageTasks.message.deleteAllClosedTasksAction=delete all closed tasks +pageTasks.message.startAction=start +pageTasks.message.scheduleTaskAction=schedule task +pageTasks.message.stopSchedulerAction=stop scheduler for +pageTasks.message.startSchedulerAction=start scheduler for +pageTasks.message.stopSchedulerTasksAction=stop scheduler+tasks for +pageTasks.message.confirmationMessageForSingleTaskObject=Do you really want to {0} task '{1}'? +pageTasks.message.confirmationMessageForMultipleTaskObject=Do you really want to {0} selected {1} task(s)? +pageTasks.message.confirmationMessageForSingleNodeObject=Do you really want to {0} node '{1}'? +pageTasks.message.confirmationMessageForMultipleNodeObject=Do you really want to {0} selected {1} node(s)? +pageTask.scheduleHelp=For one-time tasks, enter neither schedule interval nor cron-like specification. For recurring tasks, enter exactly one of these. +pageTask.scheduleInterval=Schedule interval (seconds) +pageTask.scheduleTitle=Scheduling +pageTask.scheduleValidation.bothIntervalAndCron='Schedule interval' and 'Cron-like specification' may not be both present. +pageTask.scheduleValidation.intervalNotPositive='Schedule interval' must be a positive number. +pageTask.scheduleValidation.invalidCronSpecification='Cron-like specification' is not valid. +pageTask.scheduleValidation.neitherIntervalNorCron=Exactly one of 'Schedule interval' and 'Cron-like specification' must be specified. +pageTask.scheduleValidation.noInterval='Schedule interval' must be specified. +pageTasks.dialog.title.confirmDelete=Confirm delete +pageTasks.inForNotRunningTasks=(in {0}) +pageTasks.in=in {0} +pageTasks.retryIn=retry in {0} +pageTasks.message.alreadyResumed=Task '{0}' can't be resumed, it's already running or closed. +pageTasks.message.alreadySuspended=Task '{0}' is already suspended or closed. +pageTasks.message.couldntCreateQuery=Couldn't create query for task list. +pageTasks.message.deleteTaskConfirm=Do you really want to delete task '{0}'? +pageTasks.message.deleteAllClosedTasksConfirm=Do you really want to delete all closed tasks? +pageTasks.message.deleteTasksConfirm=Do you really want to delete {0} tasks? +pageTasks.message.noNodeSelected=No node has been selected. +pageTasks.message.noTaskSelected=No task has been selected. +pageTasks.node.clustered=Clustered +pageTasks.node.executionStatus=Statut +pageTasks.node.lastCheckInTime=Last check-in time +pageTasks.node.managementPort=Management port +pageTasks.node.name=Nom +pageTasks.nodes=Nodes +pageTasks.node.statusMessage=Status message +pageTasks.nowForNotRunningTasks=(now) +pageTasks.now=now +pageTasks.runsContinually=runs continually +pageTasks.stalledSince=STALLED since {0} at {1} +pageTasks.state=Etat +pageTasks.subtasks=Show subtasks +pageTasks.task.category=Category +pageTasks.task.currentRunTime=Current run time +pageTasks.task.detail=Detail +pageTasks.task.executingAt=Executing at +pageTasks.task.execution=Exécution +pageTasks.task.name=Nom +pageTasks.task.objectRef=Object reference +pageTasks.task.progress=Progression +pageTasks.task.scheduledToRunAgain=Scheduled to start again +pageTasks.tasks=Tasks +pageTasks.task.status=Statut +PageTasks.title=Tasks +pageTasks.unknownRefName=Unknown object +pageTask.threadStop=Thread stop action +pageTask.title.edit=Details for '{0}' +pageTask.type=Type: +page.title.edit={0} +page.title.editResource=Éditer les ressources +pageUser.accounts=Compte +pageUser.assignment.active=Active +pageUser.assignment.name=Nom +pageUser.assignments=Affectations +pageAdminFocus.request=Request a role +pageAdminFocus.objectHistory=History +pageUser.assignment.type=Type +pageUser.button.abort=Abort +pageUser.button.addAccount=Add account +pageUser.button.back=Retour +pageUser.button.delete=Effacer +pageUser.button.disable=Disable +pageUser.button.enable=Enable +pageUser.button.recompute.assignments=Montrer toutes les attributions +pageUser.button.save=Enregistrer +pageUser.button.submit=Preview changes +pageUser.button.unlink=Délier +pageUser.button.unlock=Unlock +pageUser.description=User in repository +pageUser.menu.assignAccount=Assign account +pageUser.menu.assignOrg=Assign org. unit +pageUser.menu.assignRole=Assign role +pageUser.menu.unassign=Effacer l'assignation +pageUser.message.cantCreateUser=Create user failed +pageUser.message.cantEditUser=Couldn't load form for editing user. +pageUser.message.cantNewUser=Couldn't load form for new user. +pageUser.message.cantSubmitUser=Couldn't send user for submit +pageUser.message.cantUpdateUser=Update user failed +pageUser.message.couldntAssignObject=Impossible d'attribuer l'objet '{0}', raison: {1}. +pageUser.message.couldntCreateAccount=Couldn't create account form for '{0}', reason: {1}. +pageUser.message.couldntCreateAccountNoSchema=Couldn't create account form for '{0}', no refined schema available. Possible problem with connector configuration and/or connection. Please check logs for more information. +pageUser.message.deleteAccountConfirm=Do you really want to delete {0} account(s)? +pageUser.message.deleteAssignmentConfirm=Voulez-vous vraiment effacer {0} attribution(s)? +pageUser.message.deleteAssignmentRowConfirm=Do you really want to delete assignment {0}? +pageUser.message.illegalAccountState=Illegal account state '{0}'. +pageUser.message.illegalAssignmentState=État d'attribution invalide '{0}'. +pageUser.message.noAccountSelected=No account selected. +pageUser.message.noActivationFound=No activation found for account '{0}'. +pageUser.message.noAssignableSelected=No assignable object selected. +pageUser.message.noAssignmentsAvailable=There are currently no assignments to preview. +pageUser.message.noAssignmentSelected=Une affectation sélectionnée +pageUser.message.noEnabledPropertyFound=No enabled property found for account '{0}'. +pageUser.message.noPassword=Password is not entered. +pageUser.message.noResourceSelected=No resource selected. +pageUser.message.noUserName=It is not possible to compute assignments on unnamed user object. Please provide a name. +pageUser.message.unsupportedState=Unsupported user form state '{0}'. +pageUsers.accounts=Compte +pageUsers.dialog.title.confirmDelete=Confirm delete +pageUsers.menu.delete=Effacer +pageUsers.menu.merge=Merge +pageUsers.menu.disable=Disable +pageUsers.menu.enable=Enable +pageUsers.menu.reconcile=Reconcile +pageUsers.menu.unlock=Unlock +pageUsers.message.deleteUserConfirm=Do you really want to delete selected {0} user(s)? +pageUsers.message.deleteUserConfirmSingle=Do you really want to delete user '{0}'? +pageUsers.message.confirmationMessageForSingleObject=Do you really want to {0} user '{1}'? +pageUsers.message.confirmationMessageForMultipleObject=Do you really want to {0} selected {1} user(s)? +pageUsers.message.enableAction=enable +pageUsers.message.disableAction=disable +pageUsers.message.reconcileAction=reconcile +pageUsers.message.unlockAction=unlock +pageUsers.message.deleteAction=delete +pageUsers.message.confirmActionPopupTitle=Confirm action +pageUsers.message.nothingSelected=No user has been selected. +pageUsers.message.queryError=Error occurred during translation search query to filter. +PageUsers.title=User List +pageUser.task.category=Category +pageUser.task.execution=Execution state +pageUser.task.name=Task name +pageUser.tasks=Tasks +pageUser.task.status=Statut +pageUser.title.confirmDelete=Confirm delete +pageUser.title.editing={0} +pageUser.title.editUser=Éditer +pageUser.title.newUser=Créer +pageUser.title.selectAssignable=Sélectionnez un objet +pageUser.title.selectResource=Select resource(s) +pageUser.userDetails=User details + +PageCase.title=Case details +PageCaseWorkItem.title=Case work item details +pageCase.button.save=Enregistrer +pageCase.button.back=Retour +PageCaseWorkItemsAllocatedToMe.title=Cases allocated to me +PageCaseWorkItemsAll.title=All cases +PageCaseWorkItems.button.back=Retour +PageCaseWorkItems.button.createCase=Create Case +PageCaseWorkItem.caseDetails=Case details +PageCaseWorkItem.case.name=Nom +PageCaseWorkItem.case.description=Description +PageCaseWorkItem.case.resource=Ressource +PageCaseWorkItem.case.target=Cible +PageCaseWorkItem.case.event=Event +PageCaseWorkItem.case.outcome=Outcome +PageCaseWorkItem.case.openTimestamp=Open Timestamp +PageCaseWorkItem.case.closeTimestamp=Close Timestamp +PageCaseWorkItem.case.state=État +PageCaseWorkItem.caseWorkItem=Case work item +PageCaseWorkItem.caseWorkItem.name=Nom +PageCaseWorkItem.caseWorkItem.assignees=Actor(s) +PageCaseWorkItem.caseWorkItem.originalAssignee=Original Actor +PageCaseWorkItem.caseWorkItem.closeTimestamp=Close Timestamp +PageCaseWorkItem.caseWorkItem.deadline=Deadline +PageCaseWorkItem.caseWorkItem.outcome=Outcome +PageCaseWorkItem.caseWorkItem.comment=Comment +PageCaseWorkItem.caseWorkItem.evidence=Evidence +PageCaseWorkItem.button.closeCase=Close Case +pageCases.table.description=Description +pageCases.table.actors=Actors +pageCases.table.objectRef=Objet +pageCases.table.state=État +pageCases.table.openTimestamp=Opened +pageCases.table.closeTimestamp=Fermé +pageCases.button.delete=Effacer +PageCasesAllocatedToMe.title=My Cases +PageCasesAll.title=List Cases +MultipleAssignmentSelectorPanel.availableRoles=Available roles +MultipleAssignmentSelectorPanel.parameters=Parameters +MultipleAssignmentSelectorPanel.currentRoles=Current roles +MultipleAssignmentSelector.filterByUser=Filter by user +MultipleAssignmentSelector.tenant=Locataire +MultipleAssignmentSelector.orgUnit=Org. unit +pageValuePolicies.table.description=Description +pageValuePolicies.button.delete=Effacer +PageValuePolicies.title=List value policies +PageValuePolicy.title = Value policy +PageValuePolicy.button.back=Retour +PageValuePolicy.button.save=Enregistrer +PageValuePolicy.basic= Basic +pageWorkItem.accordionLabel.additionalData=Related data (technical information) +pageWorkItem.accordionLabel.objectNew=Object after proposed change (technical information) +pageWorkItem.accordionLabel.objectOld=Object before change (technical information) +pageWorkItem.accordionLabel.processInstance=Process instance information +pageWorkItem.accordionLabel.requester=Requester (technical information) +pageWorkItem.additionalData.description=Related data +pageWorkItem.additionalInfo=Supplementary information +pageWorkItem.button.approve=Approve +pageWorkItem.button.cancel=Retour +pageWorkItem.button.claim=Claim +pageWorkItem.button.reject=Reject +pageWorkItem.button.delegate=Déléguer +pageWorkItem.button.release=Release +pageWorkItem.delta=Delta to be approved +pageWorkItem.description=Work Item +pageWorkItem.label.showTechnicalInformation=Show technical information +pageWorkItem.mainInfo=Basic information +pageWorkItem.objectNew.description=Object after proposed change +pageWorkItem.objectOld.description=Object before change +pageWorkItem.options=Options +pageWorkItem.requestCommon.description=General information about the request +pageWorkItem.requestedBy=Requested by: +pageWorkItem.requestedOn=Requested on: +pageWorkItem.requester.description=Requester +pageWorkItem.requestSpecific.description=Your decision +workItemPanel.originallyAllocatedTo=Originally allocated to: +workItemPanel.currentlyAllocatedTo=Currently allocated to: +workItemPanel.candidateActors=Candidate actors: +workItemPanel.stage=Approval stage: +workItemPanel.escalationLevel=Escalation level: +workItemPanel.requesterComment=Requester comment: +workItemPanel.delta=Delta to be approved +workItemPanel.mainInfo=Basic information +workItemPanel.options=Options +workItemPanel.requestedBy=Requested by: +workItemPanel.requestedOn=Requested on: +workItemPanel.workItemCreatedOn=This work item created on: +workItemPanel.workItemDeadline=Deadline: +workItemPanel.requester.description=Requester +workItemPanel.subTitle=work item details +workItemPanel.title=Work to do: +workItemPanel.changesToBeApproved=Changes to be approved +workItemPanel.additionalAttributes=Additional attributes +workItemPanel.approvalHistory=Approval history for this request +workItemPanel.approvalHistoryHelp=Decisions that have been done so far in the process of approving the changes displayed here. +TaskWfChildPanel.approvalHistoryHelp=Decisions that have been done so far in the process of approving the changes displayed here. +workItemPanel.otherWorkItemsHelp=Work items for the changes shown here that are currently active (in addition to the work item displayed on this page). +TaskWfChildPanel.currentWorkItemsHelp=Work items for the changes displayed here that are currently active. +TaskWfChildPanel.showNextStagesHelp=Displays the preview of the following approval stages. +TaskWfChildPanel.nextStagesHelp=This is a preview of the following approval stages. +TaskWfChildPanel.showWholeProcessHelp=Displays the whole approval process: stages already completed, current stage, as well as any expected following stages. +TaskWfChildPanel.wholeProcessHelp=This is an information on the whole approval process: stages already completed, current stage, as well as any expected following stages. +workItemPanel.relatedRequestsHelp=List of approval requests that have been created along with this one. Each request has its own approval process, and therefore can be approved or rejected independently of other ones. They were all started by a single change operation attempt, which contained several simpler changes. +TaskWfChildPanel.relatedRequestsHelp=List of approval requests that have been created along with this one. Each request has its own approval process, and therefore can be approved or rejected independently of other ones. They were all started by a single change operation attempt, which contained several simpler changes. +workItemPanel.showRequestHelp=Displays the approval request and the corresponding approval process for changes shown here. +TaskWfChildPanel.showParentHelp=Displays the whole attempted operation that consists of one or more changes requiring approval. +TaskWfParentPanel.requestsHelp=All approval processes for changes displayed here. +workItemPanel.otherWorkItems=Other work items for this request +workItemPanel.requests=Requests +workItemPanel.relatedRequests=Related requests +workItemPanel.reasons=Reasons for the approval process +workItemPanel.approverComment=Approver comment +workItemPanel.approverInstruction=Approver instruction +pageWorkItems.button.back=Retour +pageWorkItems.button.approve=Approve +pageWorkItems.button.claim=Claim +pageWorkItems.button.reject=Reject +pageWorkItems.button.release=Release +PageWorkItemsClaimable.title=Work items claimable by me +pageWorkItems.item.created=Created on +pageWorkItems.item.name=Nom +pageWorkItems.item.owner=Propriétaire +pageWorkItems.item.status=Statut +pageWorkItems.message.noItemSelected=No work item has been selected. +pageWorkItems.message.noItemToBeReleased=None of the work items can be released (most probably because they were not claimed by the user). +pageWorkItems.message.success.approved=The work item(s) have been successfully approved. +pageWorkItems.message.success.rejected=The work item(s) have been successfully rejected. +pageWorkItems.message.success.claimed=The work item(s) have been successfully claimed. +pageWorkItems.message.success.released={0} work item(s) have been successfully released. +PageWorkItemsAll.title=All work items +PageWorkItemsAllocatedToMe.title=Work items allocated to me +PageWorkItem.title=Work item details +PageWorkItem.subTitle=work item details +pageWorkItem.title=Work to do: +pageWorkItem.trackingData.description=Tracking (diagnostic) data +pageWorkItem.trackingData=Tracking data +pageWorkItem.workItemCreatedOn=This work item created on: +passwordPanel.error=Passwords don't match. +passwordPanel.passwordChange=Change +passwordPanel.passwordRemove=Remove +passwordPanel.passwordSet=password is set +passwordPanel.passwordRemoveLabel=password will be removed +past.ChangeType.ADD=Added +past.ChangeType.DELETE=Effacé +past.ChangeType.MODIFY=Modified +PersonalInfoPanel.lastFail.date=Date +PersonalInfoPanel.lastFail.from=De +PersonalInfoPanel.lastFail=Last unsuccessful login +PersonalInfoPanel.lastLogin.date=Date +PersonalInfoPanel.lastLogin.from=De +PersonalInfoPanel.lastLogin=Last login +PersonalInfoPanel.never=Never +PersonalInfoPanel.other=Other +PersonalInfoPanel.passwordExp=Account expiration date +PersonalInfoPanel.undefined=Not defined +policyRef.nullValid=Choisir un +prismContainer.mainPanelDisplayName=Propriétés +prismContainer.shadow.associations=Associations +prismContainer.shadow.mainPanelDisplayName=Attributs +PrismObjectPanel.hideEmpty=Hide empty fields +PrismObjectPanel.maximize=Maximize +PrismObjectPanel.minimize=Minimize +PrismObjectPanel.protectedAccount=Protected account +PrismObjectPanel.showEmpty=Show empty fields +PrismObjectPanel.sortProperties=Sort properties +PrismObjectPanel.addChildContainer=Add child container +PrismObjectPanel.deleteContainer=Remove container value +PrismObjectPanel.showMetadata=Show metadata +PrismObjectPanel.hideMetadata=Hide metadata +prismOptionButtonPanel.hideEmpty=Hide empty fields +prismOptionButtonPanel.maximize=Maximize +prismOptionButtonPanel.minimize=Minimize +prismOptionButtonPanel.showEmpty=Show empty fields +prismPropertyPanel.hasOutbound=Has outbound mapping +prismPropertyPanel.hasPendingModification=Has pending modification +prismPropertyPanel.name.credentials.password=Mot de passe +prismPropertyPanel.required=Champ obligatoire +prismValuePanel.add=Ajouter +prismValuePanel.delete=Effacer +prismValuePanel.message.association.attributes=Attributes: +processInstancePanel.details=Other information: +processInstancePanel.finished=Finished: +processInstancePanel.message.cantGetDetails=Couldn't get process instance details. +processInstancePanel.message.noTasks=none +processInstancePanel.name=Process instance name: +processInstancePanel.pid=Instance ID: +processInstancePanel.started=Started: +processInstancePanel.taskAlreadyRemoved=(was already removed) +processInstancePanel.task=System task: +processInstancePanel.tasks=Currently active work items: +processInstancePanel.title.edit=Details for '{0}' +ProfilingLevel.ARGUMENTS=Arguments +ProfilingLevel.ENTRY_EXIT=Entry/Exit +ProfilingLevel.OFF=Off +ProgressPanel.ExecutionTimeWhenFinished=Operation executed in {0} milliseconds. +ProgressPanel.ExecutionTimeWhenRunning=Operation executing for {0} second(s). +ProgressPanel.abortRequested=Abort requested, please wait... +ProgressPanel.abortRequestedFinished=Abort requested, but the execution seems to be already finished. +ProgressPanel.abortRequestedNoInterrupt=Abort requested, please wait... (note: couldn't interrupt the thread) +ProgressTableHeader.Activity=Activity +ProgressTableHeader.ResourceObject=Resource object (if applicable) +ProgressTableHeader.Status=Statut +ProvisioningStatistics.AverageTime=Avg time +ProvisioningStatistics.CreateFailure=Fail +ProvisioningStatistics.CreateSuccess=Create OK +ProvisioningStatistics.DeleteFailure=Fail +ProvisioningStatistics.DeleteSuccess=Delete OK +ProvisioningStatistics.GetFailure=Fail +ProvisioningStatistics.GetSuccess=Get OK +ProvisioningStatistics.MaxTime=Max +ProvisioningStatistics.MinTime=Min +ProvisioningStatistics.ObjectClass=Object class +ProvisioningStatistics.OtherFailure=Fail +ProvisioningStatistics.OtherSuccess=Script OK +ProvisioningStatistics.Resource=Ressource +ProvisioningStatistics.ScriptFailure=Fail +ProvisioningStatistics.ScriptSuccess=Script OK +ProvisioningStatistics.SearchFailure=Fail +ProvisioningStatistics.SearchSuccess=Search OK +ProvisioningStatistics.SyncFailure=Fail +ProvisioningStatistics.SyncSuccess=Sync OK +ProvisioningStatistics.TotalOperationsCount=All operations +ProvisioningStatistics.TotalTime=Total time +ProvisioningStatistics.UpdateFailure=Fail +ProvisioningStatistics.UpdateSuccess=Update OK +QNameEditor.label.localPart=Local part name +QNameEditor.label.namespace=Namespace +QNameEditor.tooltip.attribute=TODO: QNameEditor.tooltip.attribute +QNameEditor.tooltip.localPart=Local part of QName +QNameEditor.tooltip.namespace=Namespace of QName +RangeValidator.range=Field '${label}' have to be between ${minimum} and ${maximum}. +ReconciliationPopupPanel.exportFileType=Export Type +DownloadButtonPanel.download=Download +ReconciliationPopupPanel.resource=Ressource +ReconciliationPopupPanel.title.basic=Basic Reconciliation Report Configuration +repeater.input.nullValid=Choisir un +ReportConfigurationPanel.title.basic=Basic +ReportConfigurationPanel.title.advanced=Advanced +Requestable.ALL=Tout +Requestable.NON_REQUESTABLE=Non-Requestable +Requestable.REQUESTABLE=Requestable +ResourceActivationEditor.label.administrativeStatus=Statut administratif +ResourceActivationEditor.label=Edit resource activation +ResourceActivationEditor.label.existence=Existence +ResourceActivationEditor.label.fetchStrategy=Fetch strategy +ResourceActivationEditor.label.inbound=Inbound +ResourceActivationEditor.label.outbound=Outbound +ResourceActivationEditor.label.validFrom=Valide à partir du +ResourceActivationEditor.label.validTo=Valide jusqu'au +ResourceAssociationEditor.label.allow=Non-schema ref. +ResourceAssociationEditor.label.association=Association specific attributes +ResourceAssociationEditor.label.associationAttribute=Association attribute +ResourceAssociationEditor.label.description=Description +ResourceAssociationEditor.label.direction=Direction +ResourceAssociationEditor.label.displayName=Affichage du nom +ResourceAssociationEditor.label.edit=Edit association +ResourceAssociationEditor.label.exclusiveStrong=Exclusive strong +ResourceAssociationEditor.label.explicitRefIntegrity=Explicit ref. integrity +ResourceAssociationEditor.label.fetchStrategy=Fetch strategy +ResourceAssociationEditor.label.inbound=Inbound mapping +ResourceAssociationEditor.label.intent=Target intent +ResourceAssociationEditor.label.intolerantVP=Intolerant pattern +ResourceAssociationEditor.label.kind=Target kind +ResourceAssociationEditor.label.limitations=Limitations +ResourceAssociationEditor.label.matchingRule=Matching rule +ResourceAssociationEditor.label.new=Create new association +ResourceAssociationEditor.label.outbound=Outbound mapping +ResourceAssociationEditor.label.reference=Ref. +ResourceAssociationEditor.label.resourceItem=ResourceItem specific attributes +ResourceAssociationEditor.label.tolerant=Tolerant +ResourceAssociationEditor.label.tolerantVP=Tolerant pattern +ResourceAssociationEditor.label.valueAttribute=Value attribute +ResourceAssociationEditor.message.cantParseSchema=Couldn't parse resource schema +ResourceAttributeEditor.label.allow=Non-schema attribute +ResourceAttributeEditor.label.description=Description +ResourceAttributeEditor.label.displayName=Affichage du nom +ResourceAttributeEditor.label.edit=Edit attribute +ResourceAttributeEditor.label.exclusiveStrong=Exclusive strong +ResourceAttributeEditor.label.fetchStrategy=Fetch Strategy +ResourceAttributeEditor.label.inbound=Inbound mappings +ResourceAttributeEditor.label.intolerantVP=Intolerant pattern +ResourceAttributeEditor.label.limitations=Limitations +ResourceAttributeEditor.label.matchingRule=Matching rule +ResourceAttributeEditor.label.unknownMatchingRule=Unknown matching rule: {0} +ResourceAttributeEditor.label.new=Create new attribute +ResourceAttributeEditor.label.outbound=Outbound mappings +ResourceAttributeEditor.label.reference=Attribute +ResourceAttributeEditor.label.tolerant=Tolerant +ResourceAttributeEditor.label.tolerantVP=Tolerant pattern +ResourceAttributeEditor.message.cantParseSchema=Couldn't parse resource schema +ResourceAttributeEditor.title.delete=Effacer +ResourceAttributeEditor.title.edit=Éditer +ResourceCredentialsEditor.label=Edit Resource Credentials +ResourceCredentialsEditor.label.fetchStrategy=Fetch strategy +ResourceCredentialsEditor.label.inbound=Inbound +ResourceCredentialsEditor.label.outbound=Outbound +ResourceCredentialsEditor.label.passwordPolicyRef=Password policy +ResourceDependencyEditor.label.button.add=Add resource dependency +ResourceDependencyEditor.label=Edit Dependencies +ResourceDependencyEditor.label.intent=Dependency intent +ResourceDependencyEditor.label.kind=Dependency kind +ResourceDependencyEditor.label.order=Ordre +ResourceDependencyEditor.label.resourceRef=Dependency resource +ResourceDependencyEditor.label.strictness=Strictness +ResourceIterationEditor.label.description=Description +ResourceIterationEditor.label=Edit resource iteration configuration +ResourceIterationEditor.label.expressionEvaluator=Expression evaluator +ResourceIterationEditor.label.expression=Expression +ResourceIterationEditor.label.expressionType=Expression type +ResourceIterationEditor.label.extension=Extension +ResourceIterationEditor.label.language=Language +ResourceIterationEditor.label.maxIteration=Max iteration +ResourceIterationEditor.label.policyRef=Policy ref. +ResourceIterationEditor.label.postIterationCondition=Post-iteration condition +ResourceIterationEditor.label.preIterationCondition=Pre-iteration condition +ResourceIterationEditor.label.returnMultiplicity=Return multiplicity +ResourceIterationEditor.label.stringFilter=String filter +ResourceIterationEditor.label.tokenExpression=Token expression +ResourceIterationEditor.label.variable=Variable +resource.nullValid=Choose resource... +resourcePopup.bundle=Bundle +resourcePopup.button.add=Add resource(s) +resourcePopup.name=Nom +resourcePopup.version=Version +ResourceProtectedEditor.button.add=Add protected account +ResourceProtectedEditor.label.description=Description +ResourceProtectedEditor.label=Edit protected accounts +ResourceProtectedEditor.label.filterClause=Filter clause +ResourceProtectedEditor.label.filter=Filter +ResourceProtectedEditor.label.name=Nom +ResourceProtectedEditor.label.uid=Uid +ResourceStatus.DOWN=Down +ResourceStatus.ERROR=Erreur +ResourceStatus.NOT_TESTED=Not tested +ResourceStatus.SUCCESS=Réussi +ResourceStatus.UP=Up +ResourceStatus.WARNING=Alerte +ResourceType.isSync=Synchronisation +ResourceType.tasks=Tasks +ResourceWizard.expression.tooltip.expression=The XML representation of the expression. This is the actual expression code that will be interpreted. +ResourceWizard.expression.tooltip.language=Programming language in which is the expression script written. +ResourceWizard.expression.tooltip.policyRef=Reference to a value policy object. The specified value policy will be used as a template to generate a value. +ResourceWizard.expression.tooltip.type=The type of expression. This specifies whether the expression is a script, value generator or something else. +ResourceWizard.help.capabilityStep=

Resource capabilities are the things that the resource can do. Not all the resource are equal in their capabilities. E.g. one resource supports account activation (enabling and disabling accounts) but other does not. One resource provides read-write access while other can support read-only access. One resource supports real-time synchronization while other does not. The capabilities define what features the resource supports so system can behave accordingly.

All the capabilities can be disabled (i.e. turned off). Disabling the capability will cause that system will not use that part of the connector and resource. The capabilities are usually disabled if they are faulty. E.g. if there is a bug in a connector or on the resource then the bug might be circumvented if appropriate capability is disabled. But the capabilities may be disabled also for administrative reasons. E.g. disabling Create, Update and Delete capabilities makes the resource efficiently read-only.

Some capabilities can be simulated. It means that system can pretend that the resource has specific capability even though it does not have it. E.g. an activation capability can be simulated by setting a specific account attribute to a specific value to disable an account. Such simulated capabilities usually require some configuration. This can also be configured on this page.

See Resource Capabilities wiki page for more details.

+ResourceWizard.help.configurationStep=

This stage of the wizard configures connector configuration properties. They usually define network parameters used to access the resource such as hostname and port numbers. Additional connection parameters such as operation network timeouts and connection pooling configuration can be specified here.

The connector configuration properties are unique for each connector. The specific set of configuration properties are determined by connector configuration schema. Therefore the content of this page depends on the connector type that was selected in the previous page.

+ResourceWizard.help.nameStep=

This stage of the wizard configures basic properties of the resource. It can be used to configure resource name and description. Connector name is mandatory and must be unique. Connector that will be used to access the resource must also be configured. Connectors are deployed on connector hosts. If the connector host is left empty then connectors deployed directly in the system instance will be used.

See Resource Configuration wiki page for detailed explanation of resource configuration.

+ResourceWizard.help.schemaHandlingStep=

This step is used to provide configuration for handling of resource schema. The configuration displayed on this page tells system what to do with resource object classes and attributes. It contains the configuration of mappings between user properties and account attributes, configuration of account types, groups, provisioning dependencies, password mapping and so on.

The configuration is grouped into object types. Each object type defines the behavior for specific account type, entitlement type, OU, etc. The object type is uniquely identified by the combination of kind and intent. The kind defines what kind of the object it is:

  • kind=account means that the object is an account, i.e. that it represents a user.
  • kind=entitlement is applied to groups, roles, privileges, ACIs and similar objects that can be associated with accounts and which give privileges or access rights to the account.
  • kind=generic applies to other objects such as organizational units (OUs), domains, etc.
Intent is a plain string that can be used to distinguish several object types. E.g. it can be used to define several account types, e.g. "default user account", "administration account", "testing account" and so on. See Kind, Intent and ObjectClass wiki page for more details.

More details about schema handling configuration are provided on Resource Schema Handling wiki page. +ResourceWizard.help.schemaStep=

This page shows resource schema. The resource schema defines object classes that the connector can manage, e.g. accounts, groups, organizational units and so on. The schema defines a set of attributes for each object class. The schema is presented here in read-only form so you can inspect it and familiarize yourself with the data model that the resource provides.

The resource schema presented at this page is usually retrieved from the resource and automatically generated by system. Resource schema defines what the resource can do, i.e. what object classes it defines and what attributes are used in the object classes. Therefore the schema is read-only. It is not a configuration. It does not defines how system uses the object classes and attributes. That is configured in next steps of the wizard.

See Resource Schema wiki page for detailed explanation of resource schema concepts

+ResourceWizard.help.synchronizationStep=

The synchronization configuration defines how Identity Manager reacts when it discovers that resource object has changed. E.g. it defines how system reacts when it discovers new account, when it discovers that a group that should exist does not and so on. It is usually does not matter how system discovers the change the reaction is usually the same (although exceptions are possible by using channel specification). Therefore the policy that is configured here usually applies to live synchronization, reconciliation, import, discovery (consistency mechanism) and possible also other mechanisms that may come in the future.

See Synchronization Configuration wiki page for more details. +ResourceWizard.saveAndVisualize=Save and visualize +ResourceWizard.visualize=Visualize +runReportPopupContent.button.run=Run report +runReportPopupContent.param.class=Parameter type +runReportPopupContent.param.name.eventStage = Event Stage +runReportPopupContent.param.name.eventType = Type d'événement +runReportPopupContent.param.name.from = Date From +runReportPopupContent.param.name.initiatorName = Initiator Name +runReportPopupContent.param.name.outcome = Outcome +runReportPopupContent.param.name=Parameter name +runReportPopupContent.param.name.targetName = Target Name +runReportPopupContent.param.name.filter=Filter resulting roles? true/false (default is false) +runReportPopupContent.param.name.to = Date To +runReportPopupContent.param.value=Parameter value +runReportPopupContent.param.name.alsoClosedCampaigns=Also closed campaigns? (default is false) +runReportPopupContent.param.name.campaignName=Campaign name +runReportPopupContent.param.name.resource=Ressource +runReportPopupContent.param.name.intent=Objectif +runReportPopupContent.param.name.objectClass=Object name +runReportPopupContent.param.name.kind=Sorte +runReportPopupContent.param.name.situation=Situation +runReportPopupContent.param.name.activation=Activation +runReportPopupContent.param.name.organization=Organisation +runReportPopupContent.param.name.role=Role +runReportPopupContent.param.name.roleOids=Roles +runReportPopupContent.param.name.users=Users +runReportPopupContent.param.name.stageNumber=Stage number (default is to take all stages) +runReportPopupContent.param.name.referencedRolesNames=Referenced Roles +RunReportPopupPanel.title=Report configuration before run +runUntilNodeDown.error1=Compatible data for 'Thread stop action' are: Close, Suspend +runUntilNodeDown.error2=Compatible data for 'Thread stop action' are: Restart, Reschedule +SchemaHandlingStep.activation.tooltip.fetchStrategy=How to fetch the attribute when it is needed. Implicit: the attribute is returned by default, it does not need to be requested; Explicit: the attribute is not returned by default, always request it explicitly. +SchemaHandlingStep.activation.tooltip.inbound=Inbound mappings map values from the resource (usually an account) to the Identity Manager (usually a user). +SchemaHandlingStep.activation.tooltip.outbound=Outbound mappings map values from Identity Manager (usually a user) to the resource (usually an account). +SchemaHandlingStep.association.label.associationName=Association name +SchemaHandlingStep.association.label.associationNamespace=Namespace +SchemaHandlingStep.association.tooltip.associationAttribute=Name of the attribute that "holds" the association. I.e. an attribute which contains the identifier of the associated object. This is usually an attribute such as "member", "groups", "roles", etc. In subject-to-object associations this is an attribute of a subject (e.g. account attribute "groups"). In object-to-subject associations this is an attribute of an object (e.g. group attribute "members"). +SchemaHandlingStep.association.tooltip.associationLocalPart=TODO: SchemaHandlingStep.association.tooltip.associationLocalPart +SchemaHandlingStep.association.tooltip.associationNamespace=TODO: SchemaHandlingStep.association.tooltip.associationNamespace +SchemaHandlingStep.association.tooltip.direction=Defines the direction of the association. Object-to-subject: Object (e.g. group) has an attribute that contains identifier of the subject (e.g. account); Subject-to-object: Subject (e.g. account) has an attribute that contains identifier of the object (e.g. group). +SchemaHandlingStep.association.tooltip.explicitRefIntegrity=Explicit referential integrity. If set to false then system assumes that the resource implements referential integrity. E.g. system assumes that the resource automatically updates the association identifiers if an account is renamed and system does not need to do anything. If set to true then system will do referential integrity explicitly. In this case system will explicitly update the association attributes if an account is renamed. +SchemaHandlingStep.association.tooltip.intent=Intent of the association target object type. Target kind and intent identify an object type which is association target, e.g. a group, privilege, role, etc. +SchemaHandlingStep.association.tooltip.kind=Kind of the association target object type. This is usually "entitlement". Target kind and intent identify an object type which is association target, e.g. a group, privilege, role, etc. +SchemaHandlingStep.association.tooltip.valueAttribute=Name of the attribute that is the source of a value for the association. The value of this attribute will be taken and stored into the association attribute to form an association. This is usually an attribute that contains an identifier or name such as "uid", "id", "name", etc. In subject-to-object associations this is an attribute of an object (e.g. group). In object-to-subject associations this is an attribute of a subject (e.g. account). +SchemaHandlingStep.attribute.label.attributeName=Nom d'attribut +SchemaHandlingStep.attribute.label.attributeNamespace=Attribute namespace +SchemaHandlingStep.attribute.tooltip.allow=If checked allows to specify an attribute which is not in the original resource schema. This can be used to fix faulty connectors that do not provide a complete resource schema, which hides some attributes, etc. +SchemaHandlingStep.attribute.tooltip.attributeLocalPart=TODO: SchemaHandlingStep.attribute.tooltip.attributeLocalPart +SchemaHandlingStep.attribute.tooltip.attributeNamespace=TODO: SchemaHandlingStep.attribute.tooltip.attributeNamespace +SchemaHandlingStep.attribute.tooltip.exclusiveStrong=When set to false then both strong and normal mapping values are merged to produce the final set of values. When set to true only strong values are used if there is at least one strong mapping. Normal values are used if there is no strong mapping. +SchemaHandlingStep.attribute.tooltip.fetchStrategy=How to fetch the attribute when it is needed. Implicit: the attribute is returned by default, it does not need to be requested; Explicit: the attribute is not returned by default, always request it explicitly. +SchemaHandlingStep.attribute.tooltip.inbound=Inbound mappings map values from the resource (usually an account) to the system (usually a user). +SchemaHandlingStep.attribute.tooltip.intolerantVP=A value that matches this pattern will NOT be tolerated. I.e. it will be erased from the attribute value even if it is not a result of system processing (mappings). +SchemaHandlingStep.attribute.tooltip.limitations=Specify attribute limitations such as multiplicity, ability to read or write it, etc. +SchemaHandlingStep.attribute.tooltip.matchingRule=A rule that determines if two attribute values have the same meaning. E.g. setting this to 'stringIgnoreCase' will make this attribute efficiently case insensitive. +SchemaHandlingStep.attribute.tooltip.outbound=Outbound mappings map values from system (usually a user) to the resource (usually an account). +SchemaHandlingStep.attribute.tooltip.reference=Name of the attribute to configure. All the settings and mappings below apply to this attribute. +SchemaHandlingStep.attribute.tooltip.tolerant=Tolerant attributes tolerate values that are set outside of system. Non-tolerant attributes will only allow values that are defined in system (e.g. by resource or role mappings). +SchemaHandlingStep.attribute.tooltip.tolerantVP=A value that matches this pattern will be tolerated. I.e. it will remain as the attribute value even if it is not a result of system processing (mappings). +SchemaHandlingStep.button.add=Add object type +SchemaHandlingStep.credentials.tooltip.fetchStrategy=How to fetch the credentials value when it is needed. Implicit: the value is returned by default, it does not need to be requested; Explicit: the value is not returned by default, always request it explicitly. +SchemaHandlingStep.credentials.tooltip.inbound=Inbound mappings map values from the resource (usually an account) to the system (usually a user). +SchemaHandlingStep.credentials.tooltip.outbound=Outbound mappings map values from system (usually a user) to the resource (usually an account). +SchemaHandlingStep.credentials.tooltip.passwordPolicyRef=Password policy to apply to this credential. This setting overrides other settings, e.g. default password policy defined in system configuration. If no password policy is defined here then the usual default will be used. +SchemaHandlingStep.dependency.tooltip.intent=Intent of the object on which we depend. +SchemaHandlingStep.dependency.tooltip.kind=Kind of the object on which we depend. +SchemaHandlingStep.dependency.tooltip.order=Normally zero. Can specify an integer that determines the ordering of dependencies that form a cycle and could not be otherwise be resolved (a.k.a. high-order dependencies). +SchemaHandlingStep.dependency.tooltip.resourceRef=Resource on which we depend. +SchemaHandlingStep.dependency.tooltip.strictness=Specifies how strictly will be the dependency resolved. Lax: if the dependency is not there continue as normal (only used to impose operation ordering); Relaxed: refuse to do operation unless the dependency is tried first, but if that fails then continue anyway; Strict: proceed only is the dependency is tried first and it succeeds. +SchemaHandlingStep.iteration.tooltip.maxIteration=Maximum number of iterations to try. The operation will end with a failure if the maximum number of iterations is tried without any success. +SchemaHandlingStep.iteration.tooltip.returnMultiplicity=TODO: SchemaHandlingStep.iteration.tooltip.returnMultiplicity +SchemaHandlingStep.iteration.tooltip.variable=TODO: SchemaHandlingStep.iteration.tooltip.variable +SchemaHandlingStep.label.activation=Activation +SchemaHandlingStep.label.assignmentPolicyRef=Assignment policy +SchemaHandlingStep.label.associations=Associations +SchemaHandlingStep.label.attributes=Attributs +SchemaHandlingStep.label.credentials=Certificat +SchemaHandlingStep.label.default=Default +SchemaHandlingStep.label.dependency=Dependencies +SchemaHandlingStep.label.description=Description +SchemaHandlingStep.label.displayName=Affichage du nom +SchemaHandlingStep.label.intent=Objectif +SchemaHandlingStep.label.iteration=Iteration +SchemaHandlingStep.label.kind=Sorte +SchemaHandlingStep.label.newObjectType=New object type +SchemaHandlingStep.label.objectClass=Object class +SchemaHandlingStep.label.objectTypes=Object types +SchemaHandlingStep.label.protected=Protégé +SchemaHandlingStep.limitations.tooltip.ignore=Flag to ignore an attribute. System will pretend that the ignored attribute does not exist at all. It will not display it in the user interface, will not apply mappings, etc. +SchemaHandlingStep.limitations.tooltip.layers=System layers to which this limitation applies. Sometimes the limitation does not apply equally to all the layers. E.g. the attribute may be formally read-write but we want it to be only presented as read-only by the user interface and change it only through mappings. In such a case the read-only limitation applies only to "presentation" layer. +SchemaHandlingStep.limitations.tooltip.maxOccurs=Maximum number of occurrences of the attribute. A value of one means single-value attribute, value of "unbounded" means multi-value attribute. A value which is specified here overrides the value taken from resource schema. +SchemaHandlingStep.limitations.tooltip.minOccurs=Minimum number of occurrences of the attribute. A value of zero means optional attribute, value of one means mandatory attribute. A value which is specified here overrides the value taken from resource schema. +SchemaHandlingStep.limitations.tooltip.other=TODO: REMOVE THIS TOOLTIP +SchemaHandlingStep.limitations.tooltip.propertyAccess=The type of access which is allowed or denied. +SchemaHandlingStep.mapping.tooltip.authoritative=Authoritative mappings both add and remove specified value. Non-authoritative mappings only add the value. E.g. if a role with an authoritative mapping is removed the value that the mapping implied is also removed. If a role with non-authoritative mapping is removed then the value remains. +SchemaHandlingStep.mapping.tooltip.channel=Limits application of this mapping only to specific channel. E.g. to changes coming from live sync, reconciliation or GUI. If the channel is listed then the mapping will be applied. If it is not then it will not be applied. If no channel is specified then no limitations apply and the mapping will be applied for all channels. +SchemaHandlingStep.mapping.tooltip.conditionLanguage=Programming language in which is the condition script written. +SchemaHandlingStep.mapping.tooltip.condition=The XML representation of mapping condition. This is the actual expression code that will be interpreted. Mapping sources are provided as input variables for the condition. If the condition returns true then the mapping will be applied. If it returns false then the mapping is ignored. Note that mappings that were true and that become false may result in removal of a value that was the result of the mapping while it was still true. +SchemaHandlingStep.mapping.tooltip.conditionType=Type of the expression that will be used for the mapping condition. +SchemaHandlingStep.mapping.tooltip.conditionValuePolicyRef=Reference to a value policy object. The specified value policy will be used as a template to generate a value. If no value policy reference is specified then a default policy is determined automatically. E.g. appropriate password policy applicable to the mapping target will be used. +SchemaHandlingStep.mapping.tooltip.exceptChannel=Limits application of this mapping to all channels except the specified channel. E.g. all the changes except those coming from live sync, reconciliation or GUI. If the channel is listed then the mapping will be not applied in this channel. If it is not then it will be applied. If no channel is specified then no limitations apply and the mapping will be applied for all channels. +SchemaHandlingStep.mapping.tooltip.exclusive=Exclusive mapping can be the only mapping that produces a value for a specific target. E.g. if another mapping produces a value for the same attribute then it ends up with an error. +SchemaHandlingStep.mapping.tooltip.expressionLanguage=Programming language in which is the expression script written. +SchemaHandlingStep.mapping.tooltip.expression=The XML representation of the expression. This is the actual expression code that will be interpreted. Mapping sources are provided as input variables for the expression. Expression return value is applied to mapping target. +SchemaHandlingStep.mapping.tooltip.expressionType=The type of expression used in this mapping. If no expression is specified the "asIs" expression will be used. +SchemaHandlingStep.mapping.tooltip.expressionValuePolicyRef=Reference to a value policy object. The specified value policy will be used as a template to generate a value. If no value policy reference is specified then a default policy is determined automatically. E.g. appropriate password policy applicable to the mapping target will be used. +SchemaHandlingStep.mapping.tooltip.source=Mapping source. Mapping will react to changes in its sources. The values of the sources are input parameters to the expression inside the mapping. +SchemaHandlingStep.mapping.tooltip.strength=The strength with which the mapping is applied. Weak mappings are only applied if there is no value in the target yet. Normal mappings are applied only if the source has been changed. Strong mappings are applied always. +SchemaHandlingStep.mapping.tooltip.target=Mapping target. The value that the mapping produces will be applied to the mapping target. +SchemaHandlingStep.message.errorLoadingObjectTypeList=Couldn't load object class list from resource. Error: +SchemaHandlingStep.message.saveError=Couldn't save schema handling, {0} +SchemaHandlingStep.message.selectObjectClassAss=Please provide 'Object class' attribute before creating resource association. +SchemaHandlingStep.message.selectObjectClassAttr=Please provide 'Object class' attribute before creating resource attribute. +SchemaHandlingStep.message.validationError=Inserted objectClass value: '{0}' is not valid. Please provide valid objectClass value. +SchemaHandlingStep.protected.tooltip.filter=TODO: SchemaHandlingStep.protected.tooltip.filter +SchemaHandlingStep.protected.tooltip.name=TODO: SchemaHandlingStep.protected.tooltip.name +SchemaHandlingStep.protected.tooltip.uid=TODO: SchemaHandlingStep.protected.tooltip.uid +SchemaHandlingStep.title=Schema handling +SchemaHandlingStep.tooltip.activation=Definition how to map activation states (enabled/disabled/archived) and dates (validity from and to). +SchemaHandlingStep.tooltip.assignmentPolicyRef=Assignment policy specifies how strictly are the assignments enforced. None: the assignments are not enforced at all; Positive: assignments only add values (never substract); Relative: only changes are propagated, existing values are left as they are; Full: everything is strictly enforced (both changed and existing values). +SchemaHandlingStep.tooltip.associations=Definitions how entitlement associations are to be handled. +SchemaHandlingStep.tooltip.attributes=Definitions how individual attributes are to be handled. Each definition may contain inbound/outbound mappings, attribute limitations, etc. +SchemaHandlingStep.tooltip.credentials=Definition how to handle credentials such as passwords. +SchemaHandlingStep.tooltip.default=If set to true then this definition is the default for its kind. I.e. if no intent is explicitly specified then this definition will be used. +SchemaHandlingStep.tooltip.dependency=Dependencies are object types that has to be processed before this object types is processed. I.e. this object type depends on them. The object types on which this object type depends will be provisioned before this object type. Dependencies are used to impose ordering into provisioning operations. +SchemaHandlingStep.tooltip.filterClause=TODO: SchemaHandlingStep.tooltip.filterClause +SchemaHandlingStep.tooltip.intent=Intent specifies what system should do with the object. Intent sorts objects of the same kind into several categories. Objects with different intents may be handled differently by system. +SchemaHandlingStep.tooltip.iteration=Iteratively find values for unique attributes such as identifiers. Identity Manager will try several times to find a unique value for such attributes. +SchemaHandlingStep.tooltip.kind=Kind specified what this object is, whether it is account, entitlement or something else. +SchemaHandlingStep.tooltip.objectClass=Object class from the schema that will be used to construct instances of this object type. +SchemaHandlingStep.tooltip.protected=Specification of protected instances of this object type. System can see protected instances but they cannot be touched. Any attempt to modify them will fail. This is used to protect emergency administration accounts such as "root" or "administrator". +SchemaHandlingStep.duplicateObjectTypeWarning=There are more definitions for kind/intent: {0}. +SchemaHandlingStep.in=in: {0} +SchemaHandlingStep.out=out +SchemaHandlingStep.dup=DUP {0} +SchemaListPanel.attributes=Attributs +SchemaListPanel.details.default=Default +SchemaListPanel.details.description=Description +SchemaListPanel.details=Détails +SchemaListPanel.details.displayName=Affichage du nom +SchemaListPanel.details.intent=Objectif +SchemaListPanel.details.kind=Sorte +SchemaListPanel.details.nativeObjectClass=Native obj. class +SchemaListPanel.displayName=Affichage du nom +SchemaListPanel.displayOrder=Ordre +SchemaListPanel.message.couldntParseSchema=Couldn't parse resource schema +SchemaListPanel.minMax=Min/max occurs +SchemaListPanel.name=Nom +SchemaListPanel.nativeAttributeName=Native attribute name +SchemaListPanel.objectClasses=Object classes +SchemaListPanel.objectClass=Object class +SchemaListPanel.returnedByDefault=Renvoyé par défaut +SchemaStep.button.reload=Reload +SchemaStep.message.reload.fail=Schema for resource '{0}' was not reloaded. +SchemaStep.message.reload.ok=Schema for resource '{0}' was reloaded successfully. +SchemaStep.schema=Schéma +SchemaStep.title=Schéma +SchemaStep.tooltip.intent=Intent specifies what system should do with the object. Intent sorts objects of the same kind into several categories. Objects with different intents may be handled differently by system. +SchemaStep.tooltip.isDefault=If set to true then this definition is the default for its kind. I.e. if no intent is explicitly specified then this definition will be used. +SchemaStep.tooltip.kind=Kind specified what this object is, whether it is account, entitlement or something else. +SchemaStep.tooltip.nativeObjectClass=Object class name how it is natively known by the resource (or the connector). +SchemaStep.xml=XML +SearchFilterPanel.button.update=Update clause +SearchFilterPanel.label.description=Description +SearchFilterPanel.label.filterClause=Filter clause +SearchFilterPanel.message.cantSerialize=Could not parse filter clause. Please enter correct expression. Reason: {0} +SearchFilterPanel.message.expressionSuccess=Filter clause has been updated successfully. +searchForm.filetype.null=File type +searchForm.reportType.null=Report type +searchForm.searchTextPlaceholder=Text +SearchType.AUTHOR=Author +SearchType.DESCRIPTION=Description +SearchType.FAMILY_NAME=Nom de famille +SearchType.FULL_NAME=Nom complet +SearchType.GIVEN_NAME=Prénom +SearchType.NAME=Nom +simpleErrorPanel.label.showMore=Afficher plus +simpleErrorPanel.message.error=Account on resource '{0}' not loaded. +SimpleRoleSelector.reset=Reset +MultipleAssignmentSelector.reset=Reset the list +situation.nullValid=Choisir un +StandardLoggerType.CHANGE_EXECUTOR=Change executor (c.e.m.model.impl.lens.ChangeExecutor) +StandardLoggerType.CLOCKWORK=Clockwork (c.e.m.model.impl.lens.Clockwork) +StandardLoggerType.EXPRESSION=Expression (c.e.m.common.expression.Expression) +StandardLoggerType.MAPPING=Mapping (c.e.m.common.mapping.Mapping) +StandardLoggerType.PROJECTOR_DETAIL=Projector detailed (c.e.m.model.impl.lens.projector) +StandardLoggerType.PROJECTOR=Projector (c.e.m.model.impl.lens.projector.Projector) +StandardLoggerType.SYNCHRONIZATION=Synchronization service (c.e.m.model.impl.sync.SynchronizationServiceImpl) +StandardLoggerType.AUTHORIZATION=Authorization (c.e.m.security.impl.SecurityEnforcerImpl) +StandardLoggerType.SCRIPT_EXPRESSION=Script expression (c.e.m.common.expression.script.ScriptExpression) +SubtasksPanel.label.category=Category +SubtasksPanel.label.detail=Detail +SubtasksPanel.label.executionState=Execution state +SubtasksPanel.label.progress=Progression +SubtasksPanel.label.name=Task name +SubtasksPanel.label.result=Result +SynchronizationActionEditorDialog.button.cancel=Annuler +SynchronizationActionEditorDialog.button.save=Enregistrer +SynchronizationActionEditorDialog.button.apply=Apply +SynchronizationActionEditorDialog.label.description=Description +SynchronizationActionEditorDialog.label=Edit Synchronization Action +SynchronizationActionEditorDialog.label.handlerUri=Action +SynchronizationActionEditorDialog.label.name=Nom +SynchronizationActionEditorDialog.label.order=Ordre +SynchronizationExpressionEditor.label.condition=Edit synchronization condition +SynchronizationExpressionEditor.label.confirmation=Edit synchronization confirmation +SynchronizationInformationPanel.count=Count +SynchronizationInformationPanel.deleted=Effacé +SynchronizationInformationPanel.disputed=Disputed +SynchronizationInformationPanel.linked=Lié +SynchronizationInformationPanel.noSynchronizationPolicy=No sync policy +SynchronizationInformationPanel.notApplicableForTask=Not applicable for task +SynchronizationInformationPanel.protected=Protégé +SynchronizationInformationPanel.state=Etat +SynchronizationInformationPanel.synchronizationDisabled=Sync disabled +SynchronizationInformationPanel.title=States of processed objects (before operation) +SynchronizationInformationPanel.titleAfter=States of processed objects (after operation) +SynchronizationInformationPanel.discoveryWarning=(The following numbers may include processing triggered by the discovery mechanism.) +SynchronizationInformationPanel.unlinked=Unlinked +SynchronizationInformationPanel.unmatched=Unmatched +ActionsExecutedInformationPanel.title=Actions executed +ActionsExecutedInformationPanel.showingResultingActionsOnly=Showing "resulting actions" only. E.g. user ADD and MODIFY in one synchronization operation is shown as ADD. +ActionsExecutedInformationPanel.showingAllActions=Showing all executed actions. +ActionsExecutedInformationPanel.changeShowingActions=Change it. +ActionsExecutedInformationPanel.objectType=Object type +ActionsExecutedInformationPanel.operation=Operation +ActionsExecutedInformationPanel.channel=Channel +ActionsExecutedInformationPanel.successCount=Count (OK) +ActionsExecutedInformationPanel.lastSuccessObject=Last (OK) +ActionsExecutedInformationPanel.lastSuccessTimestamp=Time +ActionsExecutedInformationPanel.failureCount=Count (failure) +SynchronizationPolicyDecision.ADD=Ajouter +SynchronizationPolicyDecision.DELETE=Effacer +SynchronizationPolicyDecision.KEEP=No change +SynchronizationPolicyDecision.UNLINK=Délier +SynchronizationReactionEditor.label.action=Action +SynchronizationReactionEditor.label.channel=Channel +SynchronizationReactionEditor.label.description=Description +SynchronizationReactionEditor.label.edit=Edit reaction +SynchronizationReactionEditor.label.name=Nom +SynchronizationReactionEditor.label.new=Create new reaction +SynchronizationReactionEditor.label.objectTemplateRef=Object template ref. +SynchronizationReactionEditor.label.reconcile=Reconcile +SynchronizationReactionEditor.label.situation=Situation +SynchronizationReactionEditor.label.synchronize=Synchronize +SynchronizationStep.action.tooltip.handlerUri=The explicit action to execute. Please note that most actions are designed to work with the default Identity Manager's synchronization algorithm and that this algorithm will be executed unless it was explicitly disabled (and then the result may be an error). Also note that even if no explicit action is selected system will still do the default synchronization algorithm if the "synchronize" option was selected. +SynchronizationStep.action.tooltip.order=Whether the explicit action is executed before Identity Manager's default synchronization algorithms or after them. Most built-in actions are designed to be executed before system synchronization as they only set up the model context and then they let system to do the real work. However some custom action may need to be executed after the synchronization, e.g. to deliver notifications, clean up, etc. +SynchronizationStep.button.add=Add synchronization object +SynchronizationStep.label.condition=Conditions +SynchronizationStep.label.confirmation=Confirmation +SynchronizationStep.label.correlation=Corrélation +SynchronizationStep.label.description=Description +SynchronizationStep.label.editSyncObject=Modifier '{0}' +SynchronizationStep.label.enabled=Activé +SynchronizationStep.label.focus=Focus +SynchronizationStep.label.intent=Objectif +SynchronizationStep.label.kind=Sorte +SynchronizationStep.label.name=Nom +SynchronizationStep.label.newObjectType=New sync. object type +SynchronizationStep.label.notSpecified=(nom non spécifié) +SynchronizationStep.label.objectClass=Object class +SynchronizationStep.label.objectTemplate=Object template +SynchronizationStep.label.opportunistic=Opportunistic +SynchronizationStep.label.reaction=Reaction +SynchronizationStep.label.reconcile=Reconcile +SynchronizationStep.label.syncObjectHeader=Synchronization objects +SynchronizationStep.message.cantSave=Couldn't save resource synchronization. +SynchronizationStep.message.errorLoadingObjectSyncList=Couldn't load object synchronization list from resource. Error: +SynchronizationStep.message.errorLoadingObjectTemplates=Couldn't load object templates from repository. +SynchronizationStep.message.unsupportedActionFormat=You are using deprecated attribute 'ref' to define reaction action. Use element 'handlerUri' instead. Actions with 'ref' attribute will not be shown in this wizard. +SynchronizationStep.reaction.tooltip.action=Explicit action. This setting defines what system has to do as a reaction to the synchronization event. +SynchronizationStep.reaction.tooltip.channel=Channel limitation. If the synchronization event originated from the specified channel (e.g. live sync, reconciliation or import) then this reaction will be processed. It will be ignored otherwise. +SynchronizationStep.reaction.tooltip.objectTemplateRef=Object template that will be used to process this specific synchronization event. If no object template is specified here then the usual default will be used. +SynchronizationStep.reaction.tooltip.reconcile=If set to true then the reconciliation step will be forced for this synchronization event. The attributes will be explicitly fetched if they are not present. If set to false then the reconciliation will be automatic. In that case the reconciliation happens only if the attributes are already present in the synchronization event. If the attributes are not present they will not be explicitly fetched and the reconciliation will be skipped. +SynchronizationStep.reaction.tooltip.situation=Synchronization situation. If the situation of the event matches the situation specified here then the reaction will be applied. It will be ignored otherwise. +SynchronizationStep.reaction.tooltip.synchronize=If set to true then the usual synchronization algorithms will be applied (a.k.a. clockwork and projector) in addition to explicit action specified below. This is the usual case. If set to false then the synchronization algorithms will be skipped and only the explicit action will be executed. +SynchronizationStep.title=Synchronisation +SynchronizationStep.tooltip.condition=The synchronization setting will be applied only if this condition returns true. The condition is used mostly to sort the object of the same kind into intents. E.g. the condition may decide whether the username starts with "T". If is does then it can sort out accounts to intent "test" and if it does not then the account will have default intent. +SynchronizationStep.tooltip.confirmation=Confirmation expression. Each result of the correlation expression will be passed to confirmation expression. If the confirmation expression returns true then the objects will be linked. If no confirmation expression is specified then all the objects returned from the correlation query are accepted by default. Confirmation expression may be reasonable resource-intensive because it will be executed only for objects that are returned from the correlation query. +SynchronizationStep.tooltip.correlation=Correlation expression. The correlation expression is used to link focal objects (e.g. User) and shadows (e.g. account) that belong together. The correlation expression results in a search filter that is executed over the focal objects (usually users). The query returns candidate objects for linking. Correlation expression must be very efficient otherwise the synchronization performance will suffer. +SynchronizationStep.tooltip.enabled=Set to true if this synchronization setting is enabled. This is the default. This setting can be used to temporarily disable the synchronization setting. +SynchronizationStep.tooltip.focus=The type of focal object that corresponds to the resource object. For account objects this is usually a user object (UserType). This can be set to RoleType or OrgType for entitlement objects and so on. +SynchronizationStep.tooltip.intent=Object intent for which this definition applies. If the object (shadow) already has a kind and intent when it is processed by the synchronization code then this kind/intent definition will be used to select the synchronization settings to apply to this object. If the object does not have kind/intent then object class and conditions will be used to select the settings. In such a case the object (shadow) will be marked by the intent specified in this field. +SynchronizationStep.tooltip.kind=Object kind for which this definition applies. If the object (shadow) already has a kind and intent when it is processed by the synchronization code then this kind/intent definition will be used to select the synchronization settings to apply to this object. If the object does not have kind/intent then object class and conditions will be used to select the settings. In such a case the object (shadow) will be marked by the kind specified in this field. +SynchronizationStep.tooltip.objectClass=Object class for which this definition applies. This will be used to select the synchronization settings in case the object (shadow) does not have kind/intent definition yet. +SynchronizationStep.tooltip.objectTemplate=Object template that will be used to process this specific synchronization event. If no object template is specified here then the usual default will be used. +SynchronizationStep.tooltip.opportunistic=If set to true then opportunistic synchronization (a.k.a. discovery) will be enabled during the processing of this event. +SynchronizationStep.tooltip.reaction=Specifies how system reacts to this synchronization event. Several reactions can be specified. The reaction appropriate for the synchronization situation of the event will be selected. +SynchronizationStep.tooltip.reconcile=If set to true then the reconciliation step will be forced for this synchronization event. The attributes will be explicitly fetched if they are not present. If set to false then the reconciliation will be automatic. In that case the reconciliation happens only if the attributes are already present in the synchronization event. If the attributes are not present they will not be explicitly fetched and the reconciliation will be skipped. +SystemConfigPanel.assignmentPolicyEnforcement=Assignment policy enforcement +SystemConfigPanel.cleanupPolicy=Cleanup Policy +SystemConfigPanel.cleanupPolicy.auditRecords=Audit records cleanup interval +SystemConfigPanel.cleanupPolicy.auditRecords.records=Audit records to keep +SystemConfigPanel.cleanupPolicy.closedTasks=Closed tasks cleanup interval +SystemConfigPanel.cleanupPolicy.certificationCampaigns=Closed certification campaigns cleanup interval +SystemConfigPanel.cleanupPolicy.certificationCampaigns.records=Closed certification campaigns to keep +SystemConfigPanel.cleanupPolicy.reports=Created reports cleanup interval +SystemConfigPanel.cleanupPolicy.results=Operation execution results cleanup interval +SystemConfigPanel.cleanupPolicy.results.records=Operation execution results to keep +SystemConfigPanel.cleanupPolicy.placeholder=Insert interval +SystemConfigPanel.cleanupPolicy.placeholder.records=Insert number +SystemConfigPanel.deploymentInformation.description=Deployment description +SystemConfigPanel.deploymentInformation.name=Deployment name +SystemConfigPanel.deploymentInformation.headerColor=Header color +SystemConfigPanel.deploymentInformation.skin=Template skin +SystemConfigPanel.deploymentInformation.logoImageUrl=Logo image URL +SystemConfigPanel.deploymentInformation.logoCssClass=Icon css class +SystemConfigPanel.deploymentInformation.customerUrl=Customer url +SystemConfigPanel.deploymentInformation.partnerName=Partner name +SystemConfigPanel.deploymentInformation.subscriptionIdentifier = Subscription identifier +SystemConfigPanel.deprecated.objectPolicy=This part of configuration is deprecated. It is kept here for compatibility purposes. Please, use the component below to define object policies. +SystemConfigPanel.mail.config.placeholder=New Configuration +SystemConfigPanel.mail.debug=Déboguer +SystemConfigPanel.mail.defaultFrom=Default from +SystemConfigPanel.mail.host=Hôte +SystemConfigPanel.mail.password=Mot de passe +SystemConfigPanel.mail.password.placeholder.empty=Définir le mot de passe +SystemConfigPanel.mail.password.placeholder.set=Le mot de passe est défini +SystemConfigPanel.mail.port=Port +SystemConfigPanel.mail.server=Serveur de messagerie +SystemConfigPanel.mail.server.remove.warn=Could not delete selected mail server configuration. Changes made to selected configuration prevent the removal. Please re-select the configuration you wish to remove. +SystemConfigPanel.mail.server.tooltip=Select the mail server to configure it. To add new configuration, press '+' button. To remove selected configuration, press '-' button. +SystemConfigPanel.mail.transportSecurity=Transport security +SystemConfigPanel.mail.username=Identifiant +SystemConfigPanel.misc.enableExperimentalCode=Enable MODEL experimental code +SystemConfigPanel.notification.redirectToFile.placeholder=Filename +SystemConfigPanel.notification.redirectToFile=Redirect to file +SystemConfigPanel.title.accountSynchronization=Global account synchronization settings +SystemConfigPanel.title.basic=Basic +SystemConfigPanel.title.connectorFramework=Connector frameworks configuration +SystemConfigPanel.title.misc=Divers +SystemConfigPanel.title.deploymentInformation = Deployment information +SystemConfigPanel.title.modelHooks=Model hooks +SystemConfigPanel.title.notification=Notifications +SystemConfigPanel.title.securityPolicy=Global security policy +SystemConfigPanel.title.userTemplate=Default user template +SystemConfigPanel.tooltip.duration=Format: P[n][p], n-number, p-period (d - days, m - months, ...), P3M - cleanup every 3 months +SystemConfigPanel.tooltip.color =Hex format, e.g. #3c8dbc for the default "blue-light" color +SystemInfoPanel.cpuUsage=CPU Usage +SystemInfoPanel.heapMemory=Heap memory (used/committed/max) +SystemInfoPanel.nonHeapMemory=Non heap memory (used/committed/max) +SystemInfoPanel.threads=Threads (live/peak/total) +TaskDtoExecutionStatus.CLOSED=Fermé +TaskDtoExecutionStatus.CLOSED.withTimestamp=Fermé à ${} +TaskDtoExecutionStatusFilter.ALL=All execution states +TaskDtoExecutionStatusFilter.CLOSED=Fermé +TaskDtoExecutionStatusFilter.NOT_CLOSED=Non fermé +TaskDtoExecutionStatusFilter.RUNNING_OR_RUNNABLE=Exécutable ou en exécution +TaskDtoExecutionStatusFilter.SUSPENDED_OR_SUSPENDING=Suspendu ou en cours de suspension +TaskDtoExecutionStatusFilter.WAITING=En attente +TaskDtoExecutionStatus.RUNNABLE=Exécutable +TaskDtoExecutionStatus.RUNNING_OR_RUNNABLE=En exécution/Exécutable +TaskDtoExecutionStatus.RUNNING=En exécution +TaskDtoExecutionStatus.SUSPENDED=Suspendu +TaskDtoExecutionStatus.SUSPENDING=En cours de suspension +TaskDtoExecutionStatus.WAITING=En attente +TaskExecutionStatus.CLOSED=Fermé +TaskExecutionStatus.RUNNABLE=Exécutable +TaskExecutionStatus.SUSPENDED=Suspendu +TaskExecutionStatus.WAITING=En attente +TaskListType.ACTIVATED=Activé +TaskListType.ALL=Tout +TaskListType.DEACTIVATED=Désactivé +TaskListType.EXECUTING=En exécution +TaskStatePanel.countersSource=Statistical and state information source: +TaskStatePanel.currentObjectProcessed=Current object being processed +TaskStatePanel.executionStatus=Statut d'exécution +TaskStatePanel.executionTime=Temps d'exécution +TaskStatePanel.lastError=Last error when processing object +TaskStatePanel.lastObjectProcessedFailure=Last object failed to be processed +TaskStatePanel.lastObjectProcessedSuccess=Last object successfully processed +TaskStatePanel.message.countersSourceMemory=tâche en mémoire (récupéré {0}) +TaskStatePanel.message.countersSourceRepository=repository (statistics updated on {0}) +TaskStatePanel.message.executionTime.finished={0} - {1} ({2}) +TaskStatePanel.message.executionTime.notFinished=Started {0} ({1} ago) +TaskStatePanel.message.lastObjectProcessed={0} +TaskStatePanel.message.node= - at node {0} +TaskStatePanel.message.objectsProcessed={0} +TaskStatePanel.message.objectsProcessedTime=(average time {1} ms, total processing time {0} seconds) +TaskStatePanel.message.objectsTotal={0} (wall clock average: {1} ms) +TaskStatePanel.message.timeInfoWithAgo={0} ({1} ago) +TaskStatePanel.message.timeInfoWithDuration={0} (in {1} ms) +TaskStatePanel.message.timeInfoWithDurationAndAgo={0} ({1} ago - in {2} ms) +TaskStatePanel.message.timeInfoWithIn={0} (in {1}) +TaskStatePanel.message.ago=({0} ago) +TaskStatePanel.message.duration=(in {0} ms) +TaskStatePanel.message.durationAndAgo=({0} ago - in {1} ms) +TaskStatePanel.message.in=(in {0}) +TaskStatePanel.objectsProcessedFailure=Objects failed to be processed +TaskStatePanel.objectsProcessedSuccess=Objects successfully processed +TaskStatePanel.objectsTotal=Total objects processed +TaskStatePanel.opResult=Operation result +TaskStatePanel.progress=Progression +TaskStatePanel.statistics=Environmental performance statistics +TaskStatePanel.subtaskName=Nom +TaskStatePanel.subtaskObjectsProcessed=Objects processed +TaskStatePanel.subtaskState=Etat +TaskStatePanel.updated=Updated: +TaskStatePanel.workerThreads=Lightweight subtasks (worker threads) +tempMessagePanel.cause=Cause : +tempMessagePanel.context=Contexte : +tempMessagePanel.count=Compte : +tempMessagePanel.message.debug=Déboguer +tempMessagePanel.message.error=Erreur +tempMessagePanel.message.expectedError=Erreur attendue +tempMessagePanel.message.fatalError=Erreur fatale +tempMessagePanel.message.inProgress=En cours +tempMessagePanel.message.notApplicable=Non applicable +tempMessagePanel.message.partialError=Erreur partielle +tempMessagePanel.message.success=Réussi +tempMessagePanel.message.undefined=Non défini +tempMessagePanel.message.unknown=Inconnu +tempMessagePanel.message.warn=Alerte +tempMessagePanel.param=Param: +tempMessagePanel.times=times +TextDetailsPanel.title=Association Details +TextField.universal.placeholder=Insérer une valeur +ThreeStateBooleanPanel.false=Faux +ThreeStateBooleanPanel.true=Vrai +ThreeStateBooleanPanel.undef=Undef. +timeouts=Timeouts +Title.CurrentStatus=Last status message +Title.MappingsStatistics=Mappings evaluation information +Title.NotificationsStatistics=Notifications information +Title.ProvisioningStatistics=Provisioning operations information +Title.Source=Source: +TreeTablePanel.childOrg=Children org. units +TreeTablePanel.collapseAll=Collapse all +TreeTablePanel.deleteRoot=Delete root +TreeTablePanel.dialog.title.confirmDelete=Confirm delete +TreeTablePanel.editRoot=Edit root +TreeTablePanel.expandAll=Expand all +TreeTablePanel.hierarchy=Org. hierarchy +TreeTablePanel.managers=Managers +TreeTablePanel.members=Members +TreeTablePanel.menu.addManager=Add manager +TreeTablePanel.menu.addMember=Ajouter un utilisateur +TreeTablePanel.menu.deleteMember=Delete member +TreeTablePanel.menu.deleteAllMembers=Delete all (focus) members +TreeTablePanel.menu.addOrgUnit=Add org. unit +TreeTablePanel.menu.addToHierarchy=Add to org. unit +TreeTablePanel.menu.delete=Effacer +TreeTablePanel.menu.disable=Disable +TreeTablePanel.menu.enable=Enable +TreeTablePanel.menu.move=Move +TreeTablePanel.menu.recompute=Recompute +TreeTablePanel.menu.removeFromHierarchy=Remove from org. unit +TreeTablePanel.message.warn.deleteTreeObjectConfirm=Warning! {0} has members. Do you really want to delete this org. unit? +TreeTablePanel.message.deleteTreeObjectConfirm=Do you really want to delete org. unit "{0}"? +TreeTablePanel.message.deleteObjectConfirm=Do you really want to delete selected {0} object(s)? +TreeTablePanel.message.deleteRootConfirm=Do you really want to delete {0} ({1})? +TreeTablePanel.message.nothingSelected=No object has been selected. +TreeTablePanel.message.recomputeError=Can't recompute Org. unit +TreeTablePanel.moveRoot=Move root +TreeTablePanel.recomputeRoot=Recompute root +TreeTablePanel.recomputeTask=Recompute users in organization {0} +TreeTablePanel.search.scope.one=One level +TreeTablePanel.search.scope.subtree=Subtree +TreeTablePanel.fullName.displayName=Fullname/Display name +TreeTablePanel.identifier.description=Identifier/Description +TreeTablePanel.warning.childrenExist=Organization which is going to be deleted has members. Do you really want to delete it? +Type.AUDIT=Audit +type.nullValid=Choisir un +Type.RECONCILIATION=Réconciliation +typeSelect.null=All roles +Type.USERS=Utilisateur +UploadPanel.delete.tooltip=Remove file +UploadPanel.message.help=Choose file for import. +UploadPanel.message.removeError=File was not removed. +UploadPanel.message.removeSuccess=File was removed. +UploadPanel.message.uploadError=File upload failed. Try again please. +UploadPanel.message.uploadSuccess=File upload was successful. Continue with editing and press 'Save' when done. +UploadPanel.upload.tooltip=Upload file +UploadPanel.download.tooltip=Download file +userBrowserDialog.button.cancelButton=Annuler +userBrowserDialog.button.addButton=Ajouter +userBrowserDialog.button.selectButton=Select +userBrowserDialog.button.searchButton=Recherche +userBrowserDialog.email=Email +userBrowserDialog.familyName=Nom de famille +userBrowserDialog.fullName=Nom complet +userBrowserDialog.givenName=Prénom +userBrowserDialog.message.queryError=Error occurred during translation search query to filter. +userBrowserDialog.name=Nom +userBrowserDialog.title=Choose user +userBrowserDialog.type=Type +User.disabled=Désactivé +UserMenuPanel.editPasswordQuestions=Security Questions +UserMenuPanel.editProfile=Edit profile +UserMenuPanel.logout=Log out +UserMenuPanel.resetPasswords=Reset password +UserOrgReferenceChoosePanel.type.org=Org. Unit +UserOrgReferenceChoosePanel.type=Owner Type +UserOrgReferenceChoosePanel.type.user=Utilisateur +UserReportConfigPanel.dateFrom=De +UserReportConfigPanel.dateTo=A +UserReportConfigPanel.exportFileType=Export Type +UserReportConfigPanel.title.basic=Basic User Report Configuration +user.enduser=End user +user.noAssignments=No assignments +user.superuser=Superuser +user.orgManager=Manager +user.orgMember=Membre +user.noOrgs=No organizations +validFromFetchStrategy.nullValid=Choisir un +validToFetchStrategy.nullValid=Choisir un +valueAttribute.nullValid=Choisir un +WebModelUtils.couldntLoadObject=Couldn't load object. +WebModelUtils.couldntSaveObject=Couldn't save object. +WebModelUtils.couldntSearchObjects=Couldn't search objects. +WebModelUtils.couldntDeleteObject=Couldn't delete object. +WebModelUtils.couldntCountObjects=Couldn't count objects. +web.security.provider.access.denied=Access denied. You don't have permission to access, please contact Identity Manager's administrators. +web.security.provider.denied=Permission denied. +web.security.provider.disabled=User is disabled. +web.security.provider.invalid=Invalid username and/or password. +web.security.provider.invalid.link=Invalid link +web.security.provider.locked=User is locked, please wait. +web.security.provider.password.bad=User doesn't have defined password. +web.security.provider.password.encoding=Couldn't authenticate user, reason: couldn't encode password. +web.security.provider.unavailable=Currently we are unable to process your request. Kindly try again later. +web.security.provider.credential.bad=Bad credentials +web.security.provider.credential.expired=Credentials have expired +web.security.ldap.access.denied=Access denied. You don't have permission to access, please contact Identity Manager's administrators. +web.security.ldap.denied=Permission denied. +web.security.ldap.disabled=User is disabled. +web.security.ldap.invalid=Invalid username and/or password. +web.security.ldap.invalid.link=Invalid link +web.security.ldap.locked=User is locked, please wait. +web.security.ldap.password.bad=User doesn't have defined password. +web.security.ldap.password.encoding=Couldn't authenticate user, reason: couldn't encode password. +web.security.ldap.unavailable=Currently we are unable to process your request. Kindly try again later. +LdapAuthenticationProvider.badCredentials=Invalid username and/or password. +LdapAuthenticationProvider.emptyUsername=Empty username. +LdapAuthentication.incorrect.value=MidPoint principal type doesn't match. +LdapAuthentication.bad.user=Unknown user. +UserProfileServiceImpl.unknownUser=Couldn't find user. +AbstractLdapAuthenticationProvider.emptyPassword=Empty password. +BindAuthenticator.badCredentials=Invalid username and/or password. +WfDeltasPanel.label.deltaIn=Process input: delta(s) to be approved +WfDeltasPanel.label.deltaOutListEmpty=(none) +WfDeltasPanel.label.deltaOut=Process output: delta(s) resulting from the approval +WfHistoryPanel.label.event=Event +WfHistoryPanel.label.timestamp=Time +WizardHelpDialog.button.ok=Ok, Got It! +WizardHelpDialog.label=Get Help With Resource Wizard! +Wizard.message.cancel=Resource editing was canceled +Wizard.correctErrorsFirst=Please correct the errors before saving. +Wizard.Issues=Issues +Wizard.Notes=Notes +WizardStep.title= +WorkItemsPanel.actors=Actor(s) +WorkItemsPanel.object=Objet +WorkItemsPanel.target=Cible +WorkItemsPanel.name=Nom +WorkItemsPanel.stage=Stage +WorkItemsPanel.started=Process started +WorkItemsPanel.created=Créé +WorkItemsPanel.deadline=Deadline +WorkItemsPanel.escalationLevel=Esc. level +PageAdmin.menu.dashboard=Dashboard +PageAdmin.menu.selfDashboard=Home +PageAdmin.menu.selfService=SELF SERVICE +PageAdmin.menu.mainNavigation=ADMINISTRATION +PageAdmin.menu.additional=ADDITIONAL +PageAdmin.menu.profile=Profile +PageAdmin.menu.assignments=Affectations +PageAdmin.menu.credentials=Certificat +PageAdmin.menu.request=Request a role +PageTemplate.version=Version: +PageTemplate.copy=Copyright © 2010-2018 Evolveum® and partners.  +PageTemplate.toggleNavigation=Toggle navigation +PageTemplate.user=user +PageTemplate.couldntNavigateBreadcrumb=Couldn't navigate breadcrumb, reason: {0} +SystemInfoPanel.starttime=Start time +SystemInfoPanel.uptime=Uptime +CountToolbar.label.unknownCount=Displaying {0,number,integer} to {1,number,integer}, unknown number of matching results. +TableConfigurationPanel.pageSize=Page size +TableConfigurationPanel.tableColumns=Table columnsCountToolbar.label.unknownCount=Displaying {0,number,integer} to {1,number,integer}, unknown number of matching results. +MyRequestsPanel.started=Commencé +MyRequestsPanel.rejected=Rejected +MyRequestsPanel.skipped=Skipped +MyRequestsPanel.approved=Approved +MyRequestsPanel.inProgress=En cours +MyRequestsPanel.unknown=Inconnu +MyRequestsPanel.future=Future +MyRequestsPanel.cancelled=Cancelled +MyRequestsPanel.name=Nom +PageSelfProfile.title=Edit profile +PageSelfDashboard.title=Home +PageSelfDashboard.workItems=My work items +PageSelfDashboard.myRequests=My requests +PageAdmin.menu.top.serverTasks.edit=Edit task +PageAdmin.menu.top.configuration.repositoryObjectView=Edit object +PageAdmin.menu.top.reports.configure=Configure report +PageAdmin.menu.top.users.edit=Edit user +PageAdmin.menu.top.roles.edit=Edit role +PageAdmin.menu.top.users.org.edit=Edit organization +PageSelfCredentials.tabs.password=Mot de passe +PageSelfCredentials.title=Certificat +PageSelfCredentials.oldPasswordLabel=Old password +PageSelfCredentials.passwordLabel1=New password +PageSelfCredentials.passwordLabel2=Confirm password +PageSelfCredentials.accountMidpoint=Identity Manager +PageSelfCredentials.resourceMidpoint=Identity Repository +PageSelfCredentials.noAccountSelected=Password not changed. No account was selected. +PageSelfCredentials.emptyPasswordFiled=New password fields values are to be specified. +PageSelfCredentials.incorrectOldPassword=Password not changed. Old password is incorrect. +PageSelfCredentials.specifyOldPasswordMessage=Please, specify old password value +ChangePasswordPanel.accountsTable.header=Password propagation +ChangePasswordPanel.name=Nom +ChangePasswordPanel.resourceName=Ressource +ChangePasswordPanel.enabled=Account enabled +ChangePasswordPanel.legendMessage.selected= - Password will be changed +ChangePasswordPanel.legendMessage.propagated= - Automatic password propagation (based on policies defined in resources definitions) +ChangePasswordPanel.legendMessage.deselected= - Password will not be changed +ChangePasswordPanel.legendMessage.no.password.capability= - Password capability is not supported by resource +ChangePasswordPanel.helpInfo=

This portion of the credentials dialog controls how the password change will be propagated to each individual system. The first line defines whether the password will be changed in the Identity Manager itself. Following lines represent each system for which the password can be changed. The password propagation is controlled by the icons:

  • Password will be changed. Password for this system will be changed to the value specified in the password dialog above.
  • Automatic password propagation. The password might be changed. Whether the password is changed or not depends on the policies set up by identity administrator. This usually means that the password will be changed if it makes sense for the current situation and settings. This is the reasonable default choice.
  • Password will not be changed for this system.
  • Password capability is not supported for this system. As the result, password will not be changed for this system.

You can adjust the password propagation settings by clicking on the icons and thus fine-tune how the password change is propagated to each individual system.

+ChangePasswordPanel.helpPopupTitle=Password propagation help +PageBase.button.tooltip.clearSearch=Clear +mainForm.uploadTooLarge = Upload must be less than ${maxSize}. +mainForm.uploadFailed = File failed to upload: ${exception.localizedMessage} +PageSelfCredentials.couldntResolve=Couldn't resolve resource. +roleMemberPanel.type=Type: +roleMemberPanel.tenant=Tenant: +roleMemberPanel.project=Org/Project: +roleMemberPanel.indirectMembers=Include indirect members +roleMemberPanel.allRelations=Show all relations +roleMemberPanel.menu.createOwner=Create owner +roleMemberPanel.menu.assignOwners=Assign owners +roleMemberPanel.menu.createApprover=Create approver +roleMemberPanel.menu.assignApprovers=Assign approvers +roleMemberPanel.menu.add=Ajouter un utilisateur +roleMemberPanel.menu.remove=Retirer un utilisateur +roleMemberPanel.menu.recompute=Recompute member +roleMemberPanel.menu.recomputeAll=Recompute all +roleMemberPanel.menu.removeAll=Enlever tout +roleMemberPanel.relation=Relation +SearchPanel.more=More... +SearchPanel.add=Ajouter +SearchPanel.close=Fermer +SearchPanel.properties=Propriétés +SearchPanel.fullText=Full text +SearchPanel.fullTextSearch=Full text search +SearchItemPanel.all=Tout +SearchItemPanel.update=Mettre à jour +SearchItemPanel.close=Fermer +SearchItemPanel.add=Ajouter +SearchItemPanel.remove=Remove +SearchItemPanel.browse=Browse +SearchItemPanel.or=or +operation.com.evolveum.midpoint.schema.constants.ConnectorTestOperation.connectorSchema=Connector schema +FeedbackAlertMessageDetails.operation=Operation +FeedbackAlertMessageDetails.message=Message +FeedbackAlertMessageDetails.params=Parameters +FeedbackAlertMessageDetails.contexts=Context +FeedbackAlertMessageDetails.count=Count +FeedbackAlertMessageDetails.error=Erreur +operation.com.evolveum.midpoint.model.impl.lens.projector.InboundProcessor.processInbound=Process inbound (Model) +operation.com.evolveum.midpoint.model.impl.lens.projector.Projector.project=Project (Model) +operation.com.evolveum.midpoint.model.impl.lens.projector.AssignmentProcessor.processAssignmentsProjections=Process assignments (Model) +operation.com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails.save=Save (GUI) +operation.com.evolveum.midpoint.repo.api.RepositoryService.getVersion=Get version (Repository) +operation.com.evolveum.midpoint.task.quartzimpl.execution.ExecutionManager.scheduleRunnableTaskNow=Schedule runnable task now (Task) +operation.com.evolveum.midpoint.web.page.admin.server.PageTaskAdd.runNowTask=Run now (Task) +operation.com.evolveum.midpoint.task.api.TaskManager.scheduleTasksNow=Schedule tasks now (Task) +operation.com.evolveum.midpoint.model.impl.importer.ObjectImporter.resolveReference=Resolve reference (Model) +operation.com.evolveum.midpoint.model.impl.importer.ObjectImporter.encryptValues=Encrypt values (Model) +operation.com.evolveum.midpoint.model.impl.importer.ObjectImporter.importObjectToRepository=Import object to repository (Model) +operation.com.evolveum.midpoint.model.api.ModelService.executeChange=Execute changes (Model) +operation.com.evolveum.midpoint.model.impl.lens.projector.AssignmentProcessor.evaluateAssignment=Evaluate assignment (Model) +operation.com.evolveum.midpoint.wf.impl.WfHook.invoke=Invoke (Workflow) +operation.com.evolveum.midpoint.model.impl.lens.ChangeExecutor.execute=Execute (Model) +operation.com.evolveum.midpoint.model.impl.lens.ChangeExecutor.execute.focus.UserType=Execute - user (Model) +operation.com.evolveum.midpoint.model.impl.lens.ChangeExecutor.executeDelta=Execute delta (Model) +operation.com.evolveum.midpoint.task.api.Task.listSubtasksDeeply=List subtasks deeply (Task) +operation.com.evolveum.midpoint.task.api.Task.listSubtasksRaw=List subtasks raw (Task) +operation.com.evolveum.midpoint.web.page.self.PageSelfCredentials.savePassword=Change password (GUI) +operation.com.evolveum.midpoint.web.page.self.PageRequestRole.save=Changes were successfully saved +operation.com.evolveum.midpoint.web.page.self.PageRequestRole.taskCreated=The process of assigning a role is waiting for the approval. +PageError.button.home=Home +PageResource.tab.connector=Connecteur +PageResource.tab.connector.connectorLabel=Connecteur +PageResource.tab.connector.connectorPoolLabel=Connector pool +PageResource.tab.content.account=Compte +PageResource.tab.content.entitlement=Entitlements +PageResource.tab.content.generic=Generics +PageResource.tab.content.others=Uncategorized +PageResource.tab.content.tasks=Defined Tasks +ResourceContentTabPanel.searchType.repository=Repository +ResourceContentTabPanel.searchType.resource=Ressource +ResourceContentTabPanel.searchType=Search In: +PagePreviewChanges.primaryChangesOne=Primary changes: {0} object +PagePreviewChanges.primaryChangesMore=Primary changes: {0} objects +PagePreviewChanges.secondaryChangesOne=Secondary changes: {0} object +PagePreviewChanges.secondaryChangesMore=Secondary changes: {0} objects +PagePreviewChanges.policyViolationMessages=Policy violation messages +PagePreviewChanges.approvalsRequired=Approvals required +PagePreviewChanges.button.continueEditing=Continue editing +PagePreviewChanges.button.save=Enregistrer +ScenePanel.object={0} object +ScenePanel.objects={0} objects +ScenePanel.item=Item +ScenePanel.oldValue=Old value +ScenePanel.newValue=New value +ScenePanel.value=Valeur +SceneItemLinePanel.removedValue=Removed value +SceneItemLinePanel.addedValue=Added value +SceneItemLinePanel.unchangedValue=Unchanged value +SceneItemLinePanel.unknownLabel=(unknown) +operation.com.evolveum.midpoint.web.page.admin.resources.ResourceContentTabPanel.changeOwner=Change owner (GUI) +TaskSummaryPanel.progressWithTotalKnown=Progress: {0} out of {1} +TaskSummaryPanel.progressWithTotalUnknown=Progress: {0} +TaskSummaryPanel.progressIfSuspended=(suspended) +TaskSummaryPanel.progressIfWaiting=(waiting) +TaskSummaryPanel.progressIfClosed=(closed) +TaskSummaryPanel.progressIfStalled=(stalled since {0}) +TaskSummaryPanel.lastProcessed=Last object processed: {0} +ResourceContentResourcePanel.showExisting=Show existing +ResourceContentResourcePanel.newTask=Create new +SearchPanel.advanced=Advanced +SearchPanel.basic=Basic +SearchPanel.search=Recherche +SearchPanel.debug=Déboguer +ResourceContentResourcePanel.realSearch=(In fact) Searching by: +typedAssignablePanel.selectedOrgs=Orgs: +typedAssignablePanel.selectedResources=Resources: +typedAssignablePanel.selectedRoles=Roles: +typedAssignablePanel.selectedServices=Services: +TypedAssignablePanel.orgTreeView=Org. tree view +TypedAssignablePanel.Kind=Sorte +TypedAssignablePanel.Intent=Objectif +SearchPanel.insertFilterXml=Insert filter xml (SearchFilterType) +autoRefreshPanel.refreshNow=Refresh now +autoRefreshPanel.resumeRefreshing=Resume refreshing +autoRefreshPanel.pauseRefreshing=Pause refreshing +autoRefreshPanel.refreshingEach=Refreshing each {0} sec +autoRefreshPanel.noRefreshing=(no refreshing) +PageAdmin.menu.top.services=Services +PageAdmin.menu.top.services.list=List services +PageAdmin.menu.top.services.new=New service +PageAdmin.menu.top.services.edit=Edit service +taskShowAdvancedFeaturesPanel.label=Show advanced features +taskWfParentPanel.changesNotRequiringApproval=Changes not requiring approval +taskOtherChangesPanel.label.state=State: +taskOtherChangesPanel.state.FINAL=Changes have been applied (successfully or not) +taskOtherChangesPanel.state.PRIMARY=Changes are waiting to be applied +taskOtherChangesPanel.state.SECONDARY=Changes are waiting to be applied +taskWfChildPanel.showParent=Show request in a context of the whole operation. +taskWfChildPanel.showNextStages=Show following stages +taskWfChildPanel.showWholeProcess=Show the whole process +TaskSummaryPanel.requestedBy=Requested by: {0} +TaskSummaryPanel.requestedByWithFullName=Requested by: {0} ({1}) +TaskSummaryPanel.requestedOn=Requested on: {0} +TaskSummaryPanel.requestedByAndOn=Requested by {0} on {1} +TaskSummaryPanel.stage=Stage: {0} +TaskSummaryPanel.rejected=Rejected +TaskSummaryPanel.approved=Approved +operation.com.evolveum.midpoint.web.page.admin.resources.PageResource.refreshSchema=Refresh schema (GUI) +TaskDto.changesApplied=Changes applied (successfully or not) +TaskDto.changesBeingApplied=Changes being applied +TaskDto.changesWaitingToBeApplied=Changes waiting to be applied +TaskDto.changesWaitingToBeApproved=Changes waiting to be approved +TaskDto.changesRejected=Changes rejected +TaskDto.changesCanceled=Changes canceled +PageServices.title=Service List +PageServices.message.deleteServicesConfirm=Do you really want to delete selected {0} service(s)? +PageServices.message.confirmationMessageForMultipleObject=Do you really want to {0} selected {1} service(s)? +PageServices.message.confirmationMessageForSingleObject=Do you really want to {0} service '{1}'? +PageServices.message.nothingSelected=No service has been selected. +PageServices.message.buttonDelete=Effacer +LiveSyncHandlerPanel.deleteToken=Delete token +ScannerHandlerPanel.lastScanTimestamp=Last scan timestamp +ScriptExecutionHandlerPanel.script=Script +QueryBasedHandlerPanel.objectType=Object type +QueryBasedHandlerPanel.query=Query +DeleteHandlerPanel.executeInRawMode=Execute in raw mode +ExecuteChangesHandlerPanel.change=Change +ExecuteChangesHandlerPanel.options=Options +ReportCreateHandlerPanel.downloadCreatedReport=Download created report +ReportCreateHandlerPanel.reportParameters=Report parameters +OperationResultPanel.showTask=(show task) +PageResources.inlineMenuItem.test=Tester la connexion +PageRequestRole.title=Request a role +MainObjectListPanel.refresh=Refresh +MainObjectListPanel.newObject=New +MainObjectListPanel.import=Importer +MainObjectListPanel.export=Exporter +MainObjectListPanel.exportFileName=export +TreeTablePanel.menu.createMember=Create member +TreeTablePanel.menu.createManager=Create manager +TreeTablePanel.menu.addMembers=Assign members +TreeTablePanel.menu.addManagers=Assign managers +TreeTablePanel.menu.unassignMembersSelected=Unassign selected members +TreeTablePanel.menu.unassignMembersAll=Unassign all members +TreeTablePanel.menu.removeManagersAll=Unassign all managers +TreeTablePanel.menu.recomputeMembersSelected=Recompute selected members +TreeTablePanel.menu.recomputeMembersAll=Recompute all members +TreeTablePanel.menu.recomputeMembersAllDirect=Recompute direct members +TreeTablePanel.menu.recomputeManagersAll=Recompute all managers +TreeTablePanel.menu.deleteManagersAll=Delete all managers +TreeTablePanel.menu.deleteManager.confirm=Are you sure you want to delete selected manager from system? This change is permanent. +TreeTablePanel.menu.deleteManagersAll.confirm=All defined managers will be permanently removed from system. Are you sure to perform this action? +TreeTablePanel.move=Move +TreeTablePanel.makeRoot=Make root +TreeTablePanel.delete=Effacer +TreeTablePanel.recompute=Recompute +TreeTablePanel.edit=Éditer +TreeTablePanel.viewDetails=View details +TreeTablePanel.createChild=Create child +WorkItemSummaryPanel.allocated=Allocated +WorkItemSummaryPanel.notAllocated=Not allocated +WorkItemPanel.showRequest=Show the approval request. +DefinitionStagesPanel.confirmDelete=Confirm delete +DefinitionStagesPanel.confirmDeleteText=Do you really want to delete stage '{0}'? +PageCertDefinition.outcomeStrategyHelpLabel=Please see also +PageCertDefinition.outcomeStrategyHelpLink=this document +PageCertDefinition.outcomeStrategyHelp=How is the overall outcome for a case determined, based on outcomes in individual stages? Note: 'Stop review on:' field shows outcomes that prevent a case from being advanced to the next stage. Usually you need not change the default value. If necessary, you could do that through the XML configuration. +PageCertDefinition.campaignLastStartedHelp=When was last campaign created according to this definition started? +PageCertDefinition.campaignLastClosedHelp=When was last campaign created according to this definition closed - either after successfully going through all stages, or closed at any time. However, if a campaign is deleted without being closed first, it is not shown here. +PageCertDefinition.scopeObjectTypeHelp=Determines which objects will be considered to be in the scope of the certification campaigns. Features of these objects (e.g. whether to certify their assignments or their inducements or both, etc) are selected below. +PageCertDefinition.scopeSearchFilterHelp=If only a subset of objects of given type is to be considered for certification, you can specify the corresponding filter here. For example, you can specify that only users from a certain organization should be certified. Or that only employees with a specific employee type should be considered. +PageCertDefinition.scopeAssignmentsInducementsHelp=Select what features (assignments, inducements or both) of the objects described above are to be certified. +PageCertDefinition.scopeIncludeTargetTypesHelp=When certifying assignments or inducements, you can specify what target types are taken into account. For example, you can say that you want to certify only assignments of roles (to, for example, users). +PageCertDefinition.scopeIncludeByStatusHelp=Whether to certify only assignments/inducements that have administrative status set to ENABLED (or not set at all). Note that what is relevant is the administrative status of the assignment, not the administrative status of the assigned object. +StageDefinitionPanel.stageDurationHelp=Duration of this stage, used to determine stage end time. The end time is computed as the moment of stage opening plus the duration, rounded up to 23:59:59 of the last day. Duration is specified in ISO 8601 format, like P14D for 14 days, P3W for 3 weeks, P2M for 2 months, etc. +StageDefinitionPanel.notifyBeforeDeadlineHelp=How long before the stage end the reminding notifications (to reviewers and campaign owner) will be sent. It is possible to specify more values; separate them by commas. Time interval is specified in ISO 8601 format, like PT12H for 12 hours, P2D for 2 days, P1W for 1 week, etc. An example: PT48H, PT12H says that the first notification will be sent 48 hours before stage end, and the second one 12 hours before the end. +StageDefinitionPanel.notifyWhenNoDecisionHelp=If checked, a 'stage end approaching' notification is sent to a reviewer only if he/she has some cases waiting for his/her decision. If not checked, reviewers always get their notifications - regardless of whether they have provided a decision or not. (Note that notifications to the campaign owner about approaching stage end are always sent, regardless of this setting.) +StageDefinitionPanel.reviewerSpecificationTargetHelp=Selection of reviewers based on assignment/inducement target owner/approver. E.g. you can specify that the role owner is used to certify all assignments of 'his' role (to any users). +StageDefinitionPanel.reviewerSpecificationObjectHelp=Selection of reviewers based on object that has something assigned (or induced) to. E.g. you can specify that the role owner is used to certify all inducements made to 'his' role. +StageDefinitionPanel.reviewerUseObjectManagerHelp=Selection of reviewers based on managers of object (typically a user) that has something assigned/induced to. E.g. you can specify that a manager is used to certify all assignments made to users in 'his' organization. +StageDefinitionPanel.reviewerUseObjectManagerOrgTypeHelp=Influences determination of a manager of a user: First, we take all managers of all organizations the user belongs to. We exclude the user himself, if he is a manager of such organization (and if 'allow managers to approve their own assignments' below is unchecked). If the value in this field is filled-in, we use it to select only organizations with given organization type value - for example, 'functional' (if you have e.g. both functional-type and project-type organizations). If this field is empty, we take into account all organizations. If we find no suitable manager, we continue with all parent organizations (again, of the given type, if specified). +StageDefinitionPanel.reviewerUseObjectManagerAllowSelfHelp=If a user is a manager in his organization, could he be selected as a reviewer for his own assignments? If unchecked (the default), a higher-level manager is searched for - see description for the above field. +StageDefinitionPanel.defaultReviewerRefHelp=This reviewer (or reviewers) will be used if the above condition would lead to no reviewer. +StageDefinitionPanel.additionalReviewerRefHelp=This reviewer (or reviewers) will be used in addition to any reviewers selected by the above conditions. +StageDefinitionPanel.outcomeStrategyHelp=If there is more than one reviewer selected, we need a strategy for combining their responses into stage-level outcome. For example, is it sufficient if any of them accepts the certification case? Or should all of them accept? Select the strategy using this field. +StageDefinitionPanel.outcomeIfNoReviewersHelp=What should be the outcome if there are no reviewers assigned, e.g. if the reviewer is defined as the target role owner, but a particular role has no owner? This does NOT apply in situations when there are reviewers assigned, but they provide no response. +StageDefinitionPanel.stopReviewOnHelp=What outcomes will prevent a case from being advanced to the next stage? Usually you need not change the default value. If necessary, you could do that through the XML configuration. +StageDefinitionPanel.configurationHelpLabel=For more information about configuring certification campaign stages, please see also +StageDefinitionPanel.configurationHelpLink=this document +NameStep.configurationWillBeLost=The selected connector configuration schema is different from the current one. Configuration properties will be lost if you will proceed. +resultsHandlerConfiguration=Results handlers +enableFilteredResultsHandler=Enable additional filtering of results +enableFilteredResultsHandlerHelp=This handler filters results retrieved from the resource by the connector, at the level of connector framework. It is used by connector implementations that do not provide complete filtering by themselves. Enabling this handler has some drawbacks e.g. in the area of paging. So it is to be used only if really necessary. If not sure, it is advisable to use filtering in validation mode. Default value for current version of ConnId: enabled. +filteredResultsHandlerInValidationMode=Perform filtering in validation mode only +filteredResultsHandlerInValidationModeHelp=Switches the result filtering into validation mode: all data produced by the connector are checked by the connector framework to see if they are properly filtered. In case of improper filtering, an exception is raised. This mode is to be used for connectors that are expected to provide complete filtering, but their functionality in this area has to be verified. Default value for current version of ConnId: disabled. +enableCaseInsensitiveFilter=Make filtering case insensitive +enableCaseInsensitiveFilterHelp=This option makes filtering case insensitive, for all attributes on the resource. Used for case-insensitive resources. Default value for current version of ConnId: disabled. +enableNormalizingResultsHandler=Enable handler that normalizes returned data +enableNormalizingResultsHandlerHelp=This handler normalizes each attribute that is passed from resource to the system. Usually recommended to be turned off. Default value for current version of ConnId: enabled. +enableAttributesToGetSearchResultsHandler=Enable 'attributes to get' results handler +enableAttributesToGetSearchResultsHandlerHelp=This handler is used to implement 'attributes to get' option. It is advisable to keep the default setting of 'enabled' (in current version of ConnId). +PageResourceWizard.autoSaveWarning=The resource is automatically saved on each transition between wizard steps. +PageResourceWizard.readOnlyNote=Resource is in read-only mode. +PageResourceWizard.readOnlySwitch=Click here to enable editing. +operation.com.evolveum.midpoint.web.page.admin.users.component.TreeTablePanel.recompute=Recompute (GUI) +Button.ok=OK +Button.assign=Assigner +Note=Note +Warning=Alerte +ProfilingConfigPanel.profilingMustBeEnabled=In order to use profiling, the 'profilingEnabled' system configuration parameter (in config.xml file) must be set to 'true'. +OperationResultPanel.result=Result +ResourceTasksPanel.definedTasks=Defined tasks +ResourceTasksPanel.noTasksSelected=No tasks were selected. +ObjectBrowserPanel.chooseObject=Choose object +TypedAssignablePanel.selectObjects=Sélectionnez un objet +OrgTreeAssignablePanel.selectOrg=Select organization(s) +ChooseFocusTypeDialogPanel.chooseType=Choose type +TestConnectionResultPanel.testConnection.result=Test connection result(s) +TestConnectionResultPanel.message=Test is running, please, wait for results. +operation.com.evolveum.midpoint.web.page.admin.configuration.PageSystemConfiguration.updateSystemConfiguration=Update system configuration (GUI) +peration.com.evolveum.midpoint.web.page.admin.server.PageTaskEdit.saveTask=Save task (GUI) +operation.com.evolveum.midpoint.notifications.impl.notifiers.GeneralNotifier.processEvent=Process event (Notification) +operation.com.evolveum.midpoint.model.impl.lens.ChangeExecutor.execute.focus.OrgType=Execute OrgType (Model) +TreeTablePanel.menu.deleteMember.confirm=All selected members (users, organizations, services, roles) will be permanently deleted from system. Are you sure to perform this action? +TreeTablePanel.menu.deleteAllMembers.confirm=All focus members (users, organizations, services, roles) will be permanently deleted from system. Are you sure to perform this action? +PageTasksCertScheduling.title=Certification scheduling +PageResourceVisualization.title=Visualization of mappings for {0} +PageResourceVisualization.dotMessage=Rendering of DOT graph could not be carried out. Please check the error message below, and make sure that: +PageResourceVisualization.dot1=DOT rendering software is installed at your server. The recommended one is Graphviz +PageResourceVisualization.dot2=The path to DOT rendering executable is correctly set in you config.xml file. +PageResourceVisualization.moreInformation=For more information, please see +PageResourceVisualization.moreInformationLink=this article +PageResourceVisualization.errorMessage=Error message: +PageResourceVisualization.seeOnline=You can also try to use an online DOT renderer, for example +PageResourceVisualization.seeOnlineLink=webgraphviz.com +PageResourceVisualization.copyInstruction=Simply paste the following DOT code into it. +OrgMemberPanel.editUserTitle=Edit/View details +OrgMemberPanel.unlinkTitle=Unlink manager +OrgMemberPanel.deleteTitle=Delete manager +PagePreviewChanges.title=Preview changes +operation.com.evolveum.midpoint.web.page.admin.PageAdminObjectDetails.previewChanges=Preview changes +operation.com.evolveum.midpoint.task.api.Task.run=Run task +operation.com.evolveum.midpoint.web.util.TaskOperationUtils.runNowTask=Run task +operation.com.evolveum.midpoint.web.page.admin.certification.PageCertDefinition.saveDefinition=Save definition +operation.com.evolveum.midpoint.web.page.admin.certification.PageCertCampaign.advanceLifecycle=Campaign state +operation.com.evolveum.midpoint.web.page.admin.certification.PageCertCampaign.openNextStage=Open next stage +operation.com.evolveum.midpoint.web.page.admin.certification.PageCertCampaign.closeStage=Close stage +operation.com.evolveum.midpoint.web.page.admin.certification.PageCertCampaign.closeCampaign=Close campaign +operation.com.evolveum.midpoint.web.page.admin.certification.PageCertCampaign.startRemediation=Start remediation +operation.com.evolveum.midpoint.web.page.admin.cases.PageCaseWorkItem.closeCaseWorkItem=Close Case +operation.com.evolveum.midpoint.web.page.admin.cases.PageCase.saveCase=Case saved + +operation.com.evolveum.midpoint.certification.api.CertificationManager.openNextStage=Open next stage +operation.com.evolveum.midpoint.certification.api.CertificationManager.closeCampaign=Close campaign +operation.com.evolveum.midpoint.certification.api.CertificationManager.createCampaign=Create campaign +operation.com.evolveum.midpoint.certification.api.CertificationManager.closeCurrentStage=Close current stage +operation.com.evolveum.midpoint.certification.api.CertificationManager.recordDecision=Record decision +operation.com.evolveum.midpoint.certification.api.CertificationManager.searchDecisionsToReview=Search decisions to review +operation.com.evolveum.midpoint.certification.api.CertificationManager.getCampaignStatistics=Get campaign statistics + +operation.com.evolveum.midpoint.repo.api.RepositoryService.searchContainers=Search for containers +operation.com.evolveum.midpoint.repo.api.RepositoryService.searchObjectsIterative=Search for objects (iterative) + +operation.PageCertCampaigns.startCampaign=Start campaign +operation.PageCertCampaigns.closeStage=Close stage +operation.PageCertCampaigns.openNextStage=Open next stage +operation.PageCertCampaigns.startRemediation=Start remediation +operation.PageCertCampaigns.closeCampaign=Close campaign + +operation.com.evolveum.midpoint.web.page.admin.certification.PageCertDecisions.recordAction=Record action +operation.com.evolveum.midpoint.web.page.admin.certification.PageCertDecisions.recordActionSelected=Record selected actions + +operation.com.evolveum.midpoint.web.page.admin.certification.PageCertDefinition.loadDefinition=Load definition + +operation.com.evolveum.midpoint.web.page.admin.certification.PageCertDefinitions.createCampaign=Create campaign +operation.com.evolveum.midpoint.web.page.admin.certification.PageCertDefinitions.deleteDefinition=Delete definition + +SceneDto.unnamed=(unnamed) +LockoutStatusPanel.undoButtonLabel=Undo +LockoutStatusPanel.unlockButtonLabel=Set to "Normal" +LockoutStatusPanel.changesSaving=(will be applied after Save button click) +operation.com.evolveum.midpoint.web.page.admin.server.PageTaskEdit.saveTask=Save task (GUI) +operation.com.evolveum.midpoint.web.page.admin.users.PageUsers.unlockUsers=Unlock user +operation.com.evolveum.midpoint.web.page.admin.workflow.PageProcessInstances.stopProcessInstance=Stop process instance + +#values for icon title on Users list page. The name of the property key +#is generated in the following way: +# ColumnUtils.getUserIconColumn.createTitleModel. + GuiStyleConstants.CLASS_ICON_STYLE_NORMAL = ColumnUtils.getUserIconColumn.createTitleModel.normal +ColumnUtils.getUserIconColumn.createTitleModel.normal=normal +ColumnUtils.getUserIconColumn.createTitleModel.disabled=disabled +ColumnUtils.getUserIconColumn.createTitleModel.archived=archived +ColumnUtils.getUserIconColumn.createTitleModel.privileged=privileged +ColumnUtils.getUserIconColumn.createTitleModel.end-user=end-user +ColumnUtils.getUserIconColumn.createTitleModel.manager=manager +ColumnUtils.getUserIconColumn.createTitleModel.broken=broken +ColumnUtils.getUserIconColumn.createTitleModel.up=up +ColumnUtils.getUserIconColumn.createTitleModel.down=down +FocusListInlineMenuHelper.menu.delete=Effacer +FocusListInlineMenuHelper.menu.disable=Disable +FocusListInlineMenuHelper.menu.enable=Enable +FocusListInlineMenuHelper.menu.reconcile=Reconcile +FocusListInlineMenuHelper.message.deleteObjectConfirm=Do you really want to delete selected {0} object(s)? +FocusListInlineMenuHelper.message.deleteObjectConfirmSingle=Do you really want to delete object '{0}'? +FocusListInlineMenuHelper.message.nothingSelected=No object has been selected. +operation.com.evolveum.midpoint.web.page.admin.roles.PageRoles.enableObjects=Enable roles (GUI) +operation.com.evolveum.midpoint.web.page.admin.roles.PageRoles.enableObject=Enable role (GUI) +operation.com.evolveum.midpoint.web.page.admin.roles.PageRoles.disableObjects=Disable roles (GUI) +operation.com.evolveum.midpoint.web.page.admin.roles.PageRoles.disableObject=Disable role (GUI) +operation.com.evolveum.midpoint.web.page.admin.roles.PageRoles.reconcileObjects=Reconcile roles (GUI) +operation.com.evolveum.midpoint.web.page.admin.roles.PageRoles.reconcileObject=Reconcile role (GUI) +operation.com.evolveum.midpoint.web.page.admin.roles.PageRoles.deleteObjects=Delete roles (GUI) +operation.com.evolveum.midpoint.web.page.admin.roles.PageRoles.deleteObject=Delete role (GUI) +operation.com.evolveum.midpoint.web.page.admin.services.PageServices.enableObjects=Enable services (GUI) +operation.com.evolveum.midpoint.web.page.admin.services.PageServices.enableObject=Enable service (GUI) +operation.com.evolveum.midpoint.web.page.admin.services.PageServices.disableObjects=Disable services (GUI) +operation.com.evolveum.midpoint.web.page.admin.services.PageServices.disableObject=Disable service (GUI) +operation.com.evolveum.midpoint.web.page.admin.services.PageServices.reconcileObjects=Reconcile services (GUI) +operation.com.evolveum.midpoint.web.page.admin.services.PageServices.reconcileObject=Reconcile service (GUI) +operation.com.evolveum.midpoint.web.page.admin.services.PageServices.deleteObjects=Delete services (GUI) +operation.com.evolveum.midpoint.web.page.admin.services.PageServices.deleteObject=Delete service (GUI) +operation.com.evolveum.midpoint.web.page.admin.resources.ResourceContentTabPanel.importObject=Import object (GUI) +PageConnectorHosts.title=Connector hosts +operation.com.evolveum.midpoint.web.page.admin.configuration.PageRepositoryQuery.checkQuery=Check query (GUI) +operation.com.evolveum.midpoint.web.page.admin.configuration.PageRepositoryQuery.translateQuery=Translate query (GUI) +operation.com.evolveum.midpoint.web.page.admin.configuration.PageRepositoryQuery.executeQuery=Execute query (GUI) +operation.com.evolveum.midpoint.model.api.ModelDiagnosticService.executeRepositoryQuery=Execute repository query (Model diagnostic service) +operation.com.evolveum.midpoint.repo.api.RepositoryService.executeQueryDiagnostics=Execute query diagnostics (Repository) +PageEvaluateMapping.title=Evaluate mapping +PageEvaluateMapping.button.evaluateMapping=Evaluate mapping +PageEvaluateMapping.message.emptyString=Please provide a mapping to execute. +PageEvaluateMapping.result=Result +PageEvaluateMapping.mapping=Mapping +PageEvaluateMapping.request=Requête +PageEvaluateMapping.chooseSample=Or use a sample: +PageEvaluateMapping.sample.FullName_NoDelta=Full name mapping (no change) +PageEvaluateMapping.sample.FullName_Delta=Full name mapping (change in givenName) +PageEvaluateMapping.sample.FullName_Delta_Ref=Full name mapping (change in givenName); source from repository +PageEvaluateMapping.sample.FullName_Delta_Cond=Full name mapping with condition (change in givenName) +PageEvaluateMapping.sample.OrgName=Deriving attribute from parent org's name +PageAssignmentShoppingKart.title=Assignment request +PageAssignmentShoppingKart.roleCatalogIsNotConfigured=Role catalog is not configured in the system configuration xml +AssignmentConflictPanel.existingAssignmentLabelMessage=(which user already has) +AssignmentConflictPanel.addedAssignmentLabelMessage=(which is added to shopping cart) +AssignmentConflictPanel.conflictMessage=conflicts with +AssignmentConflictPanel.removeButton=Remove +AssignmentConflictPanel.unselectButton=Unselect +AssignmentConflictPanel.undoAction=Undo +PageAssignmentConflicts.title=Assignments conflicts +PageAssignmentConflicts.back=Retour +PageAssignmentConflicts.submit=Submit +AssignmentCatalogPanel.selectTargetUser=Select target user +AssignmentCatalogPanel.selectSourceUser=Select assignments source user +AssignmentCatalogPanel.sourceUserSelected=Assignments of {0} +AssignmentCatalogPanel.selectAssignmentsUserOwner=Select assignments user owner +AssignmentCatalogPanel.requestForMe=Target user: me +AssignmentCatalogPanel.requestFor=Target user: {0} +AssignmentCatalogPanel.requestForMultiple={0} target users selected +AssignmentCatalogPanel.assignmentsOwner={0}'s assignments +MultiButtonPanel.plusIconTitle=Add item to shopping cart +MultiButtonPanel.assignmentDetailsPopupTitle=Assignment details +MultiButtonPanel.detailsLink=Propriétés +MultiButtonPanel.addToCartLink=Add to cart +MultiButtonPanel.alreadyAssignedIconTitle=Assigned as +PageAssignmentDetails.title=Assignment details +PageAssignmentDetails.backButton=Retour +PageAssignmentDetails.addToCartButton=Add to cart +PageAssignmentsList.submitButton=Submit +PageAssignmentsList.resolveConflicts=Resolve conflicts +PageAssignmentsList.commentHere=Comment here... +PageAssignmentsList.requestComment=Request comment (optional) +PageAssignmentsList.saveAssignmentsError=Could not save assignments. Reason: +AssignmentShoppingCartPanel.treeTitle=Role catalog +AssignmentViewType.ROLE_CATALOG_VIEW=Role catalog view +AssignmentViewType.ROLE_TYPE=All roles view +AssignmentViewType.ORG_TYPE=All organizations view +AssignmentViewType.SERVICE_TYPE=All services view +AssignmentViewType.USER_TYPE=User's assignments +PageAssignmentsList.requestButton = Requête +operation.com.evolveum.midpoint.web.page.self.PageAssignmentsList.requestAssignments=Request assignment +com.evolveum.midpoint.web.page.self.PageAssignmentsList.requestAssignments=Request assignments +PageAssignmentsList.title=New assignments list +PageAuditLogViewer.title=Audit Log Viewer +PageAuditLogViewer.menuName=Audit Log Viewer +PageAuditLogViewer.timeLabel=Time +PageAuditLogViewer.fromLabel=De +PageAuditLogViewer.toLabel=A +PageAuditLogViewer.initiatorNameLabel=Initiator +PageAuditLogViewer.channelLabel=Channel +PageAuditLogViewer.hostIdentifierLabel=Host Identifier +PageAuditLogViewer.targetNameLabel=Cible +PageAuditLogViewer.targetTypeLabel=Target Type +PageAuditLogViewer.targetOwnerNameLabel=Target Owner +PageAuditLogViewer.eventTypeLabel=Type d'événement +PageAuditLogViewer.eventTypeShortLabel=Type +PageAuditLogViewer.eventStageLabel=Event Stage +PageAuditLogViewer.eventStageShortLabel=Stage +PageAuditLogViewer.outcomeLabel=Outcome +PageAuditLogViewer.changedItem=Item changed +PageAuditLogViewer.valueRefTargetNamesLabel=Reference Target +AuditLogViewerPanel.dateValidatorMessage=From date must be before To date. +AuditLogViewerPanel.resetSearchButton=Reset search +AuditEventRecordType.timestamp=Time +AuditEventRecordType.initiatorRef=Initiator +AuditEventRecordType.taskIdentifier=Task Identifier +AuditEventRecordType.channel=Channel +AuditEventRecordType.delta=Delta +AuditEventRecordType.targetRef=Cible +AuditEventRecordType.targetOwnerRef=Target owner +PageAuditLogDetails.title=Audit Log Details +PageAuditLogDetails.eventTimestamp=Timestamp +PageAuditLogDetails.eventIdentifier=Event Identifier +PageAuditLogDetails.eventType=Type d'événement +PageAuditLogDetails.eventStage=Event Stage +PageAuditLogDetails.eventInitiatorRef=Initiator +PageAuditLogDetails.eventAttorneyRef=Attorney +PageAuditLogDetails.eventTargetRef=Target ref. +PageAuditLogDetails.eventTargetOwnerRef= Target Owner ref. +PageAuditLogDetails.eventResult=Result +PageAuditLogDetails.eventOutcome=Outcome +PageAuditLogDetails.sessionIdentifier=Session Identifier +PageAuditLogDetails.taskIdentifier=Task Identifier +PageAuditLogDetails.taskOID=Task oid +PageAuditLogDetails.hostIdentifier=Host Identifier +PageAuditLogDetails.nodeIdentifier=Node +PageAuditLogDetails.remoteHostAddress=Remote Host +PageAuditLogDetails.channel=Channel +PageAuditLogDetails.parameter=Parameter +PageAuditLogDetails.message=Message +PageAuditLogDetails.deltaKey=Delta List +ObjectDeltaOperationType.resourceName=Resource name +ObjectDeltaOperationType.objectName=Object name +ObjectDeltaOperationType.executionResult=Execution result +PageMergeObjects.noMergeResultObjectWarning=Merge preview object wasn't found +PageMergeObjects.title=Merge objects +PageMergeObjects.tabTitle=Merge preview +PageMergeObjects.switchDirectionButton=Switch direction +PageMergeObjects.mergeButton=Merge +PageMergeObjects.mergeDeltaPreviewButton=Merge delta preview +PageMergeObjects.backButton=Retour +PageMergeObjects.mergeType=Merge type +MergeObjectsPanel.switchDirection=Switch direction +MergeType.DEFAULT=default +MergeType.EXPRESSION=expression +MergeType.ALL_RIGHT=allRight +MergeType.ALL_LEFT=allLeft +MergeType.EMPTY=empty +PageMergeObjects.warningMessage=Two objects' oids should be specified +PageSelfRegistration.back=Retour +PageSelfRegistration.register=Register +PageSelfRegistration.registration.success=Registration was successful +PageSelfRegistration.registration.error=Registration failed : {0} +PageSelfRegistration.registration.confirm.message=Congratulation! \n\n\n You have been successfully registered. To activate your account check your email and confirm your registration. +PageRegistrationConfirmation.confirmation.error=Failed to confirm your registration. We are sorry, but probably you'll need to contact system administrator. +PageRegistrationConfirmation.continueToLogin=Continue to login page +PageRegistrationConfirmation.confirmation.successful=Confirmation successful +PageSelfRegistration.title=Registration +PageRegistrationConfirmation.title=Confirm registration +PageSelfRegistration.reload=Reload +PageSelfRegistration.captcha.validation.failed=CAPTCHA validation failed, try again +ObjectType.name=Nom +ObjectType.subType=Subtype +ObjectType.lifecycleState=Lifecycle state +ObjectType.description=Description +CaseType.objectRef=Objet +CaseType.targetRef=Cible +CaseType.objectChange=Object Delta +CaseType.state=État +CaseType.outcome=Outcome +CaseType.closeTimestamp=Close Timestamp +CaseType.event=Event +CaseType.workItem=Work Item +CaseType.jpegPhoto=Evidence +AbstractWorkItemType.assigneeRef=Assignee +AbstractWorkItemType.originalAssigneeRef=Original Assignee +AbstractWorkItemType.deadline=Deadline +AbstractWorkItemType.performerRef=Performer +AbstractWorkItemType.closeTimestamp=Fermé +PageUserHistory.title='{0}' historical data {1} +PageXmlDataReview.title=Historical data +PageXmlDataReview.aceEditorPanelTitle='{0}' historical xml data {1} +PageLogin.selfRegistration=Sign up +PageSelfRegistration.registration.failed.unsatisfied.registration.configuration=Registration process not allowed. Please contact system administrator. +ObjectHistoryTabPanel.viewHistoricalObjectDataTitle=View object data +ObjectHistoryTabPanel.viewHistoricalObjectXmlTitle=View object xml +PageRegistrationConfirmation.bad.credentials=Invalid username or password +PageSelfRegistration.invalid.registration.link=Registration link is not valid +PageSelfRegistration.welcome.message=Self Registration +PageSelfRegistration.additional.message=Welcome to MidPoint self registration +PageSelfRegistration.password.policy=Password that matches password policy. +PageResetPassword.reset.successful=New password was set successfully. Continue with login. +PageForgotPassword.form.submited.message=Confirmation link was sent to the email provided. To reset your password, click on the confirmation link and follow instructions. +pageForgetPassword.message.policy.not.found=Reset password not allowed +PageAbstractSelfCredentials.save.password.failed=Failed to change password: {0} +PageResetPassword.title=Reset password +PageResetPasswordConfirmation.title=Reset password confirmation +PageResetPasswordConfirmation.confirmation.error=Reset password is not allowed. We are sorry, but probably you'll need to contact system administrator. +PageResetPasswordConfirmation.authnetication.failed=Incorrect username and/or password +ItemPathSegmentPanel.itemToSearch=Search for {0} +DecisionDto.automaticallyApproved=(automatically approved) +DecisionDto.automaticallyRejected=(automatically rejected) +DecisionDto.approvedDueToTimeout=(approved due to the timeout) +DecisionDto.rejectedDueToTimeout=(rejected due to the timeout) +DecisionDto.AUTO_APPROVAL_CONDITION=(auto-approval condition) +DecisionDto.AUTO_COMPLETION_CONDITION=(auto-completion condition) +DecisionDto.NO_ASSIGNEES_FOUND=(no approvers found) +wf.comment=Comment +wf.object=Objet +wf.target=Cible +wf.originalAssignee=Original assignee +wf.currentAssignee=Current assignee(s) +wf.stageNumber=Stage number +wf.stageCount=Stage count +wf.stageName=Stage name +wf.stageDisplayName=Stage display name +wf.escalationLevelNumber=Escalation level number +wf.escalationLevelName=Escalation level name +wf.escalationLevelDisplayName=Escalation level display name +wf.workItemId=Work item ID +wf.processInstanceId=Process instance ID +wf.requesterComment=Requester comment +wf.causeType=Cause type +wf.causeName=Cause name +wf.causeDisplayName=Cause display name +PageAccountActivation.account.activation.successful=Activation of accounts was successful +PageAccountActivation.account.activation.failed=Failed to activate accounts. Please, contact system administrator +PageAccountActivation.activated.shadows=Activated shadows: +PageAccountActivation.button.activate=Activate +PageAccountActivation.activate.accounts.label=Account activation for user '{0}'. +PageAccountActivation.provide.password=Please, provide your password to activate accounts. +PageAccountActivation.title=Account activation +PageAccountActivation.nothing.to.activate=Unexpected problem occurs while trying to activate account. Please contact system administrator +PageAccountActivation.authentication.failed=Authentication failed +operation.com.evolveum.midpoint.web.page.admin.reports.PageCreatedReports.deleteReportOutput=Delete report (GUI) +operation.com.evolveum.midpoint.report.impl.ReportManagerImpl.deleteReportOutput=Delete report (Report) +operation.com.evolveum.midpoint.web.page.admin.reports.PageCreatedReports.downloadReport=Download report (GUI) +operation..com.evolveum.midpoint.report.impl.ReportManagerImpl.getReportOutputData=Load report (Report) +PageWorkItem.couldNotGetWorkItem=Couldn't get work item. It might have been already completed or deleted. +PageWorkItem.noRequest=Couldn't display the work item, as it is not associated with any approval request. Please execute 'Clean-up Activiti processes' if the problem persists. +PageCaseWorkItem.couldNotGetCase=Couldn't get case. It might have been already completed or deleted. +PageCaseWorkItem.couldNotGetCaseWorkItem=Couldn't get case work item. It might have been already completed or deleted. +CsvDownloadButtonPanel.export=CSV export +CsvDownloadButtonPanel.confirmationMessage=CSV export size is limited to {0} entries. Continue? +AssignmentEditorDto.policyRuleTitle=Policy rule +AssignmentDataTablePanel.targetColumnName=Cible +AssignmentDataTablePanel.validityColumnName=Validity +AssignmentDataTablePanel.organizationColumnName=Organisation +AssignmentDataTablePanel.tenantColumnName=Locataire +AssignmentDataTablePanel.lifecycleColumnName=LifecycleAssignmentsUtil.createAssignmentIconTitleModel(AssignmentDataTablePanel.this, rowModel.getObject().getType()) +AssignmentDataTablePanel.activationColumnName=Activation +AssignmentDataTablePanel.descriptionColumnName=Description +PolicyRulesPanel.imageTitle=Policy rule +PolicyRulesPanel.nameColumn=Nom +PolicyRulesPanel.constraintsColumn=Constraints +PolicyRulesPanel.situationColumn=Situation +PolicyRulesPanel.actionColumn=Action +PolicyRulesPanel.orderColumn=Ordre +PolicyRule.constraintsLabel=Constraints +PolicyRule.situationLabel=Situation +PolicyRule.actionLabel=Action +AbstractAssignmentDetailsPanel.doneButton=Done +ApprovalProcessesPreviewPanel.processRelatedTo=Approval process related to {0} +ApprovalProcessesPreviewPanel.process=Approval process +ApprovalProcessExecutionInformationPanel.approver=Approver +ApprovalProcessExecutionInformationPanel.performer=Performer +ApprovalProcessExecutionInformationPanel.attorney=Attorney +ApprovalProcessExecutionInformationPanel.stage=Stage +PageImportResource.title=Import resource definition +ObjectReferenceType.relation=Relation +FocusType.telephoneNumber=Telephone number +FocusType.consents=Consents +AbstractAssignmentDetailsPanel.properties=Propriétés +AssignmentPanel.doneButton=Done +AssignmentPanel.cancelButton=Annuler +AssignmentPanel.noName=n/a +ObjectPolicyConfigurationEditor.conflictResolution=(conflict resolution) +PageSelfConsents.title=Consents +SelfConsentPanel.button.revoke=Révoquer +SelfConsentPanel.button.agree=Agree +PageAdmin.menu.consent=Consents +MultiValueExpandablePanel.deleteConfirmationMessage=Do you really want to delete {0} item? +PolicyRulePropertiesPanel.exclusionConstraints=Add exclusion +PolicyRulePropertiesPanel.minAssigneesConstraints=minAssignees +PolicyRulePropertiesPanel.maxAssigneesConstraints=maxAssignees +PolicyRulePropertiesPanel.modification=modification +PolicyRulePropertiesPanel.assignmentConstraints=assignment +PolicyRulePropertiesPanel.timeValidityConstraints=timeValidity +PolicyRulePropertiesPanel.situationConstraints=situation +AbstractPolicyConstraintType.name=Nom +AbstractPolicyConstraintType.description=Description +AbstractPolicyConstraintType.enforcement=Enforcement +ExclusionPolicyConstraintType.targetRef=Target reference +ExclusionPolicyConstraintType.policy=Policy +ExclusionPolicyConstraintPanel.exclusionTitle=Exclusion +ValuePolicyBasicPanel.valuePolicy.name=Nom +ValuePolicyBasicPanel.valuePolicy.description=Description +comboInput.nullValid=Choose one +ContainerPanel.containerProperties=Propriétés +PageOperationResult.title=Résultat de l'opération +PageOperationResult.noResultAvailable=No operation result available. It was probably "deleted" via script hook. +PageInternals.tab.clock=Clock +PageInternals.tab.debugUtil=Debug util +PageInternals.tab.internalConfig=Internal configuration +PageInternals.tab.traces=Traces +PageInternals.tab.counters=Counters +PageAttorneySelection.title=User selection +PageWorkItemsAttorney.title=Attorney work items +PolicyConstraintsType.objectState=Object state +PolicyConstraintsType.assignmentState=État d'affectation +PolicyConstraintsType.hasAssignment=A une affectation +PolicyConstraintsType.hasNoAssignment=N'a pas d'affectation +PolicyConstraintsType.exclusion=Exclusion +PolicyConstraintsType.minAssignees=Min assignees +PolicyConstraintsType.maxAssignees=Max assignees +PolicyConstraintsType.objectMinAssigneesViolation=Object min assignees violation +PolicyConstraintsType.objectMaxAssigneesViolation=Object max assignees violation +PolicyConstraintsType.modification=Modification +PolicyConstraintsType.assignment=Affectation +PolicyConstraintsType.objectTimeValidity=Object time validity +PolicyConstraintsType.assignmentTimeValidity=Validité du temps d'affectation +PolicyConstraintsType.situation=Situation +PolicyConstraintsType.transition=Transition +PolicyConstraintsType.ref=Ref +AssignmentTypeDetailsPanel.containerTitle=Assignment details +ResourceObjectAssociationType.details=Association +ResourceAttributeDefinitionType.details=Attributs +ExpressionValuePanel.shadowRefValueTitle=Shadow reference +ExpressionValuePanel.literalValueTitle=Literal value +ExpressionValuePanel.associationTargetSearchTitle=Association Target Search Filter +ExpressionValuePanel.path=Path +ExpressionValuePanel.value=Valeur +ExpressionValuePanel.specifyExpression=Specify expression +ExpressionValuePanel.addValueButtonDefaultTitle=Add shadow reference value +ExpressionValuePanel.addValueButtonTargetSearchTitle=Add association target search +ExpressionValuePanel.addLiteralValueButton=Add literal value +ConstructionType.attribute=Attribute +ConstructionType.association=Association +operation.Recompute.ALL.members=Recompute all members +operation.Recompute.SELECTED.members=Recompute selected members +operation.Recompute.ALL_DIRECT.members=Recompute all direct members +operation.Remove.ALL.members=Remove all members +operation.Remove.SELECTED.members=Remove selected members +operation.Remove.ALL_DIRECT.members=Remove all direct members +operation.Remove.ALL.managers=Remove all managers +operation.Remove.SELECTED.managers=Remove selected managers +operation.Remove.ALL_DIRECT.managers=Remove all direct managers +operation.Add.members=Add members +operation.Remove.members=Remove members +ConstructionStrengthType.STRONG=Fort +ConstructionStrengthType.WEAK=Faible +RoleRelationSelectionPanel.approver=Approver +RoleRelationSelectionPanel.manager=Manager +RoleRelationSelectionPanel.owner=Propriétaire +TreeTablePanel.menu.unassignApproversSelected=Unassign selected approvers +TreeTablePanel.menu.unassignOwnersSelected=Unassign selected owners +TreeTablePanel.menu.unassignManagersSelected=Unassign selected managers +Button.cancel=Annuler +AssociationDetailsPanel.expressionPanel=Outbound expression +AssociationDetailsPanel.AssociationHeader=Association +RoleRelationSelectionPanel.select.relation=Select relations to process +operation.com.evolveum.midpoint.web.page.admin.workflow.PageWorkItem.delegateWorkItem=Delegate work item +AbstractRoleAssignmentPanel.relationLabel=Relation +AbstractRoleMainPanel.inducedEntitlements=Induced entitlements +CertCampaignStateFilter.ALL=All campaign states +CertCampaignStateFilter.NOT_CLOSED=Non fermé +CertCampaignStateFilter.CREATED=Créé +CertCampaignStateFilter.IN_REVIEW_STAGE=En phase de révision +CertCampaignStateFilter.REVIEW_STAGE_DONE=Phase de révision terminée +CertCampaignStateFilter.IN_REMEDIATION=En réhabilitation +CertCampaignStateFilter.CLOSED=Fermé +DisplayNamePanel.kindIntentLabel=Sorte: {0}, Objectif: {1} +pageAdminFocus.dataProtection=Data protection +PageInternals.title.cache=Caches +PageInternals.tab.cache=Gestion du cache +InternalsCachePanel.button.clearCaches=Effacer le cache +PageAccountActivation.user.not.found=Unexpected problem occurs. Please contact system administrator. diff --git a/gui/admin-gui/src/main/resources/localization/locale.properties b/gui/admin-gui/src/main/resources/localization/locale.properties index 0eac430109f..f2e50204a27 100644 --- a/gui/admin-gui/src/main/resources/localization/locale.properties +++ b/gui/admin-gui/src/main/resources/localization/locale.properties @@ -37,6 +37,9 @@ es.flag=es fi.name=Suomi fi.flag=fi +fr.name=Fran\u00E7ais +fr.flag=fr + hu.name=Magyar hu.flag=hu diff --git a/infra/schema/src/main/resources/localization/schema_fr.properties b/infra/schema/src/main/resources/localization/schema_fr.properties new file mode 100644 index 00000000000..dece0640750 --- /dev/null +++ b/infra/schema/src/main/resources/localization/schema_fr.properties @@ -0,0 +1,692 @@ +# Copyright (c) 2010-2017 Evolveum +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# +# This file contains localization keys that describe elements of the data +# model: object types, properties, container types, etc. +# It may also contain keys for concepts that are common to the whole midPoint +# +AbstractRoleType.identifier=Identifiant +AbstractRoleType.policyConstraints=Contraintes de stratégie +AccessCertificationCampaignStateType.CLOSED=Fermé +AccessCertificationCampaignStateType.CREATED=Créé +AccessCertificationCampaignStateType.IN_REMEDIATION=En réhabilitation +AccessCertificationCampaignStateType.IN_REVIEW_STAGE_FULL=En phase de révision {0} ({1}) +AccessCertificationCampaignStateType.IN_REVIEW_STAGE=En phase de révision +AccessCertificationCampaignStateType.REVIEW_STAGE_DONE_FULL=Phase de révision terminée {0} ({1}) +AccessCertificationCampaignStateType.REVIEW_STAGE_DONE=Phase de révision terminée +AccessCertificationResponseType.ACCEPT=Accepter +AccessCertificationResponseType.REVOKE=Révoquer +AccessCertificationResponseType.REDUCE=Réduire +AccessCertificationResponseType.NOT_DECIDED=Non décidé +AccessCertificationResponseType.DELEGATE=Déléguer +AccessCertificationResponseType.NO_RESPONSE=Pas de réponse +ActivationStatusType.ARCHIVED=Archivé +ActivationStatusType.DISABLED=Désactivé +ActivationStatusType.ENABLED=Activé +ActivationStatusType.null=Non défini +ActivationType.administrativeStatus=Statut administratif +ActivationType.effectiveStatus=Statut effectif +ActivationType.enabled=Activé +ActivationType.properties=Propriétés +ActivationType.title=Activation +ActivationType.validFrom=Valide à partir du +ActivationType.validTo=Valide jusqu'au +ActivityType.FOCUS_OPERATION=Operation on focus object (repository) +ActivityType.NOTIFICATIONS=Envoi des notifications +ActivityType.PROJECTOR=Computing projections of the focus object +ActivityType.RESOURCE_OBJECT_OPERATION=Operation on resource object +ActivityType.WORKFLOWS=Considering or starting approval workflows +AssignmentPolicyEnforcementType.FULL=Complet +AssignmentPolicyEnforcementType.LEGALIZE=Légaliser +AssignmentPolicyEnforcementType.MARK=Marque +AssignmentPolicyEnforcementType.NONE=Aucun +AssignmentPolicyEnforcementType.POSITIVE=Positive +AssignmentPolicyEnforcementType.RELATIVE=Relatif +AssignmentType.description=Description +AssignmentType.description.help=Free-form description of the assignment (comment). +AssignmentType.activation=Activation +AssignmentType.lifecycleState=Lifecycle state +AssignmentType.lifecycleState.help=Lifecycle state of the assignment. This property defines whether the assignment represents a draft, proposed definition, whether it is active, deprecated, and so on. +AssignmnetType.accepted=Accepted +AssignmentType.policyRule=Policy rule +AssignmentType.policyRule.help=Policy rule that should be applied to the target object. +AssignmentType.policySituation=Policy situation +AssignmentType.policySituation.help=The policy situation(s) of this assignment. The situations are result of evaluation of the policy rules. +AssignmentType.order=Ordre +AssignmentType.order.help=Order of the inducement. Simply speaking order specifies the number of assignments that the evaluation must traverse to apply the inducement. +AssignmentType.target=Cible +AssignmentType.target.help=Target of assignment or inducement. This is the role, org or service that is assigned. +AssignmentType.focusType=Focus type +AssignmentType.focusType.help=Type of focal object that this assignment/inducement applies to. E.g UserType, RoleType, OrgType, ... +AssignmentType.tenant=Locataire +AssignmentType.tenantReference=Tenant reference +AssignmentType.tenantReference.help=Reference to the tenant to which this assignment is associated with. This is an argument to the target of this assignment. E.g. is if frequently used to parametrize the role which is assigned by this assignment. +AssignmentType.orgReference=Organization reference +AssignmentType.orgReferenceShorten=Org. reference +AssignmentType.orgReference.help=Reference to the organization (org. unit, project, ...) which this assignment is associated with. This is an argument to the target of this assignment. E.g. is if frequently used to parametrize the role which is assigned by this assignment. +AttributeFetchStrategyType.EXPLICIT=Explicite +AttributeFetchStrategyType.IMPLICIT=Implicite +AttributeFetchStrategyType.MINIMAL=Minimal +AuditEventStageType.EXECUTION=Exécution +AuditEventStageType.REQUEST=Requête +AuditEventType.ADD_OBJECT=Ajouter objet +AuditEventType.CREATE_SESSION=Créer une session +AuditEventType.DELETE_OBJECT=Effacer objet +AuditEventType.EXECUTE_CHANGES_RAW=Execute changes raw +AuditEventType.GET_OBJECT=Obtenir un objet +AuditEventType.MODIFY_OBJECT=Modifier objet +AuditEventType.null=Tout +AuditEventType.RECONCILIATION=Réconciliation +AuditEventType.SYNCHRONIZATION=Synchronisation +AuditEventType.TERMINATE_SESSION=Terminer la session +AuditEventTypeType.ADD_OBJECT=Ajouter objet +AuditEventTypeType.CREATE_SESSION=Créer une session +AuditEventTypeType.DELETE_OBJECT=Effacer objet +AuditEventTypeType.EXECUTE_CHANGES_RAW=Execute changes raw +AuditEventTypeType.GET_OBJECT=Obtenir un objet +AuditEventTypeType.MODIFY_OBJECT=Modifier objet +AuditEventTypeType.null=Tout +AuditEventTypeType.RECONCILIATION=Réconciliation +AuditEventTypeType.SYNCHRONIZATION=Synchronisation +AuditEventTypeType.TERMINATE_SESSION=Terminer la session +AuditEventTypeType.WORKFLOW_PROCESS_INSTANCE=Workflow process instance +AuditEventTypeType.WORK_ITEM=Objet de travail +AuditEventType.WORKFLOW_PROCESS_INSTANCE=Workflow process instance +AuditEventType.WORK_ITEM=Objet de travail +OperationResultStatusType.FATAL_ERROR=Fatal Error +OperationResultStatusType.HANDLED_ERROR=Handled Error +OperationResultStatusType.IN_PROGRESS=In Progress +OperationResultStatusType.NOT_APPLICABLE=Not Applicable +OperationResultStatusType.PARTIAL_ERROR=Partial Error +OperationResultStatusType.SUCCESS=Réussi +OperationResultStatusType.UNKNOWN=Inconnu +OperationResultStatusType.WARNING=Alerte +BeforeAfterType.AFTER=Après +BeforeAfterType.BEFORE=Avant +Boolean.FALSE=Faux +Boolean.NULL=Non défini +Boolean.TRUE=Vrai +CapabilitiesType.activation=Activation +CapabilitiesType.activationStatus=Statut d'activation +CapabilitiesType.activationLockoutStatus=Verrouillage de l'activation +CapabilitiesType.activationValidity=Activation Validity +CapabilitiesType.credentials=Certificat +CapabilitiesType.password=Mot de passe +CapabilitiesType.liveSync=Sync en direct +CapabilitiesType.testConnection=Tester la connexion +CapabilitiesType.schema=Schéma +CapabilitiesType.create=Créer +CapabilitiesType.update=Mettre à jour +CapabilitiesType.addRemoveAttributeValues=Ajouter/Retirer des valeurs +CapabilitiesType.countObjects=Compter les objets +CapabilitiesType.delete=Effacer +CapabilitiesType.read=Lire +CapabilitiesType.auxiliaryObjectClasses=Auxiliary Object Classes +CapabilitiesType.pagedSearch=Paged Search +CapabilitiesType.script=Script +ChangeType.ADD=Ajouter +ChangeType.DELETE=Effacer +ChangeType.MODIFY=Modifier +ConnectorOperationalStatus.connectorClassName=Connector class name +ConnectorOperationalStatus.poolConfigMinSize=Minimum pool size +ConnectorOperationalStatus.poolConfigMaxSize=Maximum pool size +ConnectorOperationalStatus.poolConfigMinIdle=Minimum idle connectors +ConnectorOperationalStatus.poolConfigMaxIdle=Maximum idle connectors +ConnectorOperationalStatus.poolConfigWaitTimeout=Wait timeout +ConnectorOperationalStatus.poolConfigMinEvictableIdleTime=Minimum evictable idle time +ConnectorOperationalStatus.poolStatusNumIdle=Number of idle connectors +ConnectorOperationalStatus.poolStatusNumActive=Number of active connectors +AbstractConstructionType.description=Description +AbstractConstructionType.strength=Force +AbstractConstructionType.strength.help=Strength of the construction defines how aggressively will the construction be applied. +ConstructionType.kind=Sorte +ConstructionType.kind.help=Kind of resource object that should be created on the resource. +ConstructionType.intent=Objectif +ConstructionType.intent.help=Intent of resource object that should be created on the resource. +ConstructionType.auxiliaryObjectClass=Classe d'objet auxiliaire +ConstructionType.auxiliaryObjectClass.help=The reference to additional type definitions for this object. These auxiliary object classes will be added to the resource object when the construction is provisioned. +FocusType.activation=Activation +FocusType.assignment=Affectations +FocusType.inducement=Inducements +FocusType.delegations=Delegations +FocusType.delegatedToMe=Delegated to me +FocusType.displayName=Nom affiché +LockoutStatusType.LOCKED=Verrouillé +LockoutStatusType.NORMAL=Normal +LockoutStatusType.UNDEFINED=Non défini +LoggingComponentType.ALL=Tout +LoggingComponentType.GUI=Enregistreur graphique +LoggingComponentType.WEB=Enregistreur Web +LoggingComponentType.MODEL=Model logger +LoggingComponentType.NOTIFICATIONS = Notification logger +LoggingComponentType.PROVISIONING=Provisioning logger +LoggingComponentType.REPOSITORY=Repository logger +LoggingComponentType.RESOURCEOBJECTCHANGELISTENER=Resource object change listener logger +LoggingComponentType.TASKMANAGER=Task manager logger +LoggingComponentType.WORKFLOWS = Workflow logger +LoggingComponentType.ACCESS_CERTIFICATION = Access certification logger +LoggingComponentType.SECURITY = Security logger +LoggingLevelType.ALL=Tout +LoggingLevelType.DEBUG=Déboguer +LoggingLevelType.ERROR=Erreur +LoggingLevelType.INFO=Info +LoggingLevelType.OFF=Off +LoggingLevelType.TRACE=Trace +LoggingLevelType.WARN=Warn +MailTransportSecurityType.NONE=Aucun +MailTransportSecurityType.SSL=SSL +MailTransportSecurityType.STARTTLS_ENABLED=StartTLS enabled +MailTransportSecurityType.STARTTLS_REQUIRED=StartTLS required +MappingStrengthType.NORMAL=Normal +MappingStrengthType.STRONG=Fort +MappingStrengthType.WEAK=Faible +MisfireActionType.EXECUTE_IMMEDIATELY=Exécuter immédiatement +MisfireActionType.RESCHEDULE=Reprogrammer +NodeExecutionStatusType.COMMUNICATION_ERROR=Injoignable +NodeExecutionStatusType.DOWN=Turned off +NodeExecutionStatusType.ERROR=Erreur +NodeExecutionStatusType.PAUSED=Stoppé +NodeExecutionStatusType.RUNNING=En éxecution +ObjectType.description=Description +ObjectType.AbstractRoleType=Abstract role +ObjectType.AccessCertificationCampaignType=Access certification campaign +ObjectType.AccessCertificationDefinitionType=Access certification definition +ObjectType.AccountType=Compte +ObjectType.ConnectorType=Connecteur +ObjectType.ConnectorHostType=Connector host +ObjectType.FocusType=Focus +ObjectType.GenericObjectType=Objet générique +ObjectType.LookupTableType=Lookup table +ObjectType.NodeType=Node +ObjectType.ObjectType=Objet +ObjectType.ObjectTemplateType=Object template +ObjectType.OrgManagerType=Org. manager +ObjectType.OrgType=Organisation +ObjectType.ReportOutputType=Report output +ObjectType.ReportType=Signaler +ObjectType.ResourceType=Ressource +ObjectType.RoleType=Rôle +ObjectType.SecurityPolicyType=Security policy +ObjectType.SequenceType=Sequence +ObjectType.ShadowType=Shadow +ObjectType.SystemConfigurationType=Configuration du système +ObjectType.TaskType=Tâche +ObjectType.UserType=Utilisateur +ObjectType.ServiceType=Service +ObjectType.ValuePolicyType=Value policy +ObjectTypeLowercase.AbstractRoleType=abstract role +ObjectTypeLowercase.AccessCertificationCampaignType=access certification campaign +ObjectTypeLowercase.AccessCertificationDefinitionType=access certification definition +ObjectTypeLowercase.AccountType=account +ObjectTypeLowercase.ConnectorType=connector +ObjectTypeLowercase.ConnectorHostType=connector host +ObjectTypeLowercase.FocusType=focus +ObjectTypeLowercase.GenericObjectType=generic object +ObjectTypeLowercase.LookupTableType=lookup table +ObjectTypeLowercase.NodeType=node +ObjectTypeLowercase.ObjectType=object +ObjectTypeLowercase.ObjectTemplateType=object template +ObjectTypeLowercase.OrgManagerType=org. manager +ObjectTypeLowercase.OrgType=organization +ObjectTypeLowercase.ReportOutputType=report output +ObjectTypeLowercase.ReportType=report +ObjectTypeLowercase.ResourceType=resource +ObjectTypeLowercase.RoleType=role +ObjectTypeLowercase.SecurityPolicyType=security policy +ObjectTypeLowercase.SequenceType=sequence +ObjectTypeLowercase.ShadowType=shadow +ObjectTypeLowercase.SystemConfigurationType=system configuration +ObjectTypeLowercase.TaskType=task +ObjectTypeLowercase.UserType=user +ObjectTypeLowercase.ServiceType=service +ObjectTypeLowercase.ValuePolicyType=value policy +ObjectType.name=Nom +ObjectType.parentOrgRef=Parent org. units +OrgType.costCenter=Cost center +OrgType.displayName=Affichage du nom +OrgType.identifier=Identifiant +OrgType.mailDomain=Domaine de messagerie +OrgType.orgType=Org. type +OrgType.requestable=Requestable +OrgType.tenant=Locataire +OriginType.ACTIVATIONS=Activations +OriginType.ASSIGNMENTS=Affectations +OriginType.CREDENTIALS=Certificat +OriginType.INBOUND=Inbound +OriginType.null=- +OriginType.OUTBOUND=Outbound +OriginType.RECONCILIATION=Réconciliation +OriginType.SYNC_ACTION=Sync action +OriginType.USER_ACTION=User action +OriginType.USER_POLICY=User policy +AccessCertificationCaseOutcomeStrategyType.ONE_ACCEPT_ACCEPTS = Tout "accord" accepte +AccessCertificationCaseOutcomeStrategyType.ONE_DENY_DENIES = Tout "refus" refuse +AccessCertificationCaseOutcomeStrategyType.ACCEPTED_IF_NOT_DENIED = Accepté si personne ne rejette +AccessCertificationCaseOutcomeStrategyType.ALL_MUST_ACCEPT = Accepté uniquement si tous les relecteurs acceptent +AccessCertificationRemediationStyleType.AUTOMATED=Rapprochement automatique (les éléments non conformes sont automatiquement supprimés) +AccessCertificationRemediationStyleType.REPORT_ONLY=Rapprochement manuel (les éléments non conformes sont signalés) +PolicyConstraintEnforcementType.ENFORCE=Enforce +PolicyConstraintEnforcementType.REMEDIATE=Remediate +PolicyConstraintEnforcementType.REPORT=Signaler +ReportType.export=Exporter +ReportType.orientation=Orientation +ReportType.parent=Parent +ReportType.useHibernateSession=Use hibernate session +ReportType.virtualizer=Jasper virtualizer +ReportType.virtualizerKickOn=Virtualizer's pages kick-on +ReportType.maxPages=Nombre maximum de pages +ReportType.timeout=Execution timeout [ms] +ResourceObjectAssociationDirectionType.OBJECT_TO_SUBJECT=Object to subject +ResourceObjectAssociationDirectionType.SUBJECT_TO_OBJECT=Subject to object +ResourceObjectTypeDependencyStrictnessType.LAX=Lax +ResourceObjectTypeDependencyStrictnessType.RELAXED=Relaxed +ResourceObjectTypeDependencyStrictnessType.STRICT=Strict +ShadowType.dead=Dead +ShadowType.kind=Sorte +ShadowType.failedOperationType=Failed operation type +ShadowType.exists=Exists +ShadowType.intent=Objectif +ShadowType.objectClass=Classe d'objet +ShadowType.synchronizationSituation=Situation +ShadowKindType.ACCOUNT=Compte +ShadowKindType.ENTITLEMENT=Entitlement +ShadowKindType.GENERIC=Générique +SynchronizationSituationType.DELETED=Effacé +SynchronizationSituationType.DISPUTED=Disputed +SynchronizationSituationType.LINKED=Lié +SynchronizationSituationType.null=Choisir un +SynchronizationSituationType.UNLINKED=Unlinked +SynchronizationSituationType.UNMATCHED=Unmatched +ThreadStopActionType.CLOSE=Fermer +ThreadStopActionType.RESCHEDULE=Reprogrammer +ThreadStopActionType.RESTART=Redémarrer +ThreadStopActionType.SUSPEND=Suspendre +FocusType.emailAddress=E-mail +UserType.familyName=Nom de famille +UserType.fullName=Nom complet +UserType.givenName=Prénom +FailedOperationTypeType.ADD=Ajouter +FailedOperationTypeType.GET=Obtenir +FailedOperationTypeType.MODIFY=Modifier +FailedOperationTypeType.DELETE=Effacer +AbstractRoleType.description=Description +AbstractRoleType.displayName=Nom affiché +TaskType.kind=Sorte +TaskType.intent=Objectif +TaskType.objectClass=Classe d'objet +TaskType.executionStatus=Statut +ObjectTypes.CONNECTOR=Connecteur +ObjectTypes.CONNECTOR_HOST=Connector host +ObjectTypes.GENERIC_OBJECT=Objet générique +ObjectTypes.RESOURCE=Ressource +ObjectTypes.USER=Utilisateur +ObjectTypes.OBJECT_TEMPLATE=Object template +ObjectTypes.SYSTEM_CONFIGURATION=Configuration du système +ObjectTypes.TASK=Tâche +ObjectTypes.SHADOW=Shadow +ObjectTypes.ROLE=Role +ObjectTypes.PASSWORD_POLICY=Password policy +ObjectTypes.NODE=Node +ObjectTypes.ORG=Org +ObjectTypes.ABSTRACT_ROLE=Abstract role +ObjectTypes.FOCUS_TYPE=Focus type +ObjectTypes.REPORT=Signaler +ObjectTypes.REPORT_OUTPUT=Report output +ObjectTypes.SECURITY_POLICY=Security policy +ObjectTypes.LOOKUP_TABLE=Lookup table +ObjectTypes.ACCESS_CERTIFICATION_DEFINITION=Certification definition +ObjectTypes.ACCESS_CERTIFICATION_CAMPAIGN=Certification campaign +ObjectTypes.SEQUENCE=Sequence +ObjectTypes.SERVICE=Service +ObjectTypes.OBJECT=Objet +ObjectTypes.FORM=Form +ObjectTypes.CASE=Case +ObjectTypes.FUNCTION_LIBRARY=Function library +OrgType.parentOrganization=Parent Organization +ObjectType.extension=Extension +FocusType.assignmentKey=Affectation +FocusType.jpegPhoto=Jpeg photo +UserType.additionalName=Additional Name +UserType.nickname=Nickname +UserType.honorificPrefix=Honorific Prefix +UserType.honorificSuffix=Honorific Suffix +UserType.title=Title +FocusType.preferredLanguage=Langue préférée +FocusType.locale=Local +FocusType.timezone=Fuseau horaire +UserType.telephoneNumber=Telephone Number +UserType.employeeNumber=Employee Number +UserType.employeeType=Employee Type +FocusType.costCenter=Centre de coûts +UserType.organization=Organisation +UserType.organizationalUnit=Organizational Unit +FocusType.locality=Localité +UserType.credentials=Certificat +CredentialsType.password=Mot de passe +CredentialsType.securityQuestions=Security Questions +AssignmentType.assignment=Affectation +AssignmentType.target=Cible +AssignmentType.construction=Construction +AssignmentType.tenantReference=Tenant reference +AssignmentType.orgReference=Organization reference +ActivationType.activation=Activation +ActivationType.validityStatus=Validity Status +ActivationType.lockOutStatus=Lock-out Status +ActivationType.lockOutExpiration=Lock-out Expiration +ConnectorType.displayName=Nom affiché +ShadowType.activation=Activation +AbstractRoleType.inducement=Inducement +AbstractRoleType.requestable=Requestable +AbstractRoleType.riskLevel=Risk Level +AbstractRoleType.owner=Propriétaire +AbstractRoleType.approver=Approver +AbstractRoleType.idempotent=Idempotent +RoleType.roleType=Role Type +OrgType.type=Type +OrgType.isTenant=Is Tenant +OrgType.displayOrder=Display Order +OrgType.securityPolicy=Security Policy +OrgType.passwordPolicy=Password Policy +ServiceType.type=Type +ServiceType.displayOrder=Display Order +ServiceType.URL=URL +ResourceAttribute.connIdName=ConnId Name +ResourceAttribute.connIdUID=ConnId UID +ResourceValidator.noSchema=Resource schema is not available: {0} +ResourceValidator.multipleSynchronizationDefinitions=There are multiple synchronization definitions for kind/intent: {0}. +ResourceValidator.multipleSchemaHandlingDefinitions=There are multiple schema handling definitions for kind/intent: {0}. +ResourceValidator.multipleSchemaHandlingDefaultDefinitions=There are multiple schema handling definitions for kind "{0}" marked as default. +ResourceValidator.noDefaultAccountSchemaHandlingDefinition=There is no "account" schema handling definition marked as default. Unqualified assignments of this resource will not work. +ResourceValidator.missingObjectClass=Missing object class for schema handling definition: "{0}". +ResourceValidator.unknownObjectClass=Unknown object class "{1}" for schema handling definition: "{0}". +ResourceValidator.noSynchronizationDefinition=No synchronization definition for "{0}". +ResourceValidator.noSchemaHandlingDefinition=No schema handling definition for "{0}". +ResourceValidator.noAttributeName=Unnamed attribute in schema handling for "{0}". +ResourceValidator.unknownAttributeName=There is no attribute named "{1}" in object class "{2}" (defined in schema handling for "{0}"). +ResourceValidator.noAssociationName=Unnamed association in schema handling for "{0}". +ResourceValidator.collidingAssociationName=Association "{1}" collides with existing attribute in schema handling for "{0}". +ResourceValidator.wrongItemName=Illegal reference to attribute or association "{1}" in schema handling for "{0}". +ResourceValidator.noItemNamespace=No namespace in reference to attribute or association "{1}" in schema handling for "{0}". +ResourceValidator.missingAssociationTargetKind=Missing "target kind" property for association "{1}" in schema handling for "{0}". +ResourceValidator.missingAssociationTargetIntent=Missing "target intent" property for association "{1}" in schema handling for "{0}". +ResourceValidator.missingAssociationDirection=Missing "direction" property for association "{1}" in schema handling for "{0}". +ResourceValidator.missingAssociationAssociationAttribute=Missing "association attribute" property for association "{1}" in schema handling for "{0}". +ResourceValidator.missingAssociationValueAttribute=Missing "value attribute" property for association "{1}" in schema handling for "{0}". +ResourceValidator.wrongMatchingRule=Wrong matching rule for attribute "{1}" in schema handling for "{0}": {2} +ResourceValidator.multipleItems=There are multiple definitions for attribute or association "{1}" in "{0}". +ResourceValidator.dependentObjectTypeDoesNotExist=Dependent kind/intent "{1}" does not exist in a dependency of "{0}". +ResourceValidator.targetObjectTypeDoesNotExist=Target kind/intent "{1}" for association "{2}" does not exist in schema handling for "{0}". +ResourceValidator.suspiciousMappingSource=Suspicious source for {1} for "{2}" in schema handling for "{0}": {3} +ResourceValidator.invalidMappingSource=Invalid source for {1} for "{2}" in schema handling for "{0}": {3} +ResourceValidator.missingMappingSource=Missing source for {1} for "{2}" in schema handling for "{0}" +ResourceValidator.suspiciousMappingTarget=Suspicious target for {1} for "{2}" in schema handling for "{0}": {3} +ResourceValidator.invalidMappingTarget=Invalid target for {1} for "{2}" in schema handling for "{0}": {3} +ResourceValidator.missingMappingTarget=Missing target for {1} for "{2}" in schema handling for "{0}" +ResourceValidator.superfluousMappingTarget=Superfluous target for {1} for "{2}" in schema handling for "{0}": {3} +ResourceValidator.unknownObjectClassInSynchronization=Unknown object class "{1}" for synchronization definition: "{0}". +ResourceValidator.noReaction=No reaction defined in "{0}" for situation(s): {1} +ResourceValidator.duplicateReactions=Duplicate reactions defined in "{0}" for situation(s): {1} +ResourceValidator.noSituation=Missing synchronization situation name in a reaction defined in "{0}" +ResourceValidator.noCorrelationRule=No correlation rule for synchronization of "{0}" +ResourceValidator.outboundMapping=outbound mapping +ResourceValidator.inboundMapping=inbound mapping number {0} +AdminGuiConfigurationType.adminGuiConfiguration=Configuration de l'interface graphique d'administration +midPointVersion=${pom.version} +midPointRevision=${git.describe} +IdempotenceType.CONSERVATIVE=Conservative +IdempotenceType.AGGRESSIVE=Aggressive +IdempotenceType.NONE=Aucun +AdditionalInformationGenerator.exclusionsTitle=Exclusions to be approved +AdditionalInformationGenerator.assignmentOf=Affectation de {0} +AdditionalInformationGenerator.isInConflictWithAssignmentOf=est en conflit avec l'affectation de {0} +AdditionalInformationGenerator.notes=Notes +ExclusionPolicyType.ENFORCE=Enforce +ExclusionPolicyType.APPROVE=Approve +ExclusionPolicyType.REPORT=Signaler +TechnicalObjectSpecification={0} "{1}" (OID {2}) +ObjectSpecification={0} "{1}" +ObjectSpecificationWithPath={0} "{1}" ({2}) +DefaultPolicyConstraint.assignmentModification.toBeAdded=L'affectation de {0} (relation {1}) a été ajoutée +DefaultPolicyConstraint.assignmentModification.wasAdded=L'affectation de {0} (relation {1}) a été ajoutée +DefaultPolicyConstraint.assignmentModification.toBeDeleted=Assignment of {0} (relation {1}) is to be deleted +DefaultPolicyConstraint.assignmentModification.wasDeleted=L'affectation de {0} (relation {1}) a été supprimée +DefaultPolicyConstraint.assignmentModification.toBeModified=L'affectation de {0} (relation {1}) doit être modifiée +DefaultPolicyConstraint.assignmentModification.wasModified=L'affectation de {0} (relation {1}) a été modifiée +DefaultPolicyConstraint.objectModification.toBeAdded={0} is to be added +DefaultPolicyConstraint.objectModification.wasAdded={0} was added +DefaultPolicyConstraint.objectModification.toBeDeleted={0} is to be deleted +DefaultPolicyConstraint.objectModification.wasDeleted={0} was deleted +DefaultPolicyConstraint.objectModification.toBeModified={0} is to be modified +DefaultPolicyConstraint.objectModification.wasModified={0} was modified +PolicyConstraints.before=before operation +PolicyConstraints.after=after operation +DefaultPolicyConstraint.objectState.unnamed=Object state {0} matches constraint +DefaultPolicyConstraint.objectState.named=Object state {0} matches constraint "{1}" +DefaultPolicyConstraint.objectState.namedWithPath=L'état de l'objet {0} correspond à la contrainte "{1}" dans le chemin d'affectation {2} +# {0} = before/after, {1} target/path, {2} rule name +DefaultPolicyConstraint.assignmentState.unnamed=Assignment state {0} matches constraint ({1}) +DefaultPolicyConstraint.assignmentState.named=L'état d'affectation {0} correspond à la contrainte "{1}" ({2}) +DefaultPolicyConstraint.exclusion=Violation of SoD policy: {0} excludes {1}, they cannot be assigned at the same time +DefaultPolicyConstraint.hasAssignment=L'affectation existe pour {0} ({1}) +# {0} = type name, {1} = OID, {2} = before/after. TODO do something with the OID +DefaultPolicyConstraint.hasNoAssignment=Aucune affectation n'existe pour {0} {1} ({2}) +DefaultPolicyConstraint.multiplicityConstraint.min.object={0} requires at least {1} assignees with the relation of "{2}" +DefaultPolicyConstraint.multiplicityConstraint.max.object={0} requires at most {1} assignees with the relation of "{2}" +DefaultPolicyConstraint.multiplicityConstraint.min.target={0} requires at least {1} assignees with the relation of "{2}". The operation would result in {3} assignees. +DefaultPolicyConstraint.multiplicityConstraint.max.target={0} requires at most {1} assignees with the relation of "{2}". The operation would result in {3} assignees. +DefaultPolicyConstraint.and=All included constraints triggered +DefaultPolicyConstraint.or=At least one of included constraints triggered +DefaultPolicyConstraint.not=Included constraints have not triggered +DefaultPolicyConstraint.transition=Transition policy constraint matched +DefaultPolicyConstraint.situation=Situation policy constraint matched +PolicyViolationException.message.aggregate={0} policy violations occurred +PolicyViolationException.message.projectionPassword=Provided password does not satisfy password policies in {0}: {1} +PolicyViolationException.message.credentials.nonce=Provided nonce does not satisfy the policies: {0} +PolicyViolationException.message.credentials.password=Provided password does not satisfy the policies: {0} +PolicyViolationException.message.credentials.securityQuestions=Provided security questions do not satisfy the policies: {0} +Credentials.nonce=nonce +Credentials.password=password +Credentials.securityQuestions=security questions +ValuePolicy.minAgeNotReached=Minimal age was not yet reached. +ValuePolicy.valueRecentlyUsed=The value was recently used. +ValuePolicy.valueMustBePresent=The value must be present. +ValuePolicy.valuesMustBePresent=Au moins {0} valeurs doi(ven)t être présente(s). Nombre actuel de valeur: {1}. +ValuePolicy.minimalSizeNotMet=Minimal size ({0}) is not met (actual length: {1}). +ValuePolicy.maximalSizeExceeded=Maximal size ({0}) was exceeded (actual length: {1}). +ValuePolicy.minimalUniqueCharactersNotMet=Minimal count of unique characters ({0}) is not met (unique characters: {1}). +ValuePolicy.prohibitedValue=The value is prohibited. Choose a different one. +ValuePolicy.checkExpressionFailed=Check expression failed. +ValuePolicy.minimalOccurrenceNotMet=Minimal occurrence ({0}) of characters ({1}) is not met (occurrence of characters: {2}). +ValuePolicy.maximalOccurrenceExceeded=Maximal occurrence ({0}) of characters ({1}) was exceeded (occurrence of characters: {2}). +ValuePolicy.firstCharacterNotAllowed=First character is not from allowed set. Allowed set: {0}. +ValuePolicy.charactersNotAllowed=Characters [ {0} ] are not allowed in the value. +AbstractRoleType.dataProtection=Data protection +DataProtectionType.controllerName=Controller name +DataProtectionType.controllerContact=Controller contact +DataProtectionType.dpoContact=DPO contact +DataProtectionType.processingPurposesDescription=Processing purposes +DataProtectionType.legitimateInterestDescription=Legitimate interest +DataProtectionType.dataRecipientDescription=Data recipient +DataProtectionType.periodOfStorageDescription=Period of storage +DataProtectionType.automatedDecisionMakingDescription=Automated decision making +DataProtectionType.securityMeasuresDescription=Security measures +DataProtectionType.dataErasureDescription=Data erasure description +PolicyRuleEvaluationTargetType.OBJECT=Objet +PolicyRuleEvaluationTargetType.ASSIGNMENT=Affectation +PolicyRuleType.name=Nom +PolicyRuleType.name.help=Short name of the policy rule. It is used to identify the rule in user interface, logfiles, etc. +PolicyRuleType.description=Description +PolicyRuleType.description.help=Free-form description of the policy rule (comment). +PolicyRuleType.policyConstraints=Contraintes de stratégie +PolicyRuleType.policyConstraints.help=Policy constraints. When the constraints are violated then the policy rule is triggered and the action takes place. +PolicyRuleType.policySituation=Policy situation +PolicyRuleType.policySituation.help=Policy situation that is the result when this policy rule is triggered. If the situation is not explicitly stated then default situation will be selected instead. The situation is determined by the constraint that triggered the rule. +PolicyRuleType.policyActions=Policy actions +PolicyRuleType.policyActions.help=Action(s) that has to be takes as a reaction to this rule being triggered. +PolicyRuleType.evaluationTarget=Evaluation target +PolicyRuleType.evaluationTarget.help=Whether this rule has to be applied on an object or an assignment. Normally this is determined by looking at policy constraints. But this setting can be used to override that. +AbstractPolicyConstraintType.name=Nom +AbstractPolicyConstraintType.name.help=Short name of the policy constraint. It is used to identify the constraint in user interface, logfiles, etc. +AbstractPolicyConstraintType.description=Description +AbstractPolicyConstraintType.description.help=Free-form description of the policy constraint (comment). +AbstractPolicyConstraintType.presentation=Presentation +AbstractPolicyConstraintType.presentation.help=How should be triggering of this constraint presented, e.g. in enforcement messages, in approvals, in certification, in notifications, etc. +PolicyConstraintsType.objectState=Object state +PolicyConstraintsType.objectState.help=Constraint on a particular state of the object. +PolicyConstraintsType.assignmentState=État d'affectation +PolicyConstraintsType.assignmentState.help=Constraint on a particular state of an assignment. +PolicyConstraintsType.hasAssignment=A une affectation +PolicyConstraintsType.hasAssignment.help=Constraint requiring a particular assignment. +PolicyConstraintsType.hasNoAssignment=N'a pas d'affectation +PolicyConstraintsType.hasNoAssignment.help=Constraint forbidding a particular assignment. +PolicyConstraintsType.exclusion=Exclusion +PolicyConstraintsType.exclusion.help=Exclusion constraint. Constraint that forbids this object to be assigned together with other object. +PolicyConstraintsType.minAssignees=Minimum assignees +PolicyConstraintsType.minAssignees.help=Minimum number of assignees constraint. Number of objects (users) that have this role assigned must be higher or equal to prescribed value. +PolicyConstraintsType.maxAssignees=Maximum assignees +PolicyConstraintsType.maxAssignees.help=Maximum number of assignees constraint. Number of objects (users) that have this role assigned must be lower or equal to prescribed value. +PolicyConstraintsType.modification=Modification +PolicyConstraintsType.modification.help=Constraint that triggers when the object is modified. +PolicyConstraintsType.assignment=Affectation +PolicyConstraintsType.assignment=Affectation +PolicyConstraintsType.objectTimeValidity=Object time validity +PolicyConstraintsType.objectTimeValidity.help=A constraint that triggers when validity of an object or any of its time-sensitive items (e.g. password) is about to end. +PolicyConstraintsType.assignmentTimeValidity=Validité du temps d'affectation +PolicyConstraintsType.assignmentTimeValidity.help=A constraint that triggers when validity of an assignment or any of its time-sensitive items (e.g. password) is about to end. +PolicyConstraintsType.situation=Policy situation +PolicyConstraintsType.situation.help=Occurrence of the policy situation within an object or an assignment. +PolicyConstraintsType.transition=Transition +PolicyConstraintsType.transition.help=Specifies how the inner constraints are to be evaluated with regards to operation start and end state. +PolicyConstraintsType.ref=Référence +PolicyConstraintsType.ref.help=References another policy constraint e.g. by its name. +ExclusionPolicyConstraintType.targetRef=Cible +ExclusionPolicyConstraintType.targetRef.help=Target of exclusion. The object defining this "exclusion" and the object defined as target cannot be assigned at the same time. +PolicyActionsType.enforcement=Enforcement +PolicyActionsType.enforcement.help=This action stops the operation and results with the error. +PolicyActionsType.approval=Approbation +PolicyActionsType.approval.help=The operation will be suspended and the approval workflow will be started. If the workflow ends with success the operation will proceed. If the workflow ends with an error the operation will also end with an error. +PolicyActionsType.remediation=Remediation +PolicyActionsType.remediation.help=The operation will proceed. A workflow will be started to remediate the result of the operation after the operation is done. +PolicyActionsType.prune=Prune +PolicyActionsType.prune.help=The operation will proceed. Any other assignments that are in conflict with this assignment that triggered the rule will be "pruned": they will be removed. The removal of the conflicting assignments is automatic and silent. It will not be subject to approvals or other policy constraints. +PolicyActionsType.certification=Certification +PolicyActionsType.certification.help=The operation will proceed. The object will be scheduled for a certification campaign after the operation is done. +PolicyActionsType.notification=Notification +PolicyActionsType.notification.help=The operation will proceed. Notifications are sent at the end of the operation. +PolicyActionsType.record=Record +PolicyActionsType.record.help=The operation will proceed. Policy situation will be recorded for given object or assignment. +PolicyActionType.name=Nom +PolicyActionType.name.help=Short name of the policy action. It is used to identify the action in user interface, logfiles, etc. +PolicyActionType.description=Description +PolicyActionType.description.help=Free-form description of the policy action (comment). +PolicyActionType.condition=Conditions +PolicyActionType.condition.help=Condition specifying when should this action be applied. +ApprovalPolicyActionType.compositionStrategy=Composition strategy +ApprovalPolicyActionType.compositionStrategy.help=How should be this approval policy action composed with other ones that might be related to the same item (object or assignment). +ApprovalPolicyActionType.approvalDisplayName=Approval display name +ApprovalPolicyActionType.approvalDisplayName.help=Display name for this approval definition. If not specified, the name is derived from triggered constraints (short messages). +ApprovalPolicyActionType.approverRelation=Approver relation +ApprovalPolicyActionType.approverRelation.help=What relation(s) to use when determining approvers. E.g. "approver", "owner", "securityApprover", and so on. +ApprovalPolicyActionType.approverRef=Approver +ApprovalPolicyActionType.approverRef.help=Direct enumeration of the approvers to be used. +ApprovalPolicyActionType.approverExpression=Approver expression +ApprovalPolicyActionType.approverExpression.help=Expression(s) that yield approvers to be used. If specified, the expression(s) are evaluated and the result is used as a set of approvers (UserType, OrgType, RoleType, or any combination of them). +ApprovalPolicyActionType.approvalSchema=Approval schema +ApprovalPolicyActionType.approvalSchema.help=More complex (multi-stages) approval schema. +CertificationPolicyActionType.definitionRef=Definition +CertificationPolicyActionType.definitionRef.help=Certification definition(s) to be started as part of the action execution. +PolicyConstraintPresentationType.message=Message +PolicyConstraintPresentationType.message.help=Message to be conveyed to the user. +PolicyConstraintPresentationType.shortMessage=Message court +PolicyConstraintPresentationType.shortMessage.help=Very short message describing the situation. Could be used for e.g. notification messages subject, approval process or work item names. +PolicyConstraintPresentationType.longMessage=Message long +PolicyConstraintPresentationType.longMessage.help=Long, documentation-like explanation of the rule. +PolicyConstraintPresentationType.final=Final +PolicyConstraintPresentationType.final.help=If set to true, no embedded triggers will be presented. Use for hiding constraints that are to be considered too technical to be shown to user. +PolicyConstraintPresentationType.hidden=Hidden +PolicyConstraintPresentationType.hidden.help=If set to true, this trigger will be excluded from presentation. +PolicyConstraintPresentationType.displayOrder=Display order +PolicyConstraintPresentationType.displayOrder.help=Ordinal number that determines ordering of displayed messages. + +DefaultPolicyConstraint.Short.assignmentModification.toBeAdded=Assigning {0} to {1} +DefaultPolicyConstraint.Short.assignmentModification.wasAdded=Assigned {0} to {1} +DefaultPolicyConstraint.Short.assignmentModification.toBeDeleted=Unassigning {0} from {1} +DefaultPolicyConstraint.Short.assignmentModification.wasDeleted=Unassigned {0} from {1} +DefaultPolicyConstraint.Short.assignmentModification.toBeModified=Modification de l'affectation de {0} sur {1} +DefaultPolicyConstraint.Short.assignmentModification.wasModified=Affectation modifiée de {0} sur {1} +DefaultPolicyConstraint.Short.objectModification.toBeAdded=Adding {0} +DefaultPolicyConstraint.Short.objectModification.wasAdded=Added {0} +DefaultPolicyConstraint.Short.objectModification.toBeDeleted=Deleting {0} +DefaultPolicyConstraint.Short.objectModification.wasDeleted=Deleted {0} +DefaultPolicyConstraint.Short.objectModification.toBeModified=Modifying {0} +DefaultPolicyConstraint.Short.objectModification.wasModified=Modified {0} +DefaultPolicyConstraint.Short.objectState.unnamed=Matching state: {0} +DefaultPolicyConstraint.Short.objectState.named=Matching state: {0} ("{1}") +# {0} = before/after, {1} target/path, {2} rule name +DefaultPolicyConstraint.Short.assignmentState.unnamed=Matching state: assignment of {1} ({0}) +DefaultPolicyConstraint.Short.assignmentState.named=Matching state: assignment of {1} ({0}) ("{2}") +DefaultPolicyConstraint.Short.exclusion={0} excludes {1} +DefaultPolicyConstraint.Short.hasAssignment=L'affectation existe pour {0} ({1}) +DefaultPolicyConstraint.Short.hasNoAssignment=Aucune affectation n'existe pour {0} {1} ({2}) +DefaultPolicyConstraint.Short.multiplicityConstraint.min.object={0} requires at least {1} assignees ("{2}") +DefaultPolicyConstraint.Short.multiplicityConstraint.max.object={0} requires at most {1} assignees ("{2}") +DefaultPolicyConstraint.Short.multiplicityConstraint.min.target={0} requires at least {1} assignees ("{2}") +DefaultPolicyConstraint.Short.multiplicityConstraint.max.target={0} requires at most {1} assignees ("{2}") +DefaultPolicyConstraint.Short.and=All constraints triggered +DefaultPolicyConstraint.Short.or=At least one of constraints triggered +DefaultPolicyConstraint.Short.not=Constraints have not triggered +DefaultPolicyConstraint.Short.transition=Transition constraint matched +DefaultPolicyConstraint.Short.situation=Situation constraint matched +ApprovingAndExecuting.CreationOf=Approving and executing creation of {0} (started {1}) +ApprovingAndExecuting.DeletionOf=Approving and executing deletion of {0} (started {1}) +ApprovingAndExecuting.ChangeOf=Approving and executing change of {0} (started {1}) +PolicyRuleType.policyConstraints=Contraintes de stratégie +AssignmentType.policyRule=Policy rule +ShadowType.attributes=Attributs +ShadowType.association=Associations +MetadataType.requestTimestamp=Requested at +MetadataType.requestorRef=Requester +MetadataType.requestorComment=Requester comment +MetadataType.createTimestamp=Created at +MetadataType.creatorRef=Creator +MetadataType.createApproverRef=Creation approved by +MetadataType.createApprovalComment=Creation approval comments +MetadataType.createApprovalTimestamp=Creation approved at +MetadataType.createChannel=Creation channel +MetadataType.modifyTimestamp=Modified at +MetadataType.modifierRef=Modifier +MetadataType.modifyApproverRef=Last modification approved by +MetadataType.modifyApprovalComment=Modification approval comments +MetadataType.modifyApprovalTimestamp=Modification approved at +MetadataType.modifyChannel=Modification channel +MetadataType.lastProvisioningTimestamp=Last provisioning at +MetadataType.certificationFinishedTimestamp=Last certification finished at +MetadataType.certificationOutcome=Last certification outcome +MetadataType.certifierRef=Certifier +MetadataType.certifierComment=Certifier comment +MetadataType.originMappingName=Originating mapping name +MetadataType.createTaskRef=Créer par tâche +MetadataType.modifyTaskRef=Modifié par tâche +ResourceObjectAssociationType.ref=ref +relation.default=default +relation.manager=manager +relation.meta=meta +relation.deputy=deputy +relation.approver=approver +relation.owner=owner +relation.consent=consent +AbstractCredentialType.forceChange=Changement obligatoire à la prochaine connexion +PasswordType.value=Valeur +AdminGuiConfigurationType.enableExperimentalFeature=Activer les fonctionnalités expérimentales de l'interface graphique From 75b5c269e91e829499f04fcb5ccf7481b158c444 Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Fri, 13 Apr 2018 17:03:11 +0200 Subject: [PATCH 08/16] Fix greaterOrEqual/lessOrEqual dump (MID-4581) (cherry picked from commit f8f8691) --- .../prism/query/ComparativeFilter.java | 2 -- .../midpoint/prism/query/GreaterFilter.java | 2 +- .../midpoint/prism/query/LessFilter.java | 2 +- .../midpoint/prism/query/ValueFilter.java | 7 +++--- .../midpoint/schema/TestQueryConvertor.java | 10 ++++++++ .../queryconvertor/test305GreaterOrEqual.xml | 25 +++++++++++++++++++ 6 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 infra/schema/src/test/resources/queryconvertor/test305GreaterOrEqual.xml diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/ComparativeFilter.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/ComparativeFilter.java index 0bf4a87277a..4d49a7e09b7 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/ComparativeFilter.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/ComparativeFilter.java @@ -27,8 +27,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import javax.xml.namespace.QName; - public abstract class ComparativeFilter extends PropertyValueFilter { private boolean equals; diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/GreaterFilter.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/GreaterFilter.java index ea863fad7aa..119364a8937 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/GreaterFilter.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/GreaterFilter.java @@ -76,7 +76,7 @@ public GreaterFilter clone() { @Override protected String getFilterName() { - return "GREATER"; + return isEquals() ? "GREATER-OR-EQUAL" : "GREATER"; } @Override diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/LessFilter.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/LessFilter.java index 79f83b3eeed..084ca603749 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/LessFilter.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/LessFilter.java @@ -75,7 +75,7 @@ public LessFilter clone() { @Override protected String getFilterName() { - return "LESS"; + return isEquals() ? "LESS-OR-EQUAL" : "LESS"; } @Override diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/ValueFilter.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/ValueFilter.java index 471971b5c70..f5e55cbf8f9 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/ValueFilter.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/ValueFilter.java @@ -332,7 +332,8 @@ public String debugDump(int indent) { StringBuilder sb = new StringBuilder(); DebugUtil.indentDebugDump(sb, indent); sb.append(getFilterName()).append(":"); - return debugDump(indent, sb); + debugDump(indent, sb); + return sb.toString(); } @Override @@ -344,7 +345,7 @@ public String toString() { protected abstract String getFilterName(); - protected String debugDump(int indent, StringBuilder sb) { + protected void debugDump(int indent, StringBuilder sb) { sb.append("\n"); DebugUtil.indentDebugDump(sb, indent+1); sb.append("PATH: "); @@ -401,8 +402,6 @@ protected String debugDump(int indent, StringBuilder sb) { sb.append("MATCHING: "); sb.append(matchingRule); } - - return sb.toString(); } protected String toString(StringBuilder sb){ diff --git a/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestQueryConvertor.java b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestQueryConvertor.java index 9b0bf91d649..181d7eb2124 100644 --- a/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestQueryConvertor.java +++ b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestQueryConvertor.java @@ -548,6 +548,16 @@ public void test305GreaterLesserMatchingNorm() throws Exception { checkQueryRoundtripFile(UserType.class, q, TEST_NAME); } + @Test + public void test305GreaterOrEqual() throws Exception { + final String TEST_NAME = "test305GreaterOrEqual"; + displayTestTitle(TEST_NAME); + ObjectQuery q = QueryBuilder.queryFor(UserType.class, getPrismContext()) + .item(UserType.F_COST_CENTER).ge("100000") + .build(); + checkQueryRoundtripFile(UserType.class, q, TEST_NAME); + } + @Test public void test310AllComparisons() throws Exception { final String TEST_NAME = "test310AllComparisons"; diff --git a/infra/schema/src/test/resources/queryconvertor/test305GreaterOrEqual.xml b/infra/schema/src/test/resources/queryconvertor/test305GreaterOrEqual.xml new file mode 100644 index 00000000000..1c995027cfa --- /dev/null +++ b/infra/schema/src/test/resources/queryconvertor/test305GreaterOrEqual.xml @@ -0,0 +1,25 @@ + + + + + + + c:costCenter + 100000 + + + From 178b2acb8f81630ecb0dfa311f546ab3547f7a1d Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Fri, 13 Apr 2018 17:23:22 +0200 Subject: [PATCH 09/16] Fix compilation error --- .../com/evolveum/midpoint/prism/query/ComparativeFilter.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/ComparativeFilter.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/ComparativeFilter.java index 4d49a7e09b7..0bf4a87277a 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/ComparativeFilter.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/query/ComparativeFilter.java @@ -27,6 +27,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import javax.xml.namespace.QName; + public abstract class ComparativeFilter extends PropertyValueFilter { private boolean equals; From 3a363e82a87305012458507ff8571bc17ef3a1aa Mon Sep 17 00:00:00 2001 From: Michael Gruber Date: Wed, 11 Apr 2018 17:44:03 +0200 Subject: [PATCH 10/16] use givenName fixed documentation --- .../testing/story/TestReconNullValue.java | 199 +++++++++++++++--- .../recon-null-value/resource-opendj.xml | 9 +- 2 files changed, 180 insertions(+), 28 deletions(-) diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestReconNullValue.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestReconNullValue.java index b6abbb964de..f9e41f2e014 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestReconNullValue.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestReconNullValue.java @@ -26,21 +26,14 @@ import java.util.Collections; import java.util.List; -import javax.xml.namespace.QName; - import org.opends.server.types.DirectoryException; -import org.opends.server.types.Entry; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.ClassMode; import org.springframework.test.context.ContextConfiguration; -import org.testng.AssertJUnit; import org.testng.annotations.AfterClass; import org.testng.annotations.Test; -import com.evolveum.midpoint.util.exception.PolicyViolationException; -import com.evolveum.midpoint.prism.PrismContainer; import com.evolveum.midpoint.prism.PrismObject; -import com.evolveum.midpoint.prism.delta.ItemDelta; import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.prism.util.PrismAsserts; import com.evolveum.midpoint.prism.util.PrismTestUtil; @@ -54,15 +47,10 @@ import com.evolveum.midpoint.util.exception.CommunicationException; import com.evolveum.midpoint.util.exception.ConfigurationException; import com.evolveum.midpoint.util.exception.ExpressionEvaluationException; -import com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException; import com.evolveum.midpoint.util.exception.ObjectNotFoundException; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.exception.SecurityViolationException; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationStatusType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.ActivationType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.CredentialsType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType; -import com.evolveum.midpoint.xml.ns._public.common.common_3.PasswordType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowKindType; import com.evolveum.midpoint.xml.ns._public.common.common_3.ShadowType; @@ -71,13 +59,15 @@ /** * - * Recon should delete resourceAttribute + * Recon should delete resourceAttributes * - * Users and the roles being assigned in tests: - * User0: IT-Role-HR - - * + * resourceAttributes title and givenName have strong mappings + * title has source honorificPrefix + * givenName has source givenName * + * focus attributes honorificPrefix and/or givenName do not exist and resourceAttributes title and givenName are added manually + * -> reconcile should remove resourceAtributes + * as of git-v3.7.1-57-gc5757c3b0d this seems to work for honorificPrefix/title but not for givenName/givenName * * @author michael gruber * @@ -91,8 +81,6 @@ public class TestReconNullValue extends AbstractStoryTest { private static final String RESOURCE_OPENDJ_OID = "10000000-0000-0000-0000-000000000003"; private static final String RESOURCE_OPENDJ_NAMESPACE = MidPointConstants.NS_RI; - /// private static final QName OPENDJ_ASSOCIATION_GROUP_NAME = new - /// QName(RESOURCE_OPENDJ_NAMESPACE, "group"); public static final String ORG_TOP_OID = "00000000-8888-6666-0000-100000000001"; public static final String OBJECT_TEMPLATE_USER_OID = "10000000-0000-0000-0000-000000000222"; @@ -102,6 +90,7 @@ public class TestReconNullValue extends AbstractStoryTest { private static final String LDAP_INTENT_DEFAULT = "default"; private static final String ACCOUNT_ATTRIBUTE_TITLE = "title"; + private static final String ACCOUNT_ATTRIBUTE_GIVENNAME = "givenName"; private ResourceType resourceOpenDjType; @@ -187,6 +176,9 @@ public void test100CreateUsers() throws Exception { display("user0 after", user0After); dumpOrgTree(); + + assertShadowAttribute(user0After, ShadowKindType.ACCOUNT, LDAP_INTENT_DEFAULT, ACCOUNT_ATTRIBUTE_GIVENNAME, "givenName0"); + } @@ -197,7 +189,7 @@ public void test100CreateUsers() throws Exception { * */ @Test - public void test140AddHonorificPrefix() throws Exception { + public void test130AddHonorificPrefix() throws Exception { final String TEST_NAME = "test140AddHonorificPrefix"; displayTestTitle(TEST_NAME); @@ -207,6 +199,63 @@ public void test140AddHonorificPrefix() throws Exception { dummyAuditService.clear(); + //TODO: best way to set extension properties? + PrismObject userBefore = getObjectByName(UserType.class, USER_0_NAME); + display("User before", userBefore); + PrismObject userNewPrism = userBefore.clone(); + prismContext.adopt(userNewPrism); + UserType userNew = userNewPrism.asObjectable(); + userNew.setHonorificPrefix(new PolyStringType("Princess")); + + ObjectDelta delta = userBefore.diff(userNewPrism); + display("Modifying user with delta", delta); + + Collection> deltas = MiscSchemaUtil.createCollection(delta); + + // WHEN + displayWhen(TEST_NAME); + modelService.executeChanges(deltas, null, task, result); + + + // THEN + displayThen(TEST_NAME); + assertSuccess(result); + + PrismObject userAfter = getObjectByName(UserType.class, USER_0_NAME); + display("User after adding attribute honorificPrefix", userAfter); + + String accountOid = getLinkRefOid(userAfter, RESOURCE_OPENDJ_OID); + + // Check shadow + PrismObject accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result); + display("accountShadow after attribute deletion", accountShadow); + + // Check account + PrismObject accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result); + display("accountModel after attribute deletion", accountModel); + + assertShadowAttribute(userAfter, ShadowKindType.ACCOUNT, LDAP_INTENT_DEFAULT, ACCOUNT_ATTRIBUTE_GIVENNAME, "givenName0"); + assertShadowAttribute(userAfter, ShadowKindType.ACCOUNT, LDAP_INTENT_DEFAULT, ACCOUNT_ATTRIBUTE_TITLE, "Princess"); + + } + + /** + * delete honorificPrefix and givenName + * + * in resource account value for title and givenName should have been deleted + * + */ + @Test + public void test140dDeleteHonorificPrefixGivenName() throws Exception { + final String TEST_NAME = "test140dDeleteHonorificPrefixGivenName"; + displayTestTitle(TEST_NAME); + + // GIVEN + Task task = createTask(TEST_NAME); + OperationResult result = task.getResult(); + dummyAuditService.clear(); + + //TODO: best way to set extension properties? PrismObject userBefore = getObjectByName(UserType.class, USER_0_NAME); display("User before", userBefore); @@ -214,6 +263,7 @@ public void test140AddHonorificPrefix() throws Exception { prismContext.adopt(userNewPrism); UserType userNew = userNewPrism.asObjectable(); userNew.setHonorificPrefix(null); + userNew.setGivenName(null); ObjectDelta delta = userBefore.diff(userNewPrism); display("Modifying user with delta", delta); @@ -244,17 +294,18 @@ public void test140AddHonorificPrefix() throws Exception { display("accountModel after attribute deletion", accountModel); PrismAsserts.assertNoItem(accountModel, openDJController.getAttributePath(ACCOUNT_ATTRIBUTE_TITLE)); + PrismAsserts.assertNoItem(accountModel, openDJController.getAttributePath(ACCOUNT_ATTRIBUTE_GIVENNAME)); } /** - * remove title in Resoure Attributer - * - * in resource account value for title should have been removed + * add title in resource account (not using midpoint) + * do recompute + * in resource account value for title should have been removed again * */ - @Test //MID-4567 + @Test public void test150RemoveTitleRA() throws Exception { final String TEST_NAME = "test150RemoveTitleRA"; displayTestTitle(TEST_NAME); @@ -274,12 +325,16 @@ public void test150RemoveTitleRA() throws Exception { "changetype: modify\n"+ "add: title\n"+ "title: Earl"); - + + display("LDAP after addition"); + dumpLdap(); + // WHEN displayWhen(TEST_NAME); modelService.recompute(UserType.class, userBefore.getOid(), null, task, result); - + display("LDAP after reconcile"); + dumpLdap(); // THEN displayThen(TEST_NAME); @@ -301,6 +356,65 @@ public void test150RemoveTitleRA() throws Exception { PrismAsserts.assertNoItem(accountModel, openDJController.getAttributePath( ACCOUNT_ATTRIBUTE_TITLE)); + } + + /** + * add givenName in resource account (not using midpoint) + * do recompute + * in resource account value for givenName should have been removed again + * + */ + @Test //MID-4567 + public void test160AddGivenNameRA() throws Exception { + final String TEST_NAME = "test160AddGivenNameRA"; + displayTestTitle(TEST_NAME); + + // GIVEN + Task task = createTask(TEST_NAME); + OperationResult result = task.getResult(); + dummyAuditService.clear(); + + + //TODO: best way to set extension properties? + PrismObject userBefore = getObjectByName(UserType.class, USER_0_NAME); + display("User before", userBefore); + + + openDJController.executeLdifChange("dn: uid="+USER_0_NAME+",ou=people,dc=example,dc=com\n"+ + "changetype: modify\n"+ + "add: givenName\n"+ + "givenName: given0again"); + + display("LDAP after addition"); + dumpLdap(); + + // WHEN + displayWhen(TEST_NAME); + modelService.recompute(UserType.class, userBefore.getOid(), null, task, result); + + display("LDAP after reconcile"); + dumpLdap(); + + // THEN + displayThen(TEST_NAME); + assertSuccess(result); + + PrismObject userAfter = getObjectByName(UserType.class, USER_0_NAME); + display("User smack after adding attribute title", userAfter); + + + String accountOid = getLinkRefOid(userAfter, RESOURCE_OPENDJ_OID); + + // Check shadow + PrismObject accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result); + display("accountShadow after attribute addition", accountShadow); + + // Check account + PrismObject accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result); + display("accountModel after attribute addition", accountModel); + + PrismAsserts.assertNoItem(accountModel, openDJController.getAttributePath( ACCOUNT_ATTRIBUTE_GIVENNAME)); + } private void dumpLdap() throws DirectoryException { @@ -318,5 +432,38 @@ protected objShadow = getShadowModel(objOid); + display("Focus " + focusName + " kind " + kind + " intent " + intent + " shadow", objShadow); + + List valuesList = new ArrayList(Arrays.asList(values)); + + for (Object att : objShadow.asObjectable().getAttributes().asPrismContainerValue().getItems()) { + if (att instanceof ResourceAttribute) { + Collection propVals = ((ResourceAttribute) att).getRealValues(); + + if (attribute.equals(((ResourceAttribute) att).getNativeAttributeName())) { + + List propValsString = new ArrayList(propVals.size()); + for (Object pval : propVals) { + propValsString.add(pval.toString()); + } + + Collections.sort(propValsString); + Collections.sort(valuesList); + + assertEquals(propValsString, valuesList); + + } + } + } + } } \ No newline at end of file diff --git a/testing/story/src/test/resources/recon-null-value/resource-opendj.xml b/testing/story/src/test/resources/recon-null-value/resource-opendj.xml index 89ac7cdc6fa..4531bdbd73e 100644 --- a/testing/story/src/test/resources/recon-null-value/resource-opendj.xml +++ b/testing/story/src/test/resources/recon-null-value/resource-opendj.xml @@ -127,6 +127,7 @@ ri:givenName + strong givenName @@ -173,8 +174,12 @@ - - + + + + relative + + From 6b206431cc868cf298ae20cb0307c80b932b8b41 Mon Sep 17 00:00:00 2001 From: Radovan Semancik Date: Fri, 13 Apr 2018 17:44:25 +0200 Subject: [PATCH 11/16] Correcting and extending the TestReconNullValue test --- .../testing/story/TestReconNullValue.java | 62 +++++++++++++++++-- .../recon-null-value/resource-opendj.xml | 4 ++ 2 files changed, 62 insertions(+), 4 deletions(-) diff --git a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestReconNullValue.java b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestReconNullValue.java index f9e41f2e014..4ffd4f8a8c1 100644 --- a/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestReconNullValue.java +++ b/testing/story/src/test/java/com/evolveum/midpoint/testing/story/TestReconNullValue.java @@ -362,11 +362,12 @@ public void test150RemoveTitleRA() throws Exception { * add givenName in resource account (not using midpoint) * do recompute * in resource account value for givenName should have been removed again + * See also https://wiki.evolveum.com/display/midPoint/Resource+Schema+Handling#ResourceSchemaHandling-AttributeTolerance * */ @Test //MID-4567 - public void test160AddGivenNameRA() throws Exception { - final String TEST_NAME = "test160AddGivenNameRA"; + public void test160SetGivenNameAttributeAndReconcile() throws Exception { + final String TEST_NAME = "test160SetGivenNameAttributeAndReconcile"; displayTestTitle(TEST_NAME); // GIVEN @@ -382,7 +383,7 @@ public void test160AddGivenNameRA() throws Exception { openDJController.executeLdifChange("dn: uid="+USER_0_NAME+",ou=people,dc=example,dc=com\n"+ "changetype: modify\n"+ - "add: givenName\n"+ + "replace: givenName\n"+ "givenName: given0again"); display("LDAP after addition"); @@ -413,7 +414,60 @@ public void test160AddGivenNameRA() throws Exception { PrismObject accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result); display("accountModel after attribute addition", accountModel); - PrismAsserts.assertNoItem(accountModel, openDJController.getAttributePath( ACCOUNT_ATTRIBUTE_GIVENNAME)); + PrismAsserts.assertNoItem(accountModel, openDJController.getAttributePath(ACCOUNT_ATTRIBUTE_GIVENNAME)); + + } + + /** + * See also https://wiki.evolveum.com/display/midPoint/Resource+Schema+Handling#ResourceSchemaHandling-AttributeTolerance + */ + @Test //MID-4567 + public void test170ReplaceGivenNameEmpty() throws Exception { + final String TEST_NAME = "test170ReplaceGivenNameEmpty"; + displayTestTitle(TEST_NAME); + + // GIVEN + Task task = createTask(TEST_NAME); + OperationResult result = task.getResult(); + dummyAuditService.clear(); + + PrismObject userBefore = getObjectByName(UserType.class, USER_0_NAME); + display("User before", userBefore); + + openDJController.executeLdifChange("dn: uid="+USER_0_NAME+",ou=people,dc=example,dc=com\n"+ + "changetype: modify\n"+ + "replace: givenName\n"+ + "givenName: given1again"); + + display("LDAP after addition"); + dumpLdap(); + + // WHEN + displayWhen(TEST_NAME); + modifyUserReplace(userBefore.getOid(), UserType.F_GIVEN_NAME, task, result /* no value */); + + display("LDAP after reconcile"); + dumpLdap(); + + // THEN + displayThen(TEST_NAME); + assertSuccess(result); + + PrismObject userAfter = getObjectByName(UserType.class, USER_0_NAME); + display("User smack after adding attribute title", userAfter); + + + String accountOid = getLinkRefOid(userAfter, RESOURCE_OPENDJ_OID); + + // Check shadow + PrismObject accountShadow = repositoryService.getObject(ShadowType.class, accountOid, null, result); + display("accountShadow after attribute addition", accountShadow); + + // Check account + PrismObject accountModel = modelService.getObject(ShadowType.class, accountOid, null, task, result); + display("accountModel after attribute addition", accountModel); + + PrismAsserts.assertNoItem(accountModel, openDJController.getAttributePath(ACCOUNT_ATTRIBUTE_GIVENNAME)); } diff --git a/testing/story/src/test/resources/recon-null-value/resource-opendj.xml b/testing/story/src/test/resources/recon-null-value/resource-opendj.xml index 4531bdbd73e..1e74c72572f 100644 --- a/testing/story/src/test/resources/recon-null-value/resource-opendj.xml +++ b/testing/story/src/test/resources/recon-null-value/resource-opendj.xml @@ -126,6 +126,10 @@ ri:givenName + + 1 + + false strong From 15ca28da740cdefb5a1394bcb8f28913f8fab7f6 Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Mon, 16 Apr 2018 12:00:39 +0200 Subject: [PATCH 12/16] Fix assignment deletion notifications (MID-4588) We now try to resolve values for id-only PCV deletions. --- .../model/intest/TestNotifications.java | 123 +++++++++++++++++- .../impl/formatters/TextFormatter.java | 33 ++++- 2 files changed, 148 insertions(+), 8 deletions(-) diff --git a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestNotifications.java b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestNotifications.java index 705a73d1a3d..d75b8d004fb 100644 --- a/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestNotifications.java +++ b/model/model-intest/src/test/java/com/evolveum/midpoint/model/intest/TestNotifications.java @@ -23,6 +23,7 @@ import com.evolveum.midpoint.prism.crypto.EncryptionException; import com.evolveum.midpoint.prism.delta.ObjectDelta; import com.evolveum.midpoint.prism.delta.ReferenceDelta; +import com.evolveum.midpoint.prism.delta.builder.DeltaBuilder; import com.evolveum.midpoint.prism.util.PrismTestUtil; import com.evolveum.midpoint.schema.constants.SchemaConstants; import com.evolveum.midpoint.schema.internals.InternalCounters; @@ -365,7 +366,7 @@ public void test131ModifyUserJackAssignAccount() throws Exception { } @Test - public void test135ModifyUserJackAssignRole() throws Exception { + public void test140ModifyUserJackAssignRole() throws Exception { final String TEST_NAME = "test135ModifyUserJackAssignRole"; TestUtil.displayTestTitle(this, TEST_NAME); @@ -415,7 +416,127 @@ public void test135ModifyUserJackAssignRole() throws Exception { + "\n" + "Channel: "; assertEquals("Wrong message body", expected, dummyTransport.getMessages("dummy:simpleUserNotifier").get(0).getBody()); + } + + @Test + public void test150ModifyUserJackModifyAssignment() throws Exception { + final String TEST_NAME = "test150ModifyUserJackModifyAssignment"; + TestUtil.displayTestTitle(this, TEST_NAME); + + // GIVEN + Task task = taskManager.createTaskInstance(TestNotifications.class.getName() + "." + TEST_NAME); + OperationResult result = task.getResult(); + preTestCleanup(AssignmentPolicyEnforcementType.FULL); + + // WHEN + TestUtil.displayWhen(TEST_NAME); + PrismObject jack = getUser(USER_JACK_OID); + AssignmentType assignment = findAssignmentByTargetRequired(jack, ROLE_SUPERUSER_OID); + Long id = assignment.getId(); + executeChanges( + DeltaBuilder.deltaFor(UserType.class, prismContext) + .item(UserType.F_ASSIGNMENT, id, AssignmentType.F_DESCRIPTION) + .replace("hi") + .asObjectDeltaCast(jack.getOid()), null, task, result); + + // THEN + TestUtil.displayThen(TEST_NAME); + result.computeStatus(); + TestUtil.assertSuccess("executeChanges result", result); + PrismObject jackAfter = getUser(USER_JACK_OID); + display("User after change execution", jackAfter); + assertUserJack(jackAfter); + + // Check notifications + display("Notifications", dummyTransport); + + notificationManager.setDisabled(true); + checkDummyTransportMessages("accountPasswordNotifier", 0); + checkDummyTransportMessages("userPasswordNotifier", 0); + checkDummyTransportMessages("simpleAccountNotifier-SUCCESS", 0); + checkDummyTransportMessages("simpleAccountNotifier-FAILURE", 0); + checkDummyTransportMessages("simpleAccountNotifier-ADD-SUCCESS", 0); + checkDummyTransportMessages("simpleAccountNotifier-DELETE-SUCCESS", 0); + checkDummyTransportMessages("simpleUserNotifier", 1); + checkDummyTransportMessages("simpleUserNotifier-ADD", 0); + + assertSteadyResources(); + + String expected = "Notification about user-related operation (status: SUCCESS)\n" + + "\n" + + "User: Jack Sparrow (jack, oid c0c010c0-d34d-b33f-f00d-111111111111)\n" + + "\n" + + "The user record was modified. Modified attributes are:\n" + + " - Assignment["+id+"]/Description:\n" + + " - REPLACE: hi\n" + + "\n" + + "Notes:\n" + + " - Assignment["+id+"]:\n" + + " - Description: hi\n" + + " - Target: Superuser (role) [default]\n" + + "\n" + + "Channel: "; + assertEquals("Wrong message body", expected, dummyTransport.getMessages("dummy:simpleUserNotifier").get(0).getBody()); + } + + @Test + public void test160ModifyUserJackDeleteAssignment() throws Exception { + final String TEST_NAME = "test160ModifyUserJackDeleteAssignment"; + TestUtil.displayTestTitle(this, TEST_NAME); + + // GIVEN + Task task = taskManager.createTaskInstance(TestNotifications.class.getName() + "." + TEST_NAME); + OperationResult result = task.getResult(); + preTestCleanup(AssignmentPolicyEnforcementType.FULL); + + // WHEN + TestUtil.displayWhen(TEST_NAME); + PrismObject jack = getUser(USER_JACK_OID); + AssignmentType assignment = findAssignmentByTargetRequired(jack, ROLE_SUPERUSER_OID); + Long id = assignment.getId(); + executeChanges( + DeltaBuilder.deltaFor(UserType.class, prismContext) + .item(UserType.F_ASSIGNMENT) + .delete(new AssignmentType(prismContext).id(id)) + .asObjectDeltaCast(jack.getOid()), null, task, result); + + // THEN + TestUtil.displayThen(TEST_NAME); + result.computeStatus(); + TestUtil.assertSuccess("executeChanges result", result); + + PrismObject jackAfter = getUser(USER_JACK_OID); + display("User after change execution", jackAfter); + assertUserJack(jackAfter); + + // Check notifications + display("Notifications", dummyTransport); + + notificationManager.setDisabled(true); + checkDummyTransportMessages("accountPasswordNotifier", 0); + checkDummyTransportMessages("userPasswordNotifier", 0); + checkDummyTransportMessages("simpleAccountNotifier-SUCCESS", 0); + checkDummyTransportMessages("simpleAccountNotifier-FAILURE", 0); + checkDummyTransportMessages("simpleAccountNotifier-ADD-SUCCESS", 0); + checkDummyTransportMessages("simpleAccountNotifier-DELETE-SUCCESS", 0); + checkDummyTransportMessages("simpleUserNotifier", 1); + checkDummyTransportMessages("simpleUserNotifier-ADD", 0); + + assertSteadyResources(); + + String expected = "Notification about user-related operation (status: SUCCESS)\n" + + "\n" + + "User: Jack Sparrow (jack, oid c0c010c0-d34d-b33f-f00d-111111111111)\n" + + "\n" + + "The user record was modified. Modified attributes are:\n" + + " - Assignment:\n" + + " - DELETE: \n" + + " - Description: hi\n" + + " - Target: Superuser (role) [default]\n" + + "\n" + + "Channel: "; + assertEquals("Wrong message body", expected, dummyTransport.getMessages("dummy:simpleUserNotifier").get(0).getBody()); } @Test diff --git a/model/notifications-impl/src/main/java/com/evolveum/midpoint/notifications/impl/formatters/TextFormatter.java b/model/notifications-impl/src/main/java/com/evolveum/midpoint/notifications/impl/formatters/TextFormatter.java index 1648fc35056..66c1556060d 100644 --- a/model/notifications-impl/src/main/java/com/evolveum/midpoint/notifications/impl/formatters/TextFormatter.java +++ b/model/notifications-impl/src/main/java/com/evolveum/midpoint/notifications/impl/formatters/TextFormatter.java @@ -42,6 +42,7 @@ import com.evolveum.midpoint.util.logging.TraceManager; import com.evolveum.midpoint.xml.ns._public.common.common_3.*; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang.Validate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -100,7 +101,7 @@ public String formatObjectModificationDelta(ObjectDelta ob retval.append(" - "); retval.append(getItemDeltaLabel(itemDelta, objectDefinition)); retval.append(":\n"); - formatItemDeltaContent(retval, itemDelta, hiddenPaths, showOperationalAttributes); + formatItemDeltaContent(retval, itemDelta, objectOld, hiddenPaths, showOperationalAttributes); } explainPaths(retval, toBeDisplayed, objectDefinition, objectOld, objectNew, hiddenPaths, showOperationalAttributes); @@ -158,18 +159,24 @@ private void explainPaths(StringBuilder sb, List deltas, PrismObjectD } } - private void formatItemDeltaContent(StringBuilder sb, ItemDelta itemDelta, List hiddenPaths, boolean showOperationalAttributes) { - formatItemDeltaValues(sb, "ADD", itemDelta.getValuesToAdd(), false, hiddenPaths, showOperationalAttributes); - formatItemDeltaValues(sb, "DELETE", itemDelta.getValuesToDelete(), true, hiddenPaths, showOperationalAttributes); - formatItemDeltaValues(sb, "REPLACE", itemDelta.getValuesToReplace(), false, hiddenPaths, showOperationalAttributes); + private void formatItemDeltaContent(StringBuilder sb, ItemDelta itemDelta, PrismObject objectOld, + List hiddenPaths, boolean showOperationalAttributes) { + formatItemDeltaValues(sb, "ADD", itemDelta.getValuesToAdd(), false, itemDelta.getPath(), objectOld, hiddenPaths, showOperationalAttributes); + formatItemDeltaValues(sb, "DELETE", itemDelta.getValuesToDelete(), true, itemDelta.getPath(), objectOld, hiddenPaths, showOperationalAttributes); + formatItemDeltaValues(sb, "REPLACE", itemDelta.getValuesToReplace(), false, itemDelta.getPath(), objectOld, hiddenPaths, showOperationalAttributes); } - private void formatItemDeltaValues(StringBuilder sb, String type, Collection values, boolean mightBeRemoved, List hiddenPaths, boolean showOperationalAttributes) { + private void formatItemDeltaValues(StringBuilder sb, String type, Collection values, + boolean isDelete, ItemPath path, PrismObject objectOld, + List hiddenPaths, boolean showOperationalAttributes) { if (values != null) { for (PrismValue prismValue : values) { sb.append(" - ").append(type).append(": "); String prefix = " "; - formatPrismValue(sb, prefix, prismValue, mightBeRemoved, hiddenPaths, showOperationalAttributes); + if (isDelete && prismValue instanceof PrismContainerValue) { + prismValue = fixEmptyContainerValue((PrismContainerValue) prismValue, path, objectOld); + } + formatPrismValue(sb, prefix, prismValue, isDelete, hiddenPaths, showOperationalAttributes); if (!(prismValue instanceof PrismContainerValue)) { // container values already end with newline sb.append("\n"); } @@ -177,6 +184,18 @@ private void formatItemDeltaValues(StringBuilder sb, String type, Collection hiddenAttributes, boolean showOperationalAttributes) { Validate.notNull(shadowType, "shadowType is null"); From eb2df6427b788d8ecb9c6335be60ec3f56cf7d8a Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Mon, 16 Apr 2018 12:02:40 +0200 Subject: [PATCH 13/16] Remove casts for TaskManager implementation It causes problems when profiling is enabled (as the autowired object is a proxy instance instead of direct implementation class). --- .../task/quartzimpl/TaskManagerConfiguration.java | 2 ++ .../task/quartzimpl/TaskManagerQuartzImpl.java | 8 +++----- .../task/quartzimpl/handlers/NoOpTaskHandler.java | 4 ++-- .../quartzimpl/handlers/PartitioningTaskHandler.java | 6 +++--- .../WaitForSubtasksByPollingTaskHandler.java | 4 ++-- .../quartzimpl/handlers/WaitForTasksTaskHandler.java | 6 ++---- .../task/quartzimpl/work/WorkStateManager.java | 12 ++++-------- 7 files changed, 18 insertions(+), 24 deletions(-) diff --git a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerConfiguration.java b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerConfiguration.java index 516cceaa92c..32b3b19a11a 100644 --- a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerConfiguration.java +++ b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerConfiguration.java @@ -23,6 +23,7 @@ import com.evolveum.midpoint.util.logging.TraceManager; import org.apache.commons.configuration.Configuration; import org.apache.commons.lang.StringUtils; +import org.springframework.stereotype.Component; import java.util.Arrays; import java.util.HashMap; @@ -43,6 +44,7 @@ * * @author Pavol Mederly */ +@Component public class TaskManagerConfiguration { private static final transient Trace LOGGER = TraceManager.getTrace(TaskManagerConfiguration.class); diff --git a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java index 48c15b6b051..94e51047c97 100644 --- a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java +++ b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/TaskManagerQuartzImpl.java @@ -118,8 +118,10 @@ public class TaskManagerQuartzImpl implements TaskManager, BeanFactoryAware { private static final String DOT_IMPL_CLASS = TaskManagerQuartzImpl.class.getName() + "."; private static final String CLEANUP_TASKS = DOT_INTERFACE + "cleanupTasks"; + @Autowired + private TaskManagerConfiguration configuration; + // instances of all the helper classes (see their definitions for their description) - private TaskManagerConfiguration configuration = new TaskManagerConfiguration(); private ExecutionManager executionManager = new ExecutionManager(this); private ClusterManager clusterManager = new ClusterManager(this); private StalledTasksWatcher stalledTasksWatcher = new StalledTasksWatcher(this); @@ -1665,10 +1667,6 @@ public RepositoryService getRepositoryService() { return repositoryService; } - public void setConfiguration(TaskManagerConfiguration configuration) { - this.configuration = configuration; - } - public ExecutionManager getExecutionManager() { return executionManager; } diff --git a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/NoOpTaskHandler.java b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/NoOpTaskHandler.java index 1ae228058f2..586d914f35f 100644 --- a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/NoOpTaskHandler.java +++ b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/NoOpTaskHandler.java @@ -44,7 +44,7 @@ public class NoOpTaskHandler implements WorkBucketAwareTaskHandler { private NoOpTaskHandler() {} - public static void instantiateAndRegister(TaskManager taskManager) { + public static void instantiateAndRegister(TaskManagerQuartzImpl taskManager) { if (instance == null) { instance = new NoOpTaskHandler(); } @@ -53,7 +53,7 @@ public static void instantiateAndRegister(TaskManager taskManager) { taskManager.registerHandler(TaskConstants.NOOP_TASK_HANDLER_URI_2, instance); taskManager.registerHandler(TaskConstants.NOOP_TASK_HANDLER_URI_3, instance); taskManager.registerHandler(TaskConstants.NOOP_TASK_HANDLER_URI_4, instance); - instance.taskManagerImpl = (TaskManagerQuartzImpl) taskManager; + instance.taskManagerImpl = taskManager; } @Override diff --git a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/PartitioningTaskHandler.java b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/PartitioningTaskHandler.java index 835ee8f56cd..c687af4ff6c 100644 --- a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/PartitioningTaskHandler.java +++ b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/PartitioningTaskHandler.java @@ -53,10 +53,10 @@ public class PartitioningTaskHandler implements TaskHandler { private static final String DEFAULT_HANDLER_URI = "{masterTaskHandlerUri}#{index}"; - private TaskManager taskManager; + private TaskManagerQuartzImpl taskManager; private Function partitionsDefinitionSupplier; - public PartitioningTaskHandler(TaskManager taskManager, Function partitionsDefinitionSupplier) { + public PartitioningTaskHandler(TaskManagerQuartzImpl taskManager, Function partitionsDefinitionSupplier) { this.taskManager = taskManager; this.partitionsDefinitionSupplier = partitionsDefinitionSupplier; } @@ -333,7 +333,7 @@ private T applyDefaults(Function localGetter, Fu } private PrismContext getPrismContext() { - return ((TaskManagerQuartzImpl) taskManager).getPrismContext(); + return taskManager.getPrismContext(); } private void applyDeltas(TaskType subtask, Collection> deltas) throws SchemaException { diff --git a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/WaitForSubtasksByPollingTaskHandler.java b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/WaitForSubtasksByPollingTaskHandler.java index 38dcc550731..40e65d204ae 100644 --- a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/WaitForSubtasksByPollingTaskHandler.java +++ b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/WaitForSubtasksByPollingTaskHandler.java @@ -49,11 +49,11 @@ public class WaitForSubtasksByPollingTaskHandler implements TaskHandler { private WaitForSubtasksByPollingTaskHandler() {} - public static void instantiateAndRegister(TaskManager taskManager) { + public static void instantiateAndRegister(TaskManagerQuartzImpl taskManager) { if (instance == null) instance = new WaitForSubtasksByPollingTaskHandler(); taskManager.registerHandler(HANDLER_URI, instance); - instance.taskManagerImpl = (TaskManagerQuartzImpl) taskManager; + instance.taskManagerImpl = taskManager; } @Override diff --git a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/WaitForTasksTaskHandler.java b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/WaitForTasksTaskHandler.java index 0b35fc6c96c..02a1ed0ea9c 100644 --- a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/WaitForTasksTaskHandler.java +++ b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/handlers/WaitForTasksTaskHandler.java @@ -26,8 +26,6 @@ import com.evolveum.midpoint.util.logging.Trace; import com.evolveum.midpoint.util.logging.TraceManager; -import java.util.List; - /** * This is very simple task handler that causes the process to enter WAITING for OTHER_TASKS state. * @@ -43,12 +41,12 @@ public class WaitForTasksTaskHandler implements TaskHandler { private WaitForTasksTaskHandler() {} - public static void instantiateAndRegister(TaskManager taskManager) { + public static void instantiateAndRegister(TaskManagerQuartzImpl taskManager) { if (instance == null) { instance = new WaitForTasksTaskHandler(); } taskManager.registerHandler(HANDLER_URI, instance); - instance.taskManagerImpl = (TaskManagerQuartzImpl) taskManager; + instance.taskManagerImpl = taskManager; } @Override diff --git a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/work/WorkStateManager.java b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/work/WorkStateManager.java index df182952fac..138566a7247 100644 --- a/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/work/WorkStateManager.java +++ b/repo/task-quartz-impl/src/main/java/com/evolveum/midpoint/task/quartzimpl/work/WorkStateManager.java @@ -35,7 +35,6 @@ import com.evolveum.midpoint.task.api.TaskExecutionStatus; import com.evolveum.midpoint.task.api.TaskManager; import com.evolveum.midpoint.task.quartzimpl.TaskManagerConfiguration; -import com.evolveum.midpoint.task.quartzimpl.TaskManagerQuartzImpl; import com.evolveum.midpoint.task.quartzimpl.TaskQuartzImpl; import com.evolveum.midpoint.task.quartzimpl.work.segmentation.content.WorkBucketContentHandler; import com.evolveum.midpoint.task.quartzimpl.work.segmentation.content.WorkBucketContentHandlerRegistry; @@ -85,6 +84,7 @@ public class WorkStateManager { @Autowired private PrismContext prismContext; @Autowired private WorkSegmentationStrategyFactory strategyFactory; @Autowired private WorkBucketContentHandlerRegistry handlerFactory; + @Autowired private TaskManagerConfiguration configuration; private static final long DYNAMIC_SLEEP_INTERVAL = 100L; @@ -254,22 +254,18 @@ private WorkBucketType getWorkBucketMultiNode(Context ctx, long freeBucketWaitTi } private BackoffComputer createBackoffComputer() { - TaskManagerConfiguration c = getConfiguration(); + TaskManagerConfiguration c = configuration; return new ExponentialBackoffComputer(c.getWorkAllocationMaxRetries(), c.getWorkAllocationInitialDelay(), c.getWorkAllocationRetryExponentialThreshold()); } private long getFreeBucketWaitInterval() { return freeBucketWaitIntervalOverride != null ? freeBucketWaitIntervalOverride : - getConfiguration().getWorkAllocationDefaultFreeBucketWaitInterval(); + configuration.getWorkAllocationDefaultFreeBucketWaitInterval(); } private long getInitialDelay() { - return getConfiguration().getWorkAllocationInitialDelay(); - } - - private TaskManagerConfiguration getConfiguration() { - return ((TaskManagerQuartzImpl) taskManager).getConfiguration(); + return configuration.getWorkAllocationInitialDelay(); } private void setOrUpdateEstimatedNumberOfBuckets(Task task, WorkSegmentationStrategy workStateStrategy, OperationResult result) From 83e2c9c32fc1dfcc955f706a2daa82ca9b8b610d Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Mon, 16 Apr 2018 13:29:52 +0200 Subject: [PATCH 14/16] Add forgotten dependency --- model/notifications-impl/pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/model/notifications-impl/pom.xml b/model/notifications-impl/pom.xml index 6b0adc3c65d..2c7635890b6 100644 --- a/model/notifications-impl/pom.xml +++ b/model/notifications-impl/pom.xml @@ -107,6 +107,10 @@ org.apache.commons commons-lang3 + + org.apache.commons + commons-collections4 + org.apache.commons commons-email From af25e85dce837b035f42f7c8b1e633478c4bb127 Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Mon, 16 Apr 2018 15:23:51 +0200 Subject: [PATCH 15/16] adding missing resources for REST tests --- ...modification-replace-answer-id-1-value.yml | 24 ++++++++++++++ .../req/yaml/modification-replace-answer.yml | 7 +++-- .../yaml/modification-replace-no-answer.yml | 22 +++++++++++++ .../yaml/modification-replace-two-answers.yml | 31 +++++++++++++++++++ 4 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 testing/rest/src/test/resources/req/yaml/modification-replace-answer-id-1-value.yml create mode 100644 testing/rest/src/test/resources/req/yaml/modification-replace-no-answer.yml create mode 100644 testing/rest/src/test/resources/req/yaml/modification-replace-two-answers.yml diff --git a/testing/rest/src/test/resources/req/yaml/modification-replace-answer-id-1-value.yml b/testing/rest/src/test/resources/req/yaml/modification-replace-answer-id-1-value.yml new file mode 100644 index 00000000000..6ef03406f67 --- /dev/null +++ b/testing/rest/src/test/resources/req/yaml/modification-replace-answer-id-1-value.yml @@ -0,0 +1,24 @@ +# +# ~ Copyright (c) 2010-2013 Evolveum +# ~ +# ~ Licensed under the Apache License, Version 2.0 (the "License"); +# ~ you may not use this file except in compliance with the License. +# ~ You may obtain a copy of the License at +# ~ +# ~ http://www.apache.org/licenses/LICENSE-2.0 +# ~ +# ~ Unless required by applicable law or agreed to in writing, software +# ~ distributed under the License is distributed on an "AS IS" BASIS, +# ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# ~ See the License for the specific language governing permissions and +# ~ limitations under the License. +# +--- +'@ns': "http://midpoint.evolveum.com/xml/ns/public/common/api-types-3" +objectModification: + itemDelta: + '@ns': "http://prism.evolveum.com/xml/ns/public/types-3" + modificationType: "replace" + path: "credentials/securityQuestions/questionAnswer[1]/questionAnswer" + value: + clearValue: "newAnswer" \ No newline at end of file diff --git a/testing/rest/src/test/resources/req/yaml/modification-replace-answer.yml b/testing/rest/src/test/resources/req/yaml/modification-replace-answer.yml index 3f204decc0b..b1b93fc3785 100644 --- a/testing/rest/src/test/resources/req/yaml/modification-replace-answer.yml +++ b/testing/rest/src/test/resources/req/yaml/modification-replace-answer.yml @@ -19,6 +19,9 @@ objectModification: itemDelta: '@ns': "http://prism.evolveum.com/xml/ns/public/types-3" modificationType: "replace" - path: "credentials/securityQuestions/questionAnswer[1]/questionAnswer" + path: "credentials/securityQuestions/questionAnswer" value: - clearValue: "newAnswer" \ No newline at end of file + '@ns': "http://midpoint.evolveum.com/xml/ns/public/common/common-3" + questionIdentifier: "http://midpoint.evolveum.com/xml/ns/public/security/question-2#q001" + questionAnswer: + clearValue: "you would not believe what happens next" \ No newline at end of file diff --git a/testing/rest/src/test/resources/req/yaml/modification-replace-no-answer.yml b/testing/rest/src/test/resources/req/yaml/modification-replace-no-answer.yml new file mode 100644 index 00000000000..b4fb6a363a7 --- /dev/null +++ b/testing/rest/src/test/resources/req/yaml/modification-replace-no-answer.yml @@ -0,0 +1,22 @@ +# +# ~ Copyright (c) 2010-2013 Evolveum +# ~ +# ~ Licensed under the Apache License, Version 2.0 (the "License"); +# ~ you may not use this file except in compliance with the License. +# ~ You may obtain a copy of the License at +# ~ +# ~ http://www.apache.org/licenses/LICENSE-2.0 +# ~ +# ~ Unless required by applicable law or agreed to in writing, software +# ~ distributed under the License is distributed on an "AS IS" BASIS, +# ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# ~ See the License for the specific language governing permissions and +# ~ limitations under the License. +# +--- +'@ns': "http://midpoint.evolveum.com/xml/ns/public/common/api-types-3" +objectModification: + itemDelta: + '@ns': "http://prism.evolveum.com/xml/ns/public/types-3" + modificationType: "replace" + path: "credentials/securityQuestions/questionAnswer" \ No newline at end of file diff --git a/testing/rest/src/test/resources/req/yaml/modification-replace-two-answers.yml b/testing/rest/src/test/resources/req/yaml/modification-replace-two-answers.yml new file mode 100644 index 00000000000..f7151c65ee3 --- /dev/null +++ b/testing/rest/src/test/resources/req/yaml/modification-replace-two-answers.yml @@ -0,0 +1,31 @@ +# +# ~ Copyright (c) 2010-2013 Evolveum +# ~ +# ~ Licensed under the Apache License, Version 2.0 (the "License"); +# ~ you may not use this file except in compliance with the License. +# ~ You may obtain a copy of the License at +# ~ +# ~ http://www.apache.org/licenses/LICENSE-2.0 +# ~ +# ~ Unless required by applicable law or agreed to in writing, software +# ~ distributed under the License is distributed on an "AS IS" BASIS, +# ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# ~ See the License for the specific language governing permissions and +# ~ limitations under the License. +# +--- +'@ns': "http://midpoint.evolveum.com/xml/ns/public/common/api-types-3" +objectModification: + itemDelta: + '@ns': "http://prism.evolveum.com/xml/ns/public/types-3" + modificationType: "replace" + path: "credentials/securityQuestions/questionAnswer" + value: + - '@ns': "http://midpoint.evolveum.com/xml/ns/public/common/common-3" + questionIdentifier: "http://midpoint.evolveum.com/xml/ns/public/security/question-2#q001" + questionAnswer: + clearValue: "yet another answer" + - '@ns': "http://midpoint.evolveum.com/xml/ns/public/common/common-3" + questionIdentifier: "http://midpoint.evolveum.com/xml/ns/public/security/question-2#q002" + questionAnswer: + clearValue: "42" \ No newline at end of file From 1067456e53a25e3832ca1ff949653c8d57c08849 Mon Sep 17 00:00:00 2001 From: Katarina Valalikova Date: Mon, 16 Apr 2018 16:03:48 +0200 Subject: [PATCH 16/16] another fix for rest tests --- .../testing/rest/RestServiceInitializer.java | 6 ++---- .../TestSecurityQuestionChallengeResponse.java | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/testing/rest/src/test/java/com/evolveum/midpoint/testing/rest/RestServiceInitializer.java b/testing/rest/src/test/java/com/evolveum/midpoint/testing/rest/RestServiceInitializer.java index 4b80a22714c..71492952651 100644 --- a/testing/rest/src/test/java/com/evolveum/midpoint/testing/rest/RestServiceInitializer.java +++ b/testing/rest/src/test/java/com/evolveum/midpoint/testing/rest/RestServiceInitializer.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import javax.ws.rs.core.Response; @@ -197,11 +198,8 @@ protected PrismObject addObject(File file, OperationRe protected WebClient prepareClient(String username, String password) { - List providers = new ArrayList<>(); - providers.add(getProvider()); - WebClient client = WebClient.create(ENDPOINT_ADDRESS, providers);// , + WebClient client = WebClient.create(ENDPOINT_ADDRESS, Arrays.asList(getProvider()));// , // provider); - ClientConfiguration clientConfig = WebClient.getConfig(client); clientConfig.getRequestContext().put(LocalConduit.DIRECT_DISPATCH, Boolean.TRUE); diff --git a/testing/rest/src/test/java/com/evolveum/midpoint/testing/rest/TestSecurityQuestionChallengeResponse.java b/testing/rest/src/test/java/com/evolveum/midpoint/testing/rest/TestSecurityQuestionChallengeResponse.java index 0fb11dc4c88..d56fd9cec97 100644 --- a/testing/rest/src/test/java/com/evolveum/midpoint/testing/rest/TestSecurityQuestionChallengeResponse.java +++ b/testing/rest/src/test/java/com/evolveum/midpoint/testing/rest/TestSecurityQuestionChallengeResponse.java @@ -20,14 +20,19 @@ import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.fail; +import java.io.InputStream; +import java.util.Arrays; import java.util.List; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.apache.commons.io.IOUtils; import org.apache.cxf.common.util.Base64Exception; import org.apache.cxf.common.util.Base64Utility; +import org.apache.cxf.jaxrs.client.ClientConfiguration; import org.apache.cxf.jaxrs.client.WebClient; +import org.apache.cxf.transport.local.LocalConduit; import org.testng.annotations.Test; import com.evolveum.midpoint.model.impl.rest.MidpointAbstractProvider; @@ -41,7 +46,7 @@ public class TestSecurityQuestionChallengeResponse extends RestServiceInitialize private static final Trace LOGGER = TraceManager.getTrace(TestSecurityQuestionChallengeResponse.class); @Test - public void testChallengeResponse(){ + public void testChallengeResponse() throws Exception { Response response = getUserAdministrator("SecQ"); String challengeBase64 = assertAndGetChallenge(response); @@ -109,7 +114,13 @@ private String assertAndGetChallenge(Response response){ } private Response getUserAdministrator(String authorizationHeader){ - WebClient client = WebClient.create(ENDPOINT_ADDRESS); + WebClient client = WebClient.create(ENDPOINT_ADDRESS, Arrays.asList(getProvider())); + ClientConfiguration clientConfig = WebClient.getConfig(client); + + clientConfig.getRequestContext().put(LocalConduit.DIRECT_DISPATCH, Boolean.TRUE); + client.accept(getAcceptHeader()); + client.type(getContentType()); + client.authorization(authorizationHeader); client.path("/users/" + SystemObjectsType.USER_ADMINISTRATOR.value());