契約書原本保管期限をTeams・Power Automateで自動通知する!
「膨大な数の契約書の中から、保管期限が近いものを探し出すのが大変」「いつの間にか保管期限が過ぎてしまい、適切に廃棄できなかったらどうしよう」。このような悩みを抱えている総務部門や法務部門も多いのではないでしょうか。契約書原本は、法的な効力を持つ重要な書類であり、その保管期限管理は企業のコンプライアンス遵守において非常に重要です。しかし、手作業での管理は、見落としや漏れのリスクが高く、大きな負担となります。
Power AutomateとTeams、そして契約書原本の情報を管理するシステム(ここではSharePointリストを想定)を組み合わせることで、契約書原本の保管期限が近づいたことを自動で検知し、担当者へ迅速に通知する仕組みを構築できます。
なぜ契約書原本の保管期限通知を自動化することが大切なのでしょう?
契約書原本の適切な保管と管理は、企業の法的リスクを回避し、ガバナンスを強化する上で不可欠です。このプロセスにおける自動化がもたらす具体的なメリットについて、一緒に見ていきましょう。
法的リスクを低減し、コンプライアンスを強化できるから
契約書原本の保管期間は、会社法や法人税法、民法など、様々な法令によって定められています。これらの期間を過ぎても保管し続けることは、情報漏洩のリスクを高める可能性がありますし、逆に期間満了前に誤って廃棄してしまうと、法的なトラブルに発展する可能性があります。自動通知システムは、保管期限を正確に管理し、適切なタイミングで廃棄の判断を促すことで、法的リスクを低減し、企業のコンプライアンス体制を強化します。
総務・法務部門の管理業務負担が大幅に減るから
契約書の数は年々増加する傾向にあり、その原本管理は総務部門や法務部門にとって大きな負担となります。手動で契約書台帳をチェックし、期限を管理し、担当者へ連絡する作業は、非常に手間がかかりますし、見落としのリスクも伴います。自動通知システムを導入することで、これらの定型的なルーティンワークから解放され、担当者はより戦略的な契約審査や法務相談といった、価値の高い業務に集中できるようになります。
廃棄計画を効率化し、保管コストを最適化できるから
紙の契約書原本は、物理的な保管スペースを必要とし、その維持にはコストがかかります。保管期限を過ぎた契約書を適切かつタイムリーに廃棄することで、保管スペースを効率的に活用し、コストを最適化できます。自動通知システムは、廃棄が必要な契約書を明確にし、計画的な廃棄プロセスをサポートします。
情報の共有がスムーズになり、関係部門との連携が強化されるから
契約書は、締結部門、経理部門、そして法務部門など、複数の部門が関わる情報です。保管期限が近づいたことを関係部門へ自動で通知することで、廃棄判断や情報共有がスムーズになります。例えば、経理部門は税務上の保管義務期間を確認できますし、事業部門は契約継続の要否を検討できます。これにより、部門間の連携が強化され、業務のボトルネックが解消されるでしょう。
管理システムの準備を始めましょう
契約書原本の保管期限通知を自動化する仕組みを構築する前に、いくつか確認し、準備しておくべきことがあります。これらを事前に整理しておくことで、スムーズに自動化を進めることができます。
契約書原本情報の「置き場所」を決めましょう
契約書原本の保管期限情報をPower Automateが検知するためには、その情報がどこかに保存されている必要があります。ここでは、「SharePointリスト」に契約書情報を登録することを想定します。
- SharePointリストの作成:
- 法務部門や総務部門用のSharePointサイトを選択または新規作成します。
- リスト名(例:
契約書原本管理台帳)で新しいリストを作成します。 - 必要な列の追加(例):
- タイトル(既定): 契約書名/件名
- 契約相手: テキスト(1行)
- 契約締結日: 日付と時刻
- 契約終了日: 日付と時刻(契約期間が定められている場合)
- 保管期間: 数値(年単位、例: 7年、10年など)または選択肢(法令区分など)
- 保管期限: 日付と時刻(自動計算または手動入力)
- 保管場所: テキスト(1行、例: キャビネット番号、箱番号など)
- 原本有無: はい/いいえ
- 電子版保管場所URL: ハイパーリンクまたは画像(SharePoint等に保存された電子版契約書へのリンク)
- 担当部署: テキスト(1行)または選択肢
- 担当者メールアドレス: テキスト(1行)
- 廃棄ステータス: 選択肢(例:「保管中」「廃棄対象」「廃棄済み」)、既定値は「保管中」
- 通知状況: 選択肢(例:「未通知」「期限前3ヶ月通知済」「期限前1ヶ月通知済」「期限到来通知済」)
- 備考: 複数行テキスト
- 「保管期限」列の計算方法(重要):「保管期限」は、契約締結日と保管期間から自動で計算できるように設定すると便利です。SharePointリストの計算列を利用するか、Power Automateフローで計算して登録することも可能です。
- SharePoint計算列の例:
=[契約締結日]+(365*[保管期間])(簡易的な計算。閏年などは考慮されない) - Power Automateでの計算例:
addYears(items('アプライ_トゥー_イーチ')?['契約締結日'], items('アプライ_トゥー_イーチ')?['保管期間'])(より正確な計算が可能)
- SharePoint計算列の例:
通知を送るTeamsのチャネルを決めましょう
保管期限が近づいたことを通知するTeamsのチャネルを、法務部門、総務部門、および契約の担当部門それぞれに準備します。
- 法務部門向けチャネル: 契約書の法的解釈や廃棄判断に関わる部門(例:
法務部_契約管理)。 - 総務部門向けチャネル: 原本保管や廃棄の実務に関わる部門(例:
総務部_書類管理)。 - 担当部署向けチャネル/個人: 契約の事業部門担当者やその部署のチャネル。
- (オプション)監査部門向けチャネル: コンプライアンス監査に関わる部門。
通知メッセージの内容とタイミングを考えましょう
自動で送信される通知メッセージは、簡潔かつ分かりやすく、必要な情報が過不足なく含まれている必要があります。
- 通知タイミングの例:
- 保管期限の3ヶ月前: 契約内容の見直しや更新の検討を促す(事業部門向け)。
- 保管期限の1ヶ月前: 廃棄判断の最終確認、廃棄準備を促す(法務・総務部門向け)。
- 保管期限到来時: 廃棄可否の最終指示、廃棄作業の開始を促す(総務・法務部門向け)。
- 通知メッセージの例:
- 件名:
【契約書保管期限通知】契約書名:〇〇〇の保管期限が近づいています - 本文:
- 契約書名、契約相手、契約締結日、保管期限、保管場所。
- 廃棄の検討を促すメッセージ。
- 電子版契約書へのリンク。
- 問い合わせ先(担当法務/総務)。
- 「廃棄ステータス」の更新を促すリンク。
- 件名:
Power Automateで自動化を設定しましょう(基本編)
ここからはいよいよ、Power Automateを使って契約書原本の保管期限通知フローを作成していきます。SharePointリストから保管期限が近い契約書を抽出し、Teamsに通知を送る基本的なフローから見ていきましょう。
フローを作成する場所を決めましょう
Power Automateのウェブサイトにアクセスし、左側のメニューから「作成」を選択します。今回は、毎日特定の時間にフローを実行し、保管期限が近い契約書を検索して通知するフローなので、「スケジュール済みクラウド フロー」を選択します。
トリガーを設定しましょう
フローのトリガーとは、「いつ」このフローを実行するかを決定するものです。ここでは、「毎日特定の時間にフローを実行する」というスケジュールトリガーを設定します。
作成例1:保管期限が近い契約書を自動で検知しTeamsに通知
このフローは、毎日実行され、保管期限が設定された基準(例:3ヶ月以内、1ヶ月以内)に近づいている契約書を検知し、関係部門へTeams通知を送信します。
- Power Automateにサインインします。お使いのMicrosoft 365アカウントでPower Automateのウェブサイト(https://make.powerautomate.com/)にアクセスし、サインインします。
- 「作成」から「スケジュール済みクラウド フロー」を選択します。左側のナビゲーションペインにある「作成」をクリックし、表示されるオプションの中から「スケジュール済みクラウド フロー」を選択します。
- フロー名を指定し、トリガーを設定します。フロー名には「契約書保管期限通知(毎日実行)」など、分かりやすい名前を付けます。
- 繰り返し間隔: 「
1」日、「日」を選択します。 - 開始時刻: 毎日フローを実行したい時刻(例:
09:00)を設定します。 - 「作成」をクリックします。
- 繰り返し間隔: 「
- 新しいステップを追加し、SharePointリストから契約書情報を取得します。「+ 新しいステップ」をクリックします。検索ボックスに「SharePoint」と入力し、「アイテムの取得 (SharePoint)」を選択します。
- サイトのアドレス: 契約書原本管理台帳リストを作成したSharePointサイトのURLを選択します。
- リスト名: 作成したSharePointリスト(例:
契約書原本管理台帳)を選択します。 - フィルタークエリ: ここで、保管期限が近づいている契約書を抽出します。例: 保管期限 ge ‘@{formatDateTime(utcNow(), ‘yyyy-MM-dd’)}’ and 保管期限 le ‘@{formatDateTime(addMonths(utcNow(), 3), ‘yyyy-MM-dd’)}’ and 廃棄ステータス eq ‘保管中’
- 補足: これは「保管ステータスが『保管中』で、かつ保管期限が現在から3ヶ月以内(今日を含む)」の契約書を抽出します。
formatDateTimeは日付形式を整えるため、addMonthsは日付の加算に使用します。
- 補足: これは「保管ステータスが『保管中』で、かつ保管期限が現在から3ヶ月以内(今日を含む)」の契約書を抽出します。
- 新しいステップを追加し、取得した各契約書に対して処理を繰り返します。「アプライ トゥー イーチ」コントロールを追加し、「アイテムの取得」アクションの値を選択します。
- 「アプライ トゥー イーチ」の中に条件分岐を追加し、通知のタイミング(1ヶ月前か3ヶ月前かなど)を判断します。
- 新しいステップを追加し、保管期限までの日数を計算する式を設定します。「作成」アクションを追加し、以下の式を入力します。div(sub(ticks(items(‘アプライ_トゥー_イーチ’)?[‘保管期限’]), ticks(utcNow())), 864000000000)
- 補足: これは「保管期限」から現在までの日数を計算します。864000000000は1日のtick数です。
- 「条件」アクションを追加し、日数に基づいて分岐します。
- 左側の値: 日数計算の出力(例:
outputs('作成'))を選択します。 - 演算子: 「次の値より小さいか、または等しい」
- 右側の値:
90(3ヶ月以内) - 「または」条件: 同じく日数計算の出力が
30(1ヶ月以内)
- 左側の値: 日数計算の出力(例:
- 新しいステップを追加し、保管期限までの日数を計算する式を設定します。「作成」アクションを追加し、以下の式を入力します。div(sub(ticks(items(‘アプライ_トゥー_イーチ’)?[‘保管期限’]), ticks(utcNow())), 864000000000)
- 各条件(日数)に応じてTeamsへの通知を投稿します。
- 例:保管期限3ヶ月前の通知(1つ目の「条件」の「はい」のパス)
- 新しい「条件」を追加: 通知状況が「未通知」または「期限前3ヶ月通知済」ではないことを確認します(二重通知防止)。例: 通知状況 eq ‘未通知’
- 「チャットまたはチャネルにメッセージを投稿する (Teams)」アクション:
- 投稿者: Flow bot
- 投稿先: チャネル
- チーム: 担当部署が所属するTeamsのチーム(「担当部署」列から取得)
- チャネル: 担当部署のチャネル
- メッセージ:
【📢契約書保管期限通知:3ヶ月前】 以下の契約書原本の保管期限が3ヶ月以内に迫っています。 契約内容の見直しや更新、廃棄の要否をご検討ください。 契約書名: @{items('アプライ_トゥー_イーチ')?['Title']} 契約相手: @{items('アプライ_トゥー_イーチ')?['契約相手']} 契約締結日: @{formatDateTime(items('アプライ_トゥー_イーチ')?['契約締結日'], 'yyyy/MM/dd')} **保管期限: @{formatDateTime(items('アプライ_トゥー_イーチ')?['保管期限'], 'yyyy/MM/dd')}** 保管場所: @{items('アプライ_トゥー_イーチ')?['保管場所']} 担当部署: @{items('アプライ_トゥー_イーチ')?['担当部署']} 電子版契約書はこちら: @{items('アプライ_トゥー_イーチ')?['電子版保管場所URL']?['Description']} 詳細確認と廃棄ステータス更新はこちら: @{items('アプライ_トゥー_イーチ')?['WebUrl']}
- 「項目を更新します (SharePoint)」アクション:
- 通知状況: 「期限前3ヶ月通知済」に更新します。
- 例:保管期限1ヶ月前の通知(2つ目の「条件」の「はい」のパス)
- 上記と同様に、新しい「条件」と「Teams通知」「SharePoint更新」アクションを設定します。
- 通知メッセージを「保管期限1ヶ月前」向けに調整し、通知状況を「期限前1ヶ月通知済」に更新します。
- 通知先は、法務部門や総務部門のチャネルにすることも検討します。
- 例:保管期限3ヶ月前の通知(1つ目の「条件」の「はい」のパス)
- フローを保存してテストします。SharePointリストにテスト用の契約書情報(保管期限が現在の3ヶ月後、1ヶ月後などに設定)を登録します。スケジュール実行でフローが動作し、Teamsに適切な通知が届くことを確認します。フローのテスト時には、「テスト」機能で手動実行し、ステップごとの出力を確認しながら進めましょう。
アクションを設定しましょう
トリガーが発動したら、次に「何を」するのかを設定します。これがアクションです。
- SharePointアクション:
- 「アイテムの取得」: 契約書原本管理台帳リストから、保管期限が近い契約書情報を取得します。
- 「項目を更新します」: 契約書の「通知状況」や「廃棄ステータス」を更新し、通知が重複しないように管理します。
- データ操作アクション:
- 「作成」: 日数計算など、一時的なデータ処理に使用します。
- Teamsアクション:
- 「チャットまたはチャネルにメッセージを投稿する」: 法務部門、総務部門、担当部署のチャネルへ、保管期限が近いことを通知します。
通知メッセージのカスタマイズをしましょう
メッセージの内容は、動的なコンテンツを利用して、契約書名、契約相手、保管期限、保管場所、担当部署、電子版へのリンクなどを自動的に埋め込むことができます。
- 契約書名:
Title - 契約相手:
契約相手(SharePointリストの列名) - 保管期限:
保管期限 - 保管場所:
保管場所 - 担当部署:
担当部署 - 電子版リンク:
電子版保管場所URL - SharePointアイテムへのリンク:
WebUrl(SharePointリストアイテムへの直接リンク)
これらの情報をメッセージ本文に適切に配置することで、受け取った関係者が一目でどの契約書か、いつ廃棄検討が必要か、どこに原本があるかを把握できるように工夫しましょう。特に、電子版へのリンクや、SharePointリストアイテムへの直接リンクを含めることで、迅速な確認と次のアクションを促せます。
Power Automateで自動化を設定しましょう(応用編)
基本編で作成したフローをさらに便利にするための応用テクニックを見ていきましょう。
廃棄承認ワークフローを組み込む
保管期限が到来した契約書について、廃棄の最終承認をTeams上で行うワークフローを組み込むことで、廃棄プロセスの透明性と管理性を高めます。
作成例2:廃棄承認ワークフローを組み込むPower Automateフロー
これは、基本編の「契約書保管期限通知」フローの延長として、または別の「スケジュール済みクラウド フロー」として作成します。ここでは、保管期限が到来した契約書を対象としたフローの例を挙げます。
- 新しいフローを「スケジュール済みクラウド フロー」として作成します。
- フロー名:「契約書廃棄承認依頼」
- 繰り返し: 毎日、午前9時。
- 新しいステップを追加し、SharePointリストから廃棄対象の契約書を取得します。「アイテムの取得 (SharePoint)」アクションを追加します。
- サイトのアドレス: 契約書原本管理台帳リストのSharePointサイトを選択します。
- リスト名:
契約書原本管理台帳リストを選択します。 - フィルタークエリ:
保管期限 le '@{formatDateTime(utcNow(), 'yyyy-MM-dd')}' and 廃棄ステータス eq '保管中' and 通知状況 ne '期限到来通知済'- 補足: 保管期限が今日以前で、まだ「保管中」の契約書で、かつ「期限到来通知済」ではないものを対象とします。
- 新しいステップを追加し、取得した各契約書に対して処理を繰り返します。「アプライ トゥー イーチ」コントロールを追加し、「アイテムの取得」アクションの値を選択します。
- 「アプライ トゥー イーチ」の中に「アクションを開始して承認を待機します (承認)」アクションを追加します。
- 承認の種類: 「全員が承認」(法務・総務の複数名が承認する場合)または「最初の応答」(いずれか1人の承認者が応答すればOK)。
- タイトル:
【契約書廃棄承認依頼】契約書名:@{items('アプライ_トゥー_イーチ')?['Title']} - 割り当て先: 承認者のメールアドレス(例: 法務部長、総務部長のメールアドレス)。複数人の場合はカンマ区切りです。
- 詳細:
以下の契約書原本の保管期限が到来しました。 内容を確認し、廃棄の承認をお願いいたします。 契約書名: @{items('アプライ_トゥー_イーチ')?['Title']} 契約相手: @{items('アプライ_トゥー_イーチ')?['契約相手']} **保管期限: @{formatDateTime(items('アプライ_トゥー_イーチ')?['保管期限'], 'yyyy/MM/dd')}** 保管場所: @{items('アプライ_トゥー_イーチ')?['保管場所']} 担当部署: @{items('アプライ_トゥー_イーチ')?['担当部署']} 電子版契約書はこちら: @{items('アプライ_トゥー_イーチ')?['電子版保管場所URL']?['Description']} SharePoint詳細はこちら: @{items('アプライ_トゥー_イーチ')?['WebUrl']} - 項目へのリンク:
@{items('アプライ_トゥー_イーチ')?['WebUrl']} - 項目への説明:
資料を確認し、承認または却下してください。
- 新しいステップを追加し、承認結果によって処理を分岐します。「条件」アクションを追加します。
- 左側の値: 「アクションを開始して承認を待機します」アクションの
Outcomeを選択します。 - 演算子: 「次の値と等しい」
- 右側の値: 「
Approve」と入力します。
- 左側の値: 「アクションを開始して承認を待機します」アクションの
- 「はい」のパス(承認された場合)に、SharePointアイテムの更新とTeams通知アクションを追加します。
- 「項目を更新します (SharePoint)」アクション:
- サイトのアドレス: SharePointサイトのURL
- リスト名:
契約書原本管理台帳 - ID: トリガーの
IDを選択します。 - 廃棄ステータス: 「
廃棄対象」または「廃棄済み」を選択します。 - 通知状況: 「期限到来通知済」に更新します。
- 承認コメント: 「アクションを開始して承認を待機します」アクションの
Responses Commentsを選択します。
- 「チャットまたはチャネルにメッセージを投稿する (Teams)」アクション(総務・法務・担当部署向け):
- 投稿先: チャネル
- メッセージ: 「【契約書廃棄承認】〇〇の契約書は廃棄承認されました。実務担当者は廃棄作業を開始してください。」
- 「項目を更新します (SharePoint)」アクション:
- 「いいえ」のパス(却下された場合)に、SharePointアイテムの更新とTeams通知アクションを追加します。
- 「項目を更新します (SharePoint)」アクション:
- 廃棄ステータス: 「
保管中」(廃棄対象外)または「要再検討」を選択します。 - 通知状況: 「期限到来通知済」(通知済みとして記録)
- 承認コメント: 「アクションを開始して承認を待機します」アクションの
Responses Commentsを選択します。
- 廃棄ステータス: 「
- 「チャットまたはチャネルにメッセージを投稿する (Teams)」アクション(関係者向け):
- メッセージ: 「【契約書廃棄却下】〇〇の契約書の廃棄は却下されました。理由:〇〇」
- 「項目を更新します (SharePoint)」アクション:
- フローを保存してテストします。テスト用の契約書情報(保管期限が今日以前、廃棄ステータスが「保管中」)を登録し、フローが動作してTeamsに廃棄承認依頼が届くことを確認します。承認/却下の操作を行い、その結果がTeamsに通知され、SharePointリストの「廃棄ステータス」が更新されることを確認します。
廃棄予定リストを定期的に経理部門と共有する
廃棄対象となった契約書を、経理部門が税務上の保管義務期間と照合できるように、定期的にリストを共有します。
作成例3:廃棄予定リストを定期的に経理部門と共有するPower Automateフロー(別フロー)
このフローは、定期的に実行され、廃棄対象の契約書リストをCSV形式で生成し、Teamsの経理部門チャネルに投稿します。
- 新しいフローを「スケジュール済みクラウド フロー」として作成します。
- フロー名:「契約書廃棄予定リスト共有」
- 繰り返し: フローを実行したい頻度を設定します。例:毎月1日。
- 新しいステップを追加し、SharePointリストから廃棄対象の契約書を取得します。「アイテムの取得 (SharePoint)」アクションを追加します。
- サイトのアドレス: 契約書原本管理台帳リストのSharePointサイトを選択します。
- リスト名:
契約書原本管理台帳リストを選択します。 - フィルタークエリ:
廃棄ステータス eq '廃棄対象'または廃棄ステータス eq '廃棄済み'(直近で廃棄されたものを含む場合)- 補足: 必要に応じて、取得期間を限定するフィルターを追加します(例:
and 保管期限 ge '2025-01-01')。
- 補足: 必要に応じて、取得期間を限定するフィルターを追加します(例:
- 取得したデータをCSVテーブル形式に変換します。「データ操作」カテゴリから「CSV テーブルの作成」アクションを選択します。
- From: 「アイテムの取得」アクションの
値を選択します。 - 列: 「カスタム」を選択し、経理部門が必要とする情報のみ(例: 契約書名、契約相手、締結日、保管期限、廃棄ステータスなど)を選択して、ヘッダー名を指定します。
- From: 「アイテムの取得」アクションの
- 新しいステップを追加し、CSVファイルをOneDrive for Businessに作成します。「OneDrive for Business」コネクタの「ファイルの作成」アクションを選択します。
- フォルダーのパス: ファイルを作成したいOneDrive上のフォルダーパスを指定します(例:
/契約書廃棄レポート/)。 - ファイル名:
契約書廃棄リスト_@{formatDateTime(utcNow(), 'yyyyMMdd')}.csvのように、日時を付加してユニークなファイル名にします。 - ファイル コンテンツ: 「CSV テーブルの作成」アクションの
出力を選択します。
- フォルダーのパス: ファイルを作成したいOneDrive上のフォルダーパスを指定します(例:
- 新しいステップを追加し、作成したCSVファイルをTeamsに投稿します。「チャットまたはチャネルにメッセージを投稿する (Teams)」アクションを追加します。
- 投稿者: Flow bot
- 投稿先: チャネル
- チーム: 経理部門が所属するTeamsのチーム
- チャネル: 経理部門の通知チャネル(例:
経理部_契約確認) - メッセージ:
【月次レポート】契約書廃棄予定/実績リスト @{formatDateTime(utcNow(), 'yyyy年MM月')}分の契約書廃棄予定/実績リストを共有いたします。 税務上の保管義務期間などと照合し、ご確認ください。 以下のリンクからダウンロードできます: [CSVダウンロード]@{outputs('ファイルの作成')?['body/WebUrl']}
- フローを保存してテストします。手動でフローを実行し、OneDriveにCSVファイルが作成され、Teamsにそのダウンロードリンクが投稿されることを確認します。
エラー対策とトラブルシューティングを確認しましょう
Power Automateフローは、確実に動作することが求められます。特に契約書のような金銭・法務に関わる情報は、確実な通知と管理が不可欠です。よくあるエラーとその対策、そしてトラブルシューティングのポイントをご紹介します。
権限不足のエラーが出た場合
「アクセスが拒否されました」といったエラーメッセージが表示される場合、Power AutomateがSharePointのリストを操作したり、Teamsにメッセージを送信したりするための権限が不足している可能性があります。
- 対策: フローを実行するアカウントが、対象のSharePointリストに対して「編集」権限(作成・更新のため)と、Teamsチャネルへのメッセージ投稿権限を持っていることを確認してください。法務部門や総務部門、システム管理者がフローを作成・管理するのが望ましいでしょう。
SharePointリストのデータ型不一致の場合
契約書情報がSharePointリストに登録される際、列のデータ型とフローから送られるデータの型が一致しない場合にエラーが発生することがあります。
- 対策:
- SharePointリストの列のデータ型と、Power Automateで処理する際のデータ型が一致しているか確認します。
formatDateTime()などを使用して、日付や時刻の形式を変換・整形するようにしましょう。int()やfloat()を使って数値に変換する必要がある場合もあります。
通知がTeamsに届かない場合(フローは成功しているのに)
Power Automateの実行履歴ではフローが「成功」しているのに、Teamsに通知が届かない場合があります。
- Teamsの通知設定: 受信側のTeamsで、Flow botからの通知がブロックされていないか、ミュートされていないかなどを確認してください。
- チャネルの選択ミス: 「チャットまたはチャネルにメッセージを投稿する」アクションで、意図したチャネルが正しく選択されているか、タイプミスがないかを再確認しましょう。
- 接続の正常性: Power Automateの「データ」→「接続」で、Teamsへの接続が正常に確立されているかを確認しましょう。
フローの履歴を確認しましょう
エラーが発生した場合や、フローが意図通りに動作しない場合は、Power Automateのフロー実行履歴を確認することが最も重要です。
- Power Automateの「マイ フロー」から、該当のフローを選択します。
- 「実行履歴」タブをクリックします。
- 失敗した実行、または成功したものの動作が怪しい実行を選択すると、フローの各ステップがどのように実行されたか、どこでエラーが発生したか、そしてエラーメッセージの詳細を確認できます。
各アクションの「入力」と「出力」を確認することで、どのデータがどのように処理され、どこで問題が発生したのかを詳細に把握できます。特にSharePointリストからの「アイテムの取得」アクションで、期待通りの契約書が抽出されているか、フィルタークエリが正しく機能しているかを確認しましょう。
セキュリティとアクセス管理を確認しましょう
契約書原本情報は、企業の機密情報であり、法的義務を伴う個人情報を含む可能性もあります。自動化システムを構築する際は、セキュリティとアクセス管理に細心の注意が必要です。
SharePointリストの権限設定を適切にしましょう
契約書原本管理台帳リストに保存されたデータは、誰が閲覧・編集できるべきかを厳密に管理する必要があります。
- 閲覧権限: 法務部門、総務部門、監査部門、そして契約の担当部署(自身の担当分のみ)など、必要な部署にのみ「読み取り」権限を付与しましょう。
- 編集権限: 法務部門や総務部門など、契約書情報を更新する権限を持つ限られたメンバーにのみ「編集」権限を付与しましょう。
- 最小限の原則: 必要な人にのみ最小限の権限を与えましょう。
- グループの活用: 個々のユーザーに権限を付与するのではなく、Active DirectoryグループやMicrosoft 365グループを利用して権限を管理することで、運用が容易になります。
Teamsチャネルの権限設定を適切にしましょう
契約書通知が送信されるTeamsチャネルのメンバーシップも適切に管理しましょう。
- プライベートチャネルの利用: 契約書情報のような機密性の高い情報が流れるチャネルは、必ず「プライベート」チャネルとし、必要なメンバーのみを招待しましょう。
- 一般チャネルへの通知の制限: 全員がアクセスできる「一般」チャネルには、機密性の低い、概要のみの情報に留めるか、通知自体を行わないようにしましょう。
フローの作成と実行権限を管理しましょう
この自動化フローは、会社の重要な機密情報を扱うため、不用意に作成・変更・実行できないように、適切な権限管理が必要です。
- フロー作成者の制限: 重要なフローの作成権限は、法務部門や総務部門の担当者、特定のシステム管理者にのみ付与することを検討しましょう。
- 共有の最小化: フローを他のユーザーと共有する際は、実行のみの権限に限定し、共同所有者としての共有は慎重に検討しましょう。共同所有者はフローを編集できるため、意図しない変更のリスクがあります。
- サービスアカウントの利用: フローの実行アカウントが個人アカウントではなく、専用のサービスアカウントであれば、個人の人事異動や退職の影響を受けにくく、権限管理も一元化しやすいでしょう。
個人情報保護への配慮を忘れずに
契約書には、取引先の情報や、契約担当者の氏名といった個人情報が含まれる可能性があります。これらの情報の取り扱いには、個人情報保護法などの関連法令や社内規定を遵守するよう細心の注意を払いましょう。
- 利用目的の明確化: 契約書の利用目的を明確にし、適切に管理しましょう。
- 安全な保管: 不必要なアクセスを制限し、データの安全な保管に努めましょう。
- 保持期間の遵守: 法令で定められた保管期間を遵守し、期間経過後は適切に廃棄する運用を徹底しましょう。
まとめ
Power AutomateとTeams、SharePointリストを組み合わせることで、契約書原本の保管期限を自動で検知し、関係部門へ通知する方法について、基本的な設定から応用、エラー対策、そしてセキュリティとアクセス管理まで、詳細に解説してきました。
この自動通知システムは、契約書原本管理における見落としや管理の負担を解消し、企業のコンプライアンス遵守と法的リスクの低減に大きく貢献します。結果として、法務・総務部門の業務効率向上と、組織全体のガバナンス強化を実現できるでしょう。
まずは、この記事で紹介した基本的なフローを実際に作成し、ご自身の環境で試してみてください。そして、貴社の契約書管理プロセスや法務・総務部門のニーズに合わせて、応用編で紹介した機能を追加したり、さらに独自のカスタマイズを加えたりすることで、より洗練された契約書原本管理システムを実現できるはずです。

