OIMユーザーのアカウント・データを保持するために、プロセス・フォームおよび子フォームが使用されます。フォームは、フォーム上のフィールドを追加、変更または削除することによってアップグレードできます。たとえば、アップグレード操作の一部として、「入社日」フィールドを追加し、フォームから出生国フィールドを削除できます。さらに、親フォームから子フォームにフィールドを移動できます。Oracle Identity Managerフォーム・バージョン制御(FVC)ユーティリティを使用すると、フォームのアップグレード操作後にフォーム・データの変更を簡単に管理できます。
FVCユーティリティは、Oracle Identity Managerデータベース上で直接機能するコマンドライン・ユーティリティです。Oracle Identity Manager Design Consoleをインストールする場合、このユーティリティはOIM_DC_HOMEディレクトリにあります。このユーティリティで実行する必要があるフォーム・データの更新を指定するには、プロパティ・ファイルを使用します。
このユーティリティは、プロビジョニング・プロセス・フォームおよびその関連子フォームでのフィールド・マッピングとデータ更新をサポートしています。
注意: FVCユーティリティでは、次の機能は実行できません。
さらに、リリース間でフォーム関連の変更がない場合は、FVCユーティリティを実行する必要はありません。 |
この章の内容は次のとおりです。
FVCユーティリティを使用すると、単一の実行で次のフォーム変更に対応するフォーム・データの更新を管理できます。
親フォームのフィールド名が変更される場合。
子フォームのフィールド名が変更される場合。
フィールドが親フォームから子フォームに移動される場合。
フィールドが親フォームから親フォームに移動される場合。
フィールドが子フォームから親フォームに移動される場合。このシナリオは、子フォームに単一のレコードが含まれている場合にのみサポートされます。
フィールドが子フォームから、同じ親フォームの別の子フォームに移動される場合。このシナリオは、移動元の子フォームに単一のレコードが含まれている場合にのみサポートされます。
フィールドが子フォームから、同じ親フォームの別の子フォームに移動される場合。このシナリオは、子フォームに単一のレコードが含まれている場合にのみサポートされます。
フィールドが子フォームから親フォームに移動され、移動されるフィールドのデータ型が、親フォームで「参照フィールド」または「コンボ・ボックス」型から「チェック・ボックス」型に変更される場合。
前述のいずれかのユースケースで、親フォームのフィールドのデータ型が「参照フィールド」または「コンボ・ボックス」型から「チェック・ボックス」型に変更される場合。
前述のいずれかのユースケースで、フィールド名の大文字と小文字が変更される場合。たとえば、フィールド名がMyField
からmyfield
に変更される場合。
フィールドのデータ型が「参照フィールド」または「コンボ・ボックス」型から「チェック・ボックス」型に変更され、フォームに対してそれ以外の変更は行われない場合。
特定のOIMユーザーについて、USR表のユーザー・レコードのステータスがDeleted
でない場合にのみ、ユーティリティでアカウント・データの更新が続行される場合。
USR表のステータスがDeleted
でないOIMユーザーについて、アカウントのステータスがRevoked
でない場合にのみ、ユーティリティでUD_表のアカウント・データが更新される場合。
次のシナリオでは、FVCユーティリティを使用してフォーム・データを更新できません。
フィールドが複数のプロセス(親)フォームにわたって変更される場合。
フィールドが同じフォームの複数のフィールドにマップされる場合。
フィールドが異なる子フォームの複数のフィールドにマップされる場合。
フィールドのデータ型が「参照フィールド」または「コンボ・ボックス」型以外の型から変更される場合。
フィールドのデータ型が、「参照フィールド」または「コンボ・ボックス」型から「チェック・ボックス」型以外の型に変更される場合。
複数のフィールドが1つのフィールドに結合される場合。
FVCユーティリティの各実行中に、次の手順が実行されます。
FVCユーティリティによって実行されるデータ変換処理に関する情報は、プロパティ・ファイルに格納されます。ユーティリティはこのプロパティ・ファイルの内容を読み取ります。
ユーティリティはUSR表のレコードのオブジェクト・ステータスをチェックします。次の手順は、レコードのステータスによって異なります。
ユーザーのレコードがDeleted状態の場合、ユーティリティは次のユーザーのレコードに進みます。
ユーザーのレコードがDeleted状態でない場合、ユーティリティはそのユーザーのコネクタ固有(UD_)表のアカウント・レコードのステータスをチェックします。次の手順は、アカウント・レコードごとに、そのステータスによって異なります。
アカウント・レコードがRevoked状態の場合、ユーティリティはそのユーザーの次のアカウント・レコードに進みます。
アカウント・レコードがRevoked状態でない場合、ユーティリティはプロパティ・ファイルで指定されている更新を実行します。
特定のアカウント・レコードについて、ユーティリティは最初にレコードのバージョンを更新し、次にプロパティ・ファイルで指定されているデータを更新します。
注意: エラーが発生した場合、コマンド・ウィンドウにエラー・メッセージが表示されます。エラーの原因を修正してユーティリティに戻った後、エラーの発生前に更新されていたレコードは再度処理されません。 |
次に、FVCユーティリティのコンポーネントを示します。
注意: Design Consoleをインストールする場合、これらのファイルはOIM_DC_HOMEディレクトリにコピーされます。 |
プロパティ・ファイル: .properties
拡張子の付いたファイルは、ユーティリティを実行するプロセス・フォーム、子フォームおよびリソース・オブジェクトの詳細を指定するために使用します。サンプルとしてfvc.propertiesファイルが提供されています。新しいプロパティ・ファイルを使用する場合は、このファイルの名前をfvcutil.shまたはfvcutil.cmdで変更する必要があります。
xlFvcUtil.jar: このJARファイルには、FVCユーティリティを実行するのに必要なユーティリティのクラスが含まれます。
fvcutil.shおよびfvcutil.cmd: このスクリプトを使用してユーティリティを実行します。
次の項では、FVCユーティリティを使用する手順について説明します。
前述のように、FVCユーティリティで実行するデータ変換処理を定義するには、プロパティ・ファイルを使用します。プロパティ・ファイルを作成または更新する必要があるかどうかは、アップグレードのシナリオによって異なります。
コネクタの事前定義済リリースから事前定義済リリースにアップグレードする場合は、コネクタ・デプロイメント・パッケージでプロパティ・ファイルを見つけます。
カスタム・リリースからアップグレードする場合、またはカスタム・リリースにアップグレードする場合は、プロパティ・ファイルで必要なエントリを追加する必要があります。
コネクタのカスタム・リリースから事前定義済リリースにアップグレードする場合は、コネクタのプロセス・フォームおよび子フォームへの変更に関する情報がコネクタ・ガイドに記載されているかどうかを確認します。この情報を使用して、プロパティ・ファイルで追加する必要があるエントリを決定できます。
次に、プロパティ・ファイルのサンプル・エントリを示します。
ResourceObject;OID User FormName;UD_OID_USR FromVersion;8 ToVersion;9 Parent;UD_OID_USR_DEFTVAL;ABC Child;UD_OID_GRP_NORMALFIELD;XYZ;Update ParentChild;UD_OID_USR_FNAME;UD_OID_GRP_NORMALFIELD ChildChild;UD_OID_GRP_GROUP_NAME;UD_OID_GRP_NORMALFIELD ChildParent;UD_OID_GRP_NORMALFIELD;UD_OID_USR_LNAME ParentParent;UD_OID_USR_FNAME;UD_OID_USR_LOGIN; ParentParentLookupOrComboToCheckBox;UD_OID_USR_PREF_LANG;UD_OID_USR_CHKBOXTEST ChildParentLookupOrComboToCheckBox;UD_OID_GRP_GROUP_NAME;UD_OID_USR_CHKBOXTEST ChildDiffChild;UD_OID_GRP_NORMALFIELD;UD_OID_ROLE_DIFFFIELD
プロパティ・ファイルでエントリを追加または変更する際には、次のガイドラインが適用されます。
注意: ガイドラインをよりよく理解するには、前述のサンプル・エントリを参照してください。 |
プロパティ・ファイルで、各行は、ユースケース名、古いフィールド名および新しいフィールド名で構成されます。これらはセミコロンで区切られます。
たとえば、プロパティ・ファイルの次のエントリについて考えてみます。
ParentChild;UD_OID_USR_FNAME;UD_OID_GRP_NORMALFIELD
ParentChild: 親のフィールドの名前が変更されたか、または親のフィールドが新しい子フォームへ移動されたことを表します。
UD_OID_USR_FNAME: 親フォームでの古いフィールド名を表します。
UD_OID_GRP_NORMALFIELD: 新しいフォームでアップグレードされるフィールドの新しい名前を表します。
注意: セミコロンの直後を除き、値にスペースを含めることができます。 |
プロパティ・ファイルに次の行を含める必要があります。
注意: プロパティ・ファイルでのこれらの4行の場所と順序は重要ではありません。 |
ResourceObject;
RESOURCE_OBJECT_NAME
この行では、RESOURCE_OBJECT_NAME
をリソース・オブジェクトの名前に置き換えます。
サンプル行:
ResourceObject;OID User
FormName;
FORM_NAME
この行では、FORM_NAME
をプロセス(親)フォームの名前に置き換えます。
サンプル行:
FormName;UD_OID_USR
FromVersion;
CURRENT_VERSION_OF_FORM
この行では、CURRENT_VERSION_OF_FORM
をフォームの現在のバージョンに置き換えます。
注意: FVCユーティリティを実行する場合、バージョンが |
サンプル行:
FromVersion;8
ToVersion;
NEW_VERSION_OF_FORM
この行では、NEW_VERSION_OF_FORM
をフォームの新しいバージョンに置き換えます。
注意: バージョンが変更されていないフォームのフォーム・データを更新する場合は、 |
サンプル行:
ToVersion;9
次の行は、任意に組み合せてプロパティ・ファイルに含めることができます。
Parent;
FIELD_NAME;DEFAULT_FIELD_VALUE;
Update
親フォームのすべてのレコードに対して、ユーティリティはFIELD_NAME
フィールドの値をDEFAULT_FIELD_VALUE
で更新します。
注意: 親フォームで必須(必要な)フィールドが追加された場合は、必須フィールドのプロパティ・ファイルにこの行を含める必要があります。 |
サンプル行:
Parent;UD_OID_USR_DEFTVAL;MyString;Update
Child;
FIELD_NAME;DEFAULT_FIELD_VALUE;
Update
子フォームのすべてのレコードに対して、ユーティリティはFIELD_NAME
フィールドの値をDEFAULT_FIELD_VALUE
に更新します。
注意: 子フォームで必須(必要な)フィールドが追加された場合は、プロパティ・ファイルにこの行を含める必要があります。 |
サンプル行:
Child;UD_OID_GRP_NORMALFIELD;XYZ;Update
ParentParent;
OLD_FIELD_NAME;NEW_FIELD_NAME
親フォームで、ユーティリティはデータをOLD_FIELD_NAME
フィールドからNEW_FIELD_NAME
フィールドに移動します。
サンプル行:
ParentParent;UD_OID_USR_FNAME;UD_OID_USR_DEFTVAL;
ParentParentLookupOrComboToCheckBox;OLD_FIELD_NAME;NEW_FIELD_NAME;
親フォームで、「チェック・ボックス」型フィールドに変更され、名前も変更された「参照フィールド」または「コンボ・ボックス」型フィールドについて、このフィールドの値がTrue(大/小文字は区別されません)の場合、ユーティリティは各レコードのチェック・ボックスを選択済の状態に設定します。それ以外の値の場合、ユーティリティはチェック・ボックスを選択解除の状態に設定します。
サンプル値:
ParentParentLookupOrComboToCheckBox;UD_OID_USR_PREF_LANG;UD_OID_USR_CHKBOXTEST
ChildChild;
OLD_FIELD_NAME;NEW_FIELD_NAME
子フォームで、ユーティリティは以前のバージョンのOLD_FIELD_NAME
フィールドから新しいバージョンのNEW_FIELD_NAME
フィールドにデータをコピーします。
サンプル行:
ChildChild;UD_OID_GRP_GROUP_NAME;UD_OID_GRP_NORMALFIELD
ParentChild;
OLD_FIELD_NAME;NEW_FIELD_NAME
OLD_FIELD_NAME
フィールドが親フォームから子フォームへ移動され、NEW_FIELD_NAME
という名前に変更されました。ユーティリティはデータをOLD_FIELD_NAME
フィールドからNEW_FIELD_NAME
フィールドに移動します。
サンプル行:
ParentChild;UD_OID_USR_FNAME;UD_OID_GRP_NORMALFIELD
ChildParent;
OLD_FIELD_NAME;NEW_FIELD_NAME
OLD_FIELD_NAME
フィールドが子フォームから親フォームへ移動され、NEW_FIELD_NAME
という名前に変更されました。ユーティリティはデータをOLD_FIELD_NAME
フィールドからNEW_FIELD_NAME
フィールドに移動します。
サンプル行:
ChildParent;UD_OID_GRP_NORMALFIELD;UD_OID_USR_DEFTVAL
ChildParentLookupOrComboToCheckBox;OLD_FIELD_NAME;NEW_FIELD_NAME
「参照フィールド」または「コンボ・ボックス」型フィールド(OLD_FIELD_NAME
)が「チェック・ボックス」型フィールドに変更され、子フォームから親フォームに移動されます。親フォームで、このフィールドの値がTrue(大/小文字は区別されません)の場合、ユーティリティは各レコードのチェック・ボックスを選択済の状態に設定します。それ以外の値の場合、ユーティリティはチェック・ボックスを選択解除の状態に設定します。
サンプル行:
ChildParentLookupOrComboToCheckBox;UD_OID_GRP_GROUP_NAME;UD_OID_USR_CHKBOXTEST
ChildDiffChild;
OLD_FIELD_NAME;NEW_FIELD_NAME
ユーティリティは、移動元の子フォームのOLD_FIELD_NAME
フィールドから移動先の子フォームのNEW_FIELD_NAME
フィールドへデータを移動します。
注意: この更新は、移動元の子フォームに単一の行が含まれている場合にのみ実行されます。移動元の子フォームに複数の行が含まれているシナリオはサポートされません。 |
サンプル行:
ChildDiffChild;UD_OID_GRP_NORMALFIELD;UD_OID_ROLE_DIFFFIELD
ユーティリティを実行する前に、次の手順を実行します。
FVCユーティリティ・スクリプトで次のようにJavaホーム・ディレクトリ・パスを設定します。
使用しているオペレーティング・システムおよびアプリケーション・サーバーに応じて、テキスト・エディタで次のいずれかのファイルを開きます。
fvcutil.sh
fvcutil.cmd
set JAVA_HOME
を検索します。
次の例に示すように、Javaホーム・ディレクトリ・パスを設定します。
set JAVA_HOME=C:\Java\
ファイルを保存して閉じます。
ユーティリティを実行するプロセス(親)フォームのバージョンがアクティブ・バージョンであることを確認します。
フォームのバージョンがアクティブ・バージョンであるかどうかを確認するには、次の手順を実行します。
Design Consoleにログインします。
「Development Tools」フォルダを開き、「Form Designer」をダブルクリックします。
このフォームを検索して開きます。
フォームのアクティブ・バージョン・フィールドに、フォームのアクティブ・バージョンが表示されます。
ユーティリティは、フィールドがエラー処理アダプタに関連付けられている場合、フォーム・フィールドを更新できません。フィールドがエラー処理アダプタに関連付けられている場合は、次のようにアダプタへの関連付けを解除します。
注意: ユーティリティの実行後、フィールドとそのエラー処理アダプタ間の関連を再度設定できます。その方法については、この章で後述します。 |
Design Consoleにログインします。
「Process Management」フォルダを開き、「Process Definition」をダブルクリックします。
コネクタのプロセス定義を検索して開きます。
フィールドを更新するタスクの名前をメモします。
タスクをダブルクリックします。たとえば、「userID」フィールドにエラー処理アダプタがある場合は、「updateUserID」タスクをダブルクリックします。
「タスクの編集」ダイアログ・ボックスの「統合」タブで、アダプタ変数名とその説明をメモします。
「削除」をクリックします。
イベント・ハンドラ・アダプタを削除することを確認するには、表示されたメッセージで「OK」をクリックします。
「保存」をクリックします。
注意: フォーム・バージョンが変更されるたびにFVCユーティリティを実行する必要があります。 |
次のスクリプトを実行します。
Unixの場合:
sh fvcutil.sh
Windowsの場合:
fvcutil.bat
これにより、次の詳細を入力するように要求されます。
Oracle Identity Manager管理者のユーザー名の入力: Oracle Identity Manager管理者のユーザー名を入力します。
Oracle Identity Manager管理者のパスワードの入力: Oracle Identity Manager管理者のパスワードを入力します。
ロガー・レベルの入力: ロガー・レベルを入力します。DEBUG、WARN、INFOまたはERRORを指定できます。
ロガーの場所の入力: ユーティリティで各実行の終了時に作成するログ・ファイルの場所と名前を入力します。たとえば、<Path name>/FVC.logのようにします。
表28-1に、ログ・ファイルに記録される可能性があるエラー・メッセージ、および問題を修正するために実行できる対応するアクションを示します。
表28-1 エラー・メッセージおよび解決策
エラー・メッセージ | 解決策 |
---|---|
名前OBJECT_NAMEのオブジェクトが見つかりませんでした |
プロパティ・ファイルで指定されているリソース・オブジェクトの名前を確認します。名前の綴りが正しいことを確認してください。 |
名前がFORM_NAMEのフォームが見つかりませんでした |
プロパティ・ファイルで指定されているフォームの名前を確認します。名前の綴りが正しいことを確認してください。 |
フォームのアクティブ・バージョンが見つかりませんでした。 |
新規に作成されたフォームがコミットされておらず、Active状態に設定されていない可能性があります。フォームがActive状態であることを確認します。 |
ToVersion値とフォームのアクティブ・バージョンが一致しません。 |
ToVersion値が現在アクティブなフォームのバージョンと同じであることを確認します。 |
ToVersion値またはFromVersion値が有効なバージョンではありません。 |
ToVersion値およびFromVersion値が正しいことを確認します。 |
FIELD_NAMEフィールドがOracle Identity Managerデータベースに存在しません。 |
フィールド名の綴りが正しいことを確認してください。 |