電子サインサービスとNetSuiteの連携（１）

NetSuiteと電子サインとの連携では、**契約業務の効率化・証跡管理の強化・内部統制対応**を目的として、以下のような技術的な連携が行われると考えられます。この記事こでは、以下2つのユースケースを例に技術連携内容を解説します：

---
本記事は以下の記事と共にご拝読をいただけるとより理解と応用が深まると思います

以下の記事はNetSuiteの画面にカスタムでボタンを配置しそのボタンをトリガーにプロセスが進むものです。
署名、サイン、捺印処理は殆どの組織内の業務処理では自動で行われることは無く、署名者の操作がトリガーになります。一方で書類（ファイル）がERPと電子サインシステム間を送受されることについては、署名前後の処理としてはログイン、ファイル送受は自動化されてよいと考えます。
https://qiita.com/fujitak/items/28825e2fda2b11fa5586

また、二つ以上のシステムを一人のユーザーが使う状況から、IDの安全なやりとりを行う必要があるため、以下の記事にて方法の一つを紹介しております。
https://qiita.com/fujitak/items/c5563b62d3ac3b1a58a6

---

## 🔸ユースケース①：NetSuiteの見積情報（見積レコード）から契約書を作成・送信（営業プロセス起点）

### 💡業務シナリオ：
営業担当がNetSuite上で作成した「見積書」や「商談情報」から、顧客に送る契約書を生成し、そのまま電子サインサービスに送信 → 顧客が署名 → ステータスと署名済PDFをNetSuiteに戻す。

---

### 🔧 技術的連携内容：
| 項目 | 詳細 |
|------|------|
| **1. 見積レコードのトリガー検知** | SuiteScript（User Event Script または Client Script）で「見積書ステータスが‘承認済み’になった場合」などのトリガーを検出。 |
| **2. 電子サイン用文書生成** | NetSuiteでPDFテンプレートを活用して契約書（Estimate情報入り）を生成。SuiteScriptまたはSuiteFlowで出力。 |
| **3. 電子サインサービスへのAPI連携** | RESTletまたはSuiteScriptからクラウドサイン／DocuSignのAPIに対して `createDocument` / `sendEnvelope` などをPOSTし、送信。 |
| **4. ステータス取得** | 電子サイン側のWebhookを設定し、署名完了イベントを受信。NetSuiteのRESTletなどで署名ステータス更新を実行。 |
| **5. 完了済PDFの保管** | 電子サイン側から署名済みPDFを取得して、NetSuiteの「ファイルキャビネット」に保管し、関連レコード（Estimate、Customerなど）に添付。 |

---

### ✅ 補足：
- 電子サインサービスのWebhookと認証（Bearer Token）に注意
- 電子サインサービスの複数承認者や順番設定などの高度なワークフローに対応
- 業務画面からワンボタン送信（SuiteletなどでUI提供）も実装可能

---

## 🔸ユースケース②：NetSuiteの契約レコードから自動更新通知＋再契約フロー（契約管理プロセス起点）

### 💡業務シナリオ：
定期契約の終了日前に、NetSuiteが自動で顧客に更新契約書を送信し、電子サイン後に契約レコードを更新。内部統制・監査にも有効。

---

### 🔧 技術的連携内容：
| 項目 | 詳細 |
|------|------|
| **1. 契約満了日の定期チェック** | SuiteSchedule ScriptやMap/Reduceで、月次/週次バッチ的に「満了60日以内」の契約を抽出。 |
| **2. 契約更新書の自動作成** | 前回契約の内容（価格・期間）をコピーし、契約更新PDFを生成。 |
| **3. 電子サインAPI送信** | 同様にREST APIで更新契約書を電子サインへ送信。 |
| **4. ステータス／ログ更新** | NetSuiteの「契約ステータス」項目更新。ログ記録も内部統制用に保持。 |
| **5. 契約レコードの更新** | 電子サイン完了時に「契約更新日」「署名者」「ファイル」などを更新し、リレーション管理。 |

---

### ✅ 補足：
- タイムトリガーは**SuiteSchedule Script**または**WorkFlow（条件付き）**
- ドキュメント管理やリテンション強化に繋がる

---

## ✨ 技術アーキテクチャ概略図（構成イメージ）
```
NetSuite               →     電子サインサービス（クラウドサイン/DocuSign）
--------------------------------------------------------------
| SuiteScript / RESTlet       |     REST API (OAuth2 / JWT)
| SuiteFlow (条件分岐)        |     Webhook → RESTlet
| PDF生成（テンプレート）     |     署名完了PDF配信
| ファイルキャビネット管理     |     ステータス通知
```

---

## 🧰 使用されるNetSuite技術
- **SuiteScript 2.x**（REST呼び出し、レコード処理、PDF生成）
- **SuiteTalk REST / RESTlet**
- **SuiteFlow（プロセス制御）**
- **ファイルキャビネット / Attachments**
- **Custom Recordタイプやカスタムフィールド**

---

こうした技術連携により、**手作業排除／法的証跡管理／契約ステータスの一元化**が実現され、SaaSアライアンスとしても付加価値の高い提案になります。

##  参考：電子サインとERPの作業連携
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3961752/963b70c7-40f1-49f3-a6ef-5eaacfb4651d.png)

G社営業担当者が顧客であるH社担当者にNDAを送る業務フロー。
ERPと電子サインはシステム的な連携をしていないので両方のシステムに利用者はログインをすることになり、ガバンスとコンプライアンスの観点から双方のシステムを目視的に比較しないと誰がサインを行う権限を持ち、サインをしたのか確定ができない。契約書ファイルは最終的にERPに保管されるが、顧客側サイン者の情報（Eメールアドレス）は電子サイン側に情報があることになる。

---
###  筆者から皆様へ
電子サインサービスとNetSuiteのようなERPは独立した製品およびサービスです。相互に独立度合いの『高い』サービスと筆者は考えています。相互に独立度合いの『低い』サービスの例としてはERPと経費精算サービスと私見では考えており、これら２つの連携には前提として一方が一方の機能を有しているかの確認が必要です。一方で、経費精算サービスの機能の一つとして『レシートの読み取り』がありますが、これを独りして『OCR』として提供しているサービスがあるとしたら、ERPとOCRは『相互独立性の高いサービス』で、OCRと経費精算は『相互独立性の低いサービス』です。
電子サインとERPやSFAの連携はかなり一般的になっておりますが、独立性が高い反面、**手作業で連携的な使い方ができる**ため自動連携や内部組み込み的な連携は少々技術的なハードルが高くなっていると筆者は考えています。この記事と関連する記事は技術的なハードルを下げるための一考察、一アプローチとしてご参考になれば幸いです。