# AddUserToGroups

Required Frends version: 5.5+

Required .NET version: 6.0

Compatible Agents: Crossplatform

Source code: <https://github.com/FrendsPlatform/Frends.LDAP>

{% tabs %}
{% tab title="Parameter: Input" %}

| Name                                  | Description                                                                                                                                                                                                                                                                                    |
| ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| UserDistinguishedName : `String`      | <p>User's distinguished name (DN)</p><p><br>Default: <code>-</code><br>Example: <code>CN=Tes Tuser,ou=users,dc=wimpi,dc=net</code></p>                                                                                                                                                         |
| GroupDistinguishedNames : `String[]`  | <p>Group distinguished name(s) (DN) to add the user to. Can specify one or multiple groups.</p><p><br>Default: <code>-</code><br>Example: <code>new\[] { "cn=admin,ou=roles,dc=wimpi,dc=net", "cn=developers,ou=roles,dc=wimpi,dc=net" }</code></p>                                            |
| UserExistsAction : `UserExistsAction` | <p>Handle user exists exception.</p><p>Possible values:</p><ul><li><code>Throw</code>:</li></ul><p>Handle user exists exception.</p><ul><li><code>Skip</code>:</li></ul><p>Handle user exists exception.</p><p><br>Default: <code>0</code><br>Example: <code>UserExistsAction.Throw</code></p> |
| {% endtab %}                          |                                                                                                                                                                                                                                                                                                |

{% tab title="Parameter: Connection" %}

| Name                          | Description                                                                                                                                                                                                                 |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Host : `String`               | <p>LDAP server host.</p><p>This must resolve to a Domain Controller (FQDN) in the same domain</p><p>as the target group being modified.</p><p><br>Default: <code>-</code><br>Example: <code>dc1.emea.company.com</code></p> |
| Port : `Int32`                | <p>Port. Value 0 = use LDAP/LDAPS default port which is 389 or 636 depending on (SecureSocketLayer) and (TLS).</p><p><br>Default: <code>0</code><br>Example: <code>389</code></p>                                           |
| SecureSocketLayer : `Boolean` | <p>Perform secure operation.</p><p><br>Default: <code>-</code><br>Example: <code>true</code></p>                                                                                                                            |
| TLS : `Boolean`               | <p>Connection is protected by TLS.</p><p><br>Default: <code>-</code><br>Example: <code>true</code></p>                                                                                                                      |
| User : `String`               | <p>User.</p><p><br>Default: <code>-</code><br>Example: <code>Foo</code></p>                                                                                                                                                 |
| 🗝Password : `String`         | <p>Password.</p><p><br>Default: <code>-</code><br>Example: <code>Bar123</code></p>                                                                                                                                          |
| {% endtab %}                  |                                                                                                                                                                                                                             |

{% tab title="Result: Result" %}

| Name                                | Description                                                                                                                                                                                                                                                                                                        |
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Success : `Boolean`                 | <p>Update completed.<br>Example: <code>true</code></p>                                                                                                                                                                                                                                                             |
| Error : `String`                    | <p>LDAP Error message. Only populated when operation fails.<br>Example: <code>Entry Already Exists</code></p>                                                                                                                                                                                                      |
| Details : `String`                  | <p>Operation details. Contains information about added and skipped groups when applicable.<br>Example: <code>Added to 2 group(s): cn=admin,ou=roles,dc=wimpi,dc=net, cn=managers,ou=roles,dc=wimpi,dc=net. Skipped 1 group(s): cn=developers,ou=roles,dc=wimpi,dc=net: User already exists in the group</code></p> |
| UserDistinguishedName : `String`    | <p>User DN.<br>Example: <code>CN=Tes Tuser,ou=users,dc=wimpi,dc=net</code></p>                                                                                                                                                                                                                                     |
| GroupDistinguishedName : `String[]` | <p>Group DN(s).<br>Example: <code>new\[] { "cn=admin,ou=roles,dc=wimpi,dc=net" }</code></p>                                                                                                                                                                                                                        |
| {% endtab %}                        |                                                                                                                                                                                                                                                                                                                    |

{% tab title="Changelog" %}

## Changelog

### \[2.1.0] - 2026-02-03

#### Changed

* Improved documentation for Host parameter usage

### \[2.0.0] - 2026-01-29

#### Changed

* \[Breaking] Input: Changed GroupDistinguishedName (string) to GroupDistinguishedNames (string\[]) to support adding users to multiple groups in a single operation.
* Result: Added Details property for operation details. Error now only contains error messages for failures.

### \[1.2.0] - 2025-11-20

#### Fixed

* Fixed LDAP exception when adding duplicate users with skip option enabled.

### \[1.1.0] - 2025-08-13

#### Fixed

* Fixed KeyNotFoundException when checking empty groups for existing users.

### \[1.0.1] - 2024-03-01

#### Fixed

* Fixed issue with UserExistsAction parameter when AD returned another error message by adding method to actually check if the user is in the group.

### \[1.0.0] - 2022-10-07

#### Added

* Initial implementation
  {% endtab %}
  {% endtabs %}
