<div dir="ltr"><div dir="ltr"><p>
Hi Evolveum team,
</p>
<p>I will try to explain the whole sequence of my actions clearly, starting from the beginning.<br>
At work, we frequently perform integrations using <strong>midPoint 4.9</strong>.</p>
<p>The question is about <strong>creating resource accounts (projections)</strong>, especially for REST resources.<br>
There is very little information in the official documentation, for example here:<br>
👉 <a rel="noopener" class="gmail-decorated-link" href="https://docs.evolveum.com/midpoint/guides/admin-gui-user-guide/#:~:text=The%20account%20form%20is%20dynamically,definition%20in%20the%20resource%20object">https://docs.evolveum.com/midpoint/guides/admin-gui-user-guide/#:~:text=The%20account%20form%20is%20dynamically,definition%20in%20the%20resource%20object<span aria-hidden="true" class="gmail-ms-0.5 gmail-inline-block gmail-align-middle gmail-leading-none"></span></a></p>
<p>It explains the process but doesn’t actually show <strong>how to enter account attributes manually</strong> during creation.<br>
Here’s the relevant part from the documentation:</p>
<blockquote>
<p>“To add one or more resource accounts to the user, click on the Add projection button in the Projections pane...<br>
The account form is dynamically generated using the resource schema definition in the resource object…<br></p><h3><font size="2">Example scenario</font></h3><p>
</p><p>Suppose I have a REST resource where the POST body looks like this:<br>{<br> "username": "some name",<br> "email": "some email",<br> "number": "some number",<br> "password": "some password",<br> "roles": ["admin", "support"]<br>}<br><br></p><p>Here, <code>username</code>, <code>email</code>, and <code>password</code> are mandatory for account creation, while <code>number</code> and <code>roles</code><b> are optional.</b> </p><h3>What happens in midPoint</h3><h3>
<p><font size="2"><span style="font-weight:normal">When I open a user and go to the Projections tab, I click “+ </span>New Projection<span style="font-weight:normal">” → select the resource → click the checkmark → then </span>Add<span style="font-weight:normal">.</span><br><span style="font-weight:normal">
MidPoint creates a projection with the name null, linked to the selected resource.</span></font></p>
<p><font size="2"><span style="font-weight:normal">When I click on that projection, I see only a </span>Basic<span style="font-weight:normal"> tab with </span>Cancel<span style="font-weight:normal"> and </span>Done<span style="font-weight:normal"> buttons — but no fields appear for editing.</span></font></p>
<p><font size="2" style=""><span style="font-weight:normal">If I click </span>Done<span style="font-weight:normal">, midPoint </span>creates the projection using outbound mappings (values coming from the User object).<br>
This is not ideal, because we may have many different resources and we can’t keep adding all external fields to the User object.<br>
It would make much more sense to allow manual input of account fields directly in the projection form during creation.</font></p>My question<br><p><font size="2"><span style="font-weight:normal">Do I need to configure something in</span> <code><schemaHandling></code> <span style="font-weight:normal">so that, when I click </span><strong>“+ New Projection”</strong>, <span style="font-weight:normal">midPoint displays the attributes defined</span> in the connector schema (<code>setCreatable(true)</code>)?</font></p>
<p><font size="2">Currently, the projection appears empty (“null”), even though I’ve marked all connector attributes as creatable.<br></font></p><font size="2"><span style="font-weight:normal">How can I make those attributes </span><strong style="">visible and editable</strong><span style="font-weight:normal"> when creating a new projection manually?<br></span></font></h3><h3>Related: <code>setRequired</code>, <code>setCreatable</code>, and <code>setReturnedByDefault</code> flags</h3><h3>
<p>I<font size="2">’d also like to clarify the meaning and effect of these flags:</font></p>
<ul>
<li>
<p><font size="2"><span style="font-weight:normal">Does</span> <code>setRequired(true)</code> mean that the attribute <strong>must be included</strong> in the <code>Set<Attribute></code> passed to<br>
<code>create(ObjectClass objectClass, Set<Attribute> attributes, OperationOptions options)</code>?</font></p>
</li>
<li>
<p><font size="2"><span style="font-weight:normal">Does</span> <code>setCreatable(true)</code> mean that the attribute <strong>can be entered in the UI</strong> when creating an account (projection)?</font></p>
</li>
<li>
<p><font size="2">How does the combination of <code>setRequired</code> and <code>setCreatable</code> affect midPoint’s behavior?</font></p>
</li>
<li>
<p><font size="2">And finally — <span style="font-weight:normal">what exactly does</span> <code>setReturnedByDefault(true)</code> do?<br>
D<span style="font-weight:normal">oes it mean that such an attribute is </span><strong>automatically fetched</strong> <span style="font-weight:normal">from the resource even if not explicitly requested by the framework?<br>
And does it also influence which attributes are displayed in the projection form in midPoint?</span></font></p>
</li>
</ul>
<p><font size="2">From what I understand, <code>setRequired</code> marks an attribute as mandatory during creation —<br>
but it’s not clear what happens in practice, especially when there’s no visible UI form to fill in the value.</font></p>
<p><font size="2">The only relevant comments I found are:</font></p>
<ul>
<li>
<p><font size="2"><a class="gmail-decorated-link" rel="noopener" href="https://docs.evolveum.com/connectors/connid/1.x/connector-development-guide/#:~:text=uidAib,build.">ConnId 1.x Development Guide<span aria-hidden="true" class="gmail-ms-0.5 gmail-inline-block gmail-align-middle gmail-leading-none"></span></a> —<br>
which says <code>// Must be optional. It is not present for create operations</code>.</font></p>
</li>
<li>
<p><font size="2"><a class="gmail-decorated-link" rel="noopener" href="https://docs.oracle.com/cd/E21764_01/apirefs.1111/e24834/org/identityconnectors/framework/common/objects/AttributeInfo.html#isRequired__">Oracle ICF API docs<span aria-hidden="true" class="gmail-ms-0.5 gmail-inline-block gmail-align-middle gmail-leading-none"></span></a> —<br>
which says “Determines whether this attribute is required for creates.”</font></p>
</li>
</ul>
<p><font size="2">So far, it’s still not clear how these flags influence what midPoint shows in the UI or passes during <code>create()</code> and <code>get()</code> operations.</font></p>
<hr>
</h3><h3>Summary</h3><h3>
<p><font size="2">Please help us understand:</font></p>
<ol>
<li>
<p><font size="2">How to configure <strong>account creation fields</strong> for manual input during projection creation.</font></p>
</li>
<li>
<p><font size="2">What exactly <code>setRequired</code>, <code>setCreatable</code>, and <code>setReturnedByDefault</code> mean in practice — and how they affect the <strong>UI and connector behavior</strong>.</font></p>
</li>
<li>
<p><font size="2">Whether the projection form can be generated dynamically from connector schema attributes (like a “Create account” form) without relying solely on outbound mappings.</font></p>
</li>
</ol>
<p><font size="2">This is very important for us, as account creation often requires partial manual input (some fields from the User, some entered by an administrator).</font></p>
<p><font size="2">Thank you very much for your help, and sorry for the long post.</font></p>
<p>Best regards,<br>
<strong>Ali</strong></p></h3></blockquote></div><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">чт, 6 нояб. 2025 г. в 09:55, David Klement <<a href="mailto:dakle@evolveum.com">dakle@evolveum.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Али,<br>
<br>
regarding the most recent message in the thread, i.e., "make account and record fields without outbound mappings" - if I understand correctly, you wish to create an account on a resource using midPoint without actually having the corresponding account (i.e., its user object, shadow, etc.) in midPoint? Or, in a narrower case, you want midPoint to send account attributes to the resource without midPoint actually having the attributes saved in its database? In other words, you do not want midPoint to manage the accounts or account attributes in question. If that is the case, maybe it would be best to edit the data directly in the target resource, would it not?<br>
<br>
Please let us know if I misunderstood your question. It is indeed true that connectors work directly with the resources, but they can only send them data that midPoint gives them, i.e., is instructed to send to the resource via the connector.<br>
<br>
Best regards,<br>
<br>
David Klement | Technical Writer<br>
Evolveum, s. r. o.<br>
<a href="mailto:dakle@evolveum.com" target="_blank">dakle@evolveum.com</a> | <a href="http://www.evolveum.com" rel="noreferrer" target="_blank">www.evolveum.com</a><br>
<br>
----- Original Message -----<br>
From: "midPoint General Discussion" <<a href="mailto:midpoint@lists.evolveum.com" target="_blank">midpoint@lists.evolveum.com</a>><br>
To: "midPoint General Discussion" <<a href="mailto:midpoint@lists.evolveum.com" target="_blank">midpoint@lists.evolveum.com</a>><br>
Cc: "Али Саад" <<a href="mailto:gerardo.saad@gmail.com" target="_blank">gerardo.saad@gmail.com</a>><br>
Sent: Wednesday, November 5, 2025 7:36:05 PM<br>
Subject: [midPoint] Fwd: Some tricky questions about develop connectors. Hello!<br>
<br>
Guys please tell me one thing. How i can make account and record fields without outbound mappings. We use ur product and all of us don't know how to do it. Please help. We wanna create account, for example for REST Resource and also make account by administrator. We know only one way to do it - make outbound mapping and take some attributes, which we record before, from UserType. I think this is a horrible and wrong way. Please, tell me - how i can record fields by administrator. Maybe i must add some layers in my schemahandling on resources? But it doesn't work. <br>
<br>
---------- Forwarded message --------- <br>
От: Али Саад < [ mailto:<a href="mailto:gerardo.saad@gmail.com" target="_blank">gerardo.saad@gmail.com</a> | <a href="mailto:gerardo.saad@gmail.com" target="_blank">gerardo.saad@gmail.com</a> ] > <br>
Date: пн, 3 нояб. 2025 г. в 01:54 <br>
Subject: Fwd: Some tricky questions about develop connectors. Hello! <br>
To: [ mailto:<a href="mailto:info@evolveum.com" target="_blank">info@evolveum.com</a> | <a href="mailto:info@evolveum.com" target="_blank">info@evolveum.com</a> ] < [ mailto:<a href="mailto:info@evolveum.com" target="_blank">info@evolveum.com</a> | <a href="mailto:info@evolveum.com" target="_blank">info@evolveum.com</a> ] > <br>
<br>
<br>
<br>
<br>
---------- Forwarded message --------- <br>
От: Али Саад < [ mailto:<a href="mailto:gerardo.saad@gmail.com" target="_blank">gerardo.saad@gmail.com</a> | <a href="mailto:gerardo.saad@gmail.com" target="_blank">gerardo.saad@gmail.com</a> ] > <br>
Date: сб, 1 нояб. 2025 г. в 19:46 <br>
Subject: Some tricky questions about develop connectors. Hello! <br>
To: < [ mailto:<a href="mailto:midpoint@lists.evolveum.com" target="_blank">midpoint@lists.evolveum.com</a> | <a href="mailto:midpoint@lists.evolveum.com" target="_blank">midpoint@lists.evolveum.com</a> ] > <br>
<br>
<br>
Hello! Could you please explain the difference between the setRequired(true) and setCreateable(true) flags when defining ConnId attributes? 1. If the UID is generated by the target system, should we set required=false and createable=false? 2. For the Name attribute that midPoint must send when creating an account — should both flags be set to true? 3. If an attribute can be provided during object creation but is not mandatory, should it be required=false and createable=true? 4. Is it correct that we should never use required=true together with createable=false? Am I right that required=true means the attribute must be included in the Set<Attribute> passed to the create() method of the CreateOp interface? No to other operations. Only for Create? I'm trying to understand the practical meaning of these flags when designing a connector schema. 5. Additionally, I’m still confused about how account creation actually works in practice. For example, if I want to manually set the UID or other attributes when creating an account — how is this done? Is it controlled by inbound/outbound mappings, or by the connector schema itself? It’s quite hard to understand how midPoint decides which attributes to send during account creation on the first try. (I'm using midPoint 4.9.) 6. And one last question: what is the purpose of setReturnedByDefault(true)? Is it true that midPoint simply won’t expect such attributes by default, but it will still accept attributes marked with setReturnedByDefault(false) if they are present in the resource response? 7. I would also like to mention that I created an attribute on the diagram as a string for locking and unlocking __ENABLE__. Am I correct in understanding that Midpoint will still create it on the diagram with the type that it defines and recognizes—that is, as Boolean for special system attributes? According to the Special-Purpose Attributes table? Thank you very much in advance! <br>
<br>
_______________________________________________<br>
midPoint mailing list<br>
<a href="mailto:midPoint@lists.evolveum.com" target="_blank">midPoint@lists.evolveum.com</a><br>
<a href="https://lists.evolveum.com/mailman/listinfo/midpoint" rel="noreferrer" target="_blank">https://lists.evolveum.com/mailman/listinfo/midpoint</a><br>
</blockquote></div></div>