ID ボールトで複数ユーザーに対し一括でダウンロードカウントを設定する

#この記事について
Notes/Domino の機能として提供されている ID ボールト(ID Vault)で、複数ユーザーに対して一括でダウンロードカウントを設定する方法について記載しています。
ある程度 Notes/Dominoで の開発経験がある方向けの内容となっていますので、ご了承ください。

#ID ボールトの基本情報
そもそも、ID ボールトとは？という方のためにID ボールトの機能や設定方法についてのリンクです。

[ID ボールトの機能](https://help.hcltechsw.com/domino/11.0.0/nl/ja/conf_howanidvaultworks_c.html)
HCL Domino 11.0 Administrator ヘルプ内の機能説明です。

[ID ボールトの構築とトラブルシューティング](https://www.ibm.com/developerworks/jp/lotus/library/2014_idvault_guide.html)
IBM developerWorks の記事なので、いつまで閲覧できるかわかりませんが、ID ボールトの設定方法、問題が発生した場合のトラブルシューティングなどがわかりやすくまとまっています。


#ID ボールトのダウンロードカウント
ID ボールトの機能を使用すると、Notes クライアントセットアップ時にローカルに ID ファイルがなくても、ユーザー名、パスワード情報を入力すれば、Domino サーバー上に配置されているID ボールト DB から ID ファイルをダウンロードすることが可能です。
ただし、この機能を使用する場合は、ID ファイルをダウンロードできるように事前に設定しておく必要があります。

[ID のダウンロードでダウンロード権限を要求する](https://help.hcltechsw.com/domino/11.0.0/nl/ja/conf_requiringauthorizationforiddownloads_t.html)

また、ID ファイルをダウンロードできる回数(以下、ダウンロードカウントと記述します)の指定方法は以下のヘルプに記載があります。

[ユーザーが ID をダウンロード可能な回数を指定する](https://help.hcltechsw.com/domino/11.0.0/nl/ja/conf_specifyingthenumberofiddownloadsallowedforauser_t.html)

ID ファイルのダウンロードカウントは、ユーザーごとにそれぞれ指定する必要があり、複数のユーザーに対して一括でダウンロード回数を指定することができません。
一度に数十名のユーザーに対してダウンロードカウントを指定したい、という場合には大変に面倒くさい。ということで、一括設定するスクリプトを書いてみよう、というのが今回の記事となります。

#ダウンロードカウントを確認する
ID ファイルのダウンロードカウント等の情報はボールト DB (デフォルトでは データディレクトリの IBM_ID_VAULT 以下に配置されています)の各ユーザーごとの文書内で確認可能です。確認箇所は以下となります。
[Downloads]-[Maximum allowed] 
文書のプロパティで確認すると、このフィールドは"IDDLAllowedCount"として設定されています。ここを変更すれば良さそうです。

#ここからが本題。実際にカウント回数を設定してみる

ということで、LotusScriptで対象の文書の"IDDLAllowedCount"フィールドに1を設定し、保存。その後クライアントをセットアップし自動的にダウンロードできるか確認してみました。が、エラーが出てダウンロードできません。このフィールドを変更だけでは駄目なようです。
ヘルプの記載通りに管理クライアントからダウンロードカウントを設定した文書のプロパティと比較したところ、以下のフィールドに変更が生じていることが判明しました。

・”RecentlyReset”フィールドに1が設定されている
・”IDDLExpiresOn”フィールドにダウンロード期限が設定されている

”RecentlyReset”が何のために使用されているのかのドキュメントは見つけることができませんでしたが、ひとまず手動変更したとき時と同じように1を設定することにします。
そして、”IDDLExpiresOn”は、手動変更したときにはセキュリティポリシー設定の[ID自動ダウンロード]-[IDダウンロードを許可する期間]で設定した期間が設定されますが、今回は1か月を設定することにします。

#スクリプト
以下に実際に作成したスクリプトを記載します。
ID ボールトDB上の任意のビューにアクションとして追加し、選択した文書についてダウンロード回数を1回、1か月後までダウンロード可能に設定します。
ちなみに"IDDLAllowedCount"と”IDDLExpiresOn”も表示できるビューを追加しておき、そこから操作すると便利です。

```
Sub Click(Source As Button)
    Dim ss As New NotesSession
    Dim ws As New NotesUIWorkspace
    Dim thisUIView As NotesUIView
    Dim selectedDocCol As NotesDocumentCollection
    Dim targetDoc As NotesDocument
    
    Set thisUIView = ws.CurrentView                
    Set selectedDocCol = thisUIView.Documents
    
    Set targetDoc = selectedDocCol.GetFirstDocument
    Do While Not targetDoc Is Nothing

        Call targetDoc.ReplaceItemValue("IDDLAllowedCount",1) //ダウンロードカウントを設定
        Call targetDoc.ReplaceItemValue("RecentlyReset",1) //RecentlyResetフィールドに1を追加
        Dim dateTime As New NotesDateTime("") //1か月後の日付設定
           Call dateTime.SetNow
           Call dateTime.AdjustMonth(1)
        Call targetDoc.ReplaceItemValue("IDDLExpiresOn",dateTime)  //ダウンロード期限を設定
        
        Call targetDoc.Save(True, True)
        
        Set targetDoc = selectedDocCol.GetNextDocument(targetDoc)
        
    Loop
    Call ws.ViewRefresh
    
End Sub
```

#その他 ID ボールトについての情報(備忘として)
[ID ボールトの認証情報の更新について](https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0074322)
ID ボールトの認証情報は10年で期限切れとなります。その場合の対処方法。

[Nomad の導入方法について](https://support.hcltechsw.com/csm?id=kb_article&sysparm_article=KB0074631)
iPad や Android 端末から Domino アプリケーションにアクセスする HCL Nomad を導入する場合、端末への ID ファイル配置には ID ボールトの使用が一般的です。現在導入していない環境でも、今後を考えると ID ボールトを導入しておいた方が良いかもしれません。