> For AI agents: the complete documentation index is available at /resource/ucidm/docs/on-premise/dev/llms.txt, the full documentation bundle is available at /resource/ucidm/docs/on-premise/dev/llms-full.txt.

# UCIDM アプリケーション アップデート時の移行作業 \{#ucidm-app-update-tasks}

UCIDM アプリケーション のアップデート時に必要となる作業について記載しています。

### 1.10.0 (2026-07-27) から 1.11.0 (2026-xx-yy) へアップデートするときに必要となる作業 \{#from-1-10-0-to-1-11-0}

#### 属性定義のスクリプトの実行条件の変更 \{#update-mapping-script-depends}

ユーザープロファイル画面の [属性定義のスクリプト](/resource/ucidm/docs/on-premise/dev/administration/ucidm-ui/admin.md#mapping-script-example) の modify スクリプトを実行する条件が変わります。
1.10.0 までは「スクリプトを動かす属性」がすべて更新のリクエストデータに含まれるときだけ実行していました。
1.11.0 からは「スクリプトを動かす属性」のうち 1 つでもリクエストデータに含まれていれば実行します。
このとき、リクエストデータに含まれない「スクリプトを動かす属性」は変更前エントリーの値で補完され、第 2 引数の reqUpd にセットされます。

設定の自動マイグレーションはありません。
「スクリプトを動かす属性」を 2 つ以上設定している属性では、1.10.0 まで実行されなかった一部の属性だけの更新でもスクリプトが実行され、導出先の属性が更新されるようになります。

複数の「スクリプトを動かす属性」がすべて更新されたときだけスクリプトを実行することを期待している場合は、スクリプトの変更が必要です。
実行条件そのものは設定できないため、スクリプト内で第 1 引数の attr と第 2 引数の reqUpd の値を比較し、更新されていない「スクリプトを動かす属性」があれば null を返して値をセットしないようにします。

```javascript
function modify(attr, reqUpd, reqDel, roleName) {
  var deps = ["sn", "givenname"];
  var updated = deps.every(function (dep) {
    return (
      Object.hasOwn(reqUpd, dep) &&
      (!Object.hasOwn(attr, dep) || reqUpd[dep][0] !== attr[dep][0])
    );
  });
  if (!updated) {
    return null;
  }
  return [`${reqUpd.sn[0]} ${reqUpd.givenname[0]}`];
}
```

この判定では、変更前と同じ値で「スクリプトを動かす属性」を更新したときも、更新されていないものとして扱われます。
補完された値と、変更前と同じ値で更新された値をスクリプトから区別できないためです。

#### パスワードポリシーのテンプレートの埋め込み変数の変更 \{#update-ppolicy-template-flags}

ユーザープロファイル画面の [パスワードポリシーのテンプレート](/resource/ucidm/docs/on-premise/dev/administration/ucidm-ui/admin.md#password-policy-design-variables) で、次の 2 つの埋め込み変数の値が変わります。

| 埋め込み変数                 | 1.10.0 まで | 1.11.0 から    |
| :--------------------- | :-------- | :----------- |
| .PwdNotContainName     | ○ / ×     | true / false |
| .PwdNotSameOldPassword | ○ / ×     | true / false |

数値と文字列の埋め込み変数は変わりません。
変わるのは表示だけで、パスワードのチェックには影響しません。

テンプレートを一度も保存していない環境では、作業は不要です。
製品に同梱したテンプレートがそのまま使われます。

テンプレートを保存したことがあり、この 2 つの変数をそのまま表示している場合は、画面に true / false と表示されるようになります。
[デザイン設定](/resource/ucidm/docs/on-premise/dev/administration/ucidm-ui/admin.md#design-settings-details) のパスワードポリシーの編集画面で、日本語と英語のテンプレートを [条件](/resource/ucidm/docs/on-premise/dev/administration/ucidm-ui/admin.md#password-policy-design-conditions) を使って書き直してください。

1.10.0 までの書き方の例です。

```html
<td>ユーザー名を含めない</td>
<td>.PwdNotContainName</td>
```

1.11.0 からは、状態ごとに文章を書きます。

```html
<td>ユーザー名</td>
<td>
  [if .PwdNotContainName]ユーザー名を含めることはできません。
  [else]ユーザー名を含めても構いません。[/if]
</td>
```

### 1.9.0 (2026-03-11) から 1.10.0 (2026-07-27) へアップデートするときに必要となる作業 \{#from-1-9-0-to-1-10-0}

#### DN マッピング設定の更新 \{#update-dn-mapping}

DN マッピング設定は 1.9.0 から 1.10.0 へのアップデートで自動でマイグレーションが走り以下のように移行されます。

1.9.0 で設定していた DN マッピングの最初の要素の設定が移行されます。最初の要素以降の設定は移行されません.

- DN 変換先の RDN 属性名
  - RDN 属性名の値として反映されます。
- DN の変換先部分
  - 配置先 DN の値として反映されます。
- 連携元の階層構造を反映する
  - true がセットされます
  - 元々の DN マッピングの動きとして階層構造も反映される動きになっているので、互換性のためこちらは true にセットされます
- DN の変換元部分
  - DN の変換元部分の値として反映されます。

DN マッピングが元々複数の設定で構成されていた。連携元の階層構造を反映する必要はない。などの場合、設定を変更してください。

#### SCIM 外部連携設定の更新 \{#update-scim-federation-setting}

1.9.0 までで設定していた SCIM 外部連携の以下動作設定は 1.10.0 ではなくなります。1.9.0 から 1.10.0 へのアップデートで自動でマイグレーションが走り、フィールドごと削除されます。

- userName 属性の前につける固定値
- userName 属性の後につける固定値

1.10.0 ではこちらに相当する機能として PrimaryID マッピングが増えました。元々の SCIM 外部連携設定として、「userName 属性の前につける固定値」や「userName 属性の後につける固定値」を設定していた場合、PrimaryID マッピングの設定が必要となります。

例として、以下のような設定をしていた場合、

- userName 属性の前につける固定値
  - systemA-
- userName 属性の後につける固定値
  - @example.com

PrimaryID マッピングで以下のように設定を行う必要があります。

```
function mapPrimaryID(){
    return "systemA-" + UCIDM_PRIMARY_ID + "@example.com";
}
```

#### ObjectClass マッピングの移行 \{#transfer-objectclass-mapping}

1.9.0 までで設定していた ObjectClass マッピングは 1.10.0 ではなくなります。

LDAP/AD 外部連携設定にて ObjectClass マッピングを設定していた場合、属性マッピングにて ObjectClass 属性に対して外部連携したい ObjectClass の値を設定されるよう変更してください。

### 1.8.0 (2025-10-14) から 1.9.0 (2026-03-11) へアップデートするときに必要となる作業 \{#from-1-8-0-to-1-9-0}

#### ユーザー/グループの表示・属性値設定のparentDNの更新 \{#update-parentdn}

ユーザー/グループの表示・属性値設定でparentDNを設定している場合、各ouのbaseとなる部分を追加して更新を行う必要があります。

取得後の値を変更していないのであれば、一度parentDNの属性設定を削除して更新し、`ucidmParentDN` と入力して値を再取得して更新することができます。

### 1.6.0 (2025-02-18) から 1.7.0 (2025-05-02) へアップデートするときに必要となる作業 \{#from-1-6-0-to-1-7-0}

#### Agent にて使用している cookie 情報の設定 （Agent モジュール） \{#agent-cookie-settings}

連携元として OpenLDAP を使っている場合、Agent のコンテナ再起動前に compose.yml の volumes に指定したディレクトリ (./agent-data/openldap) 配下に syncrepl.entrycsn を作成して作業する日時情報を entryCSN として書き込みしておく必要があります。（設定例は以下）

```
20250227013556.214103Z#000000#000#000000
```

#### 属性マッピング設定の更新 （UCIDM API、ユーザープロファイル画面） \{#attribute-mapping-update}

すでにユーザープロファイルの表示・属性値設定画面にて属性のマッピング設定が定義されている場合、マッピング設定内容を書き換える必要があります。（リクエストパラメーターに対象属性が存在しないときにマッピングを行う動きになったことを考慮する必要があります。）

#### 管理者アカウントのページにアクセスする設定 （ユーザープロファイル画面） \{#admin-account-page-access}

ucidm-ui コンテナの environment に以下を追加します。

```
PUBLIC_ADMIN_UI_URL: "${ADMIN_UI_URL}"
```

環境変数の env ファイルについては以下の追加が必要になります。

```
ADMIN_UI_URL="https://{ホスト名}/sys"
```

#### 通知メッセージを設定 （UCIDM API、ユーザープロファイル画面） \{#notification-message-settings}

mongosh で、name コレクションに `userAttributesNotify` のレコードを追加する必要があります。

```
$ docker compose exec mongo bash
```

mongo コンテナ内

```
mongosh -u ユーザー名 -p パスワード "mongodb://localhost:37017"
use ucidm
userAttributesNotifyのレコードが存在しないことを確認
db["name"].find()

db["name"].insertOne({_id: "userAttributesNotify", t: {}})

userAttributesNotifyのレコードが存在することを確認
db["name"].find()
```

#### オプション値の表示名を設定 （UCIDM API、ユーザープロファイル画面） \{#option-display-name-settings}

mongosh で、name コレクションに `userAttributesOptions` と `groupAttributesOptions` のレコードを追加する必要があります。

```
$ docker compose exec mongo bash
```

mongo コンテナ内

```
mongosh -u ユーザー名 -p パスワード "mongodb://localhost:37017"
use ucidm
userAttributesOptions と groupAttributesOptions のレコードが存在しないことを確認
db["name"].find()

db["name"].insertOne({_id: "userAttributesOptions", t: {}})
db["name"].insertOne({_id: "groupAttributesOptions", t: {}})

userAttributesOptions と groupAttributesOptions のレコードが存在することを確認
db["name"].find()
```

#### ルート設定の更新 （UCIDM API、ID 連携管理画面） \{#route-settings-update}

ルート設定の内容を更新する必要があります。

ID 連携管理画面の各ルート設定画面にて、ユーザー用とグループ用の連携条件を設定し、更新を行って下さい。

元々連携条件が設定されていないルート設定については、ルート設定詳細画面を開いてそのまま「更新」ボタンを押してください。
