サブスクリプションのライフサイクルを統合管理するための動的なBilling Business Object Modelの構造を解説します。Zuoraのデータモデルは、継続的な顧客関係と契約の変更(アップグレード、解約等)を前提とした設計です。
Zuoraのデータモデルは、従来のERPのような静的な注文管理ではなく、「Account, Order, Subscription, Invoice, Payment」の5つの主要オブジェクトを核としています。
顧客アカウントを頂点とし、契約の状態遷移(Order)と請求・回収を紐付けるリレーション構造です。
Accountは全てのトランザクションの親であり、支払い方法や請求サイクル、使用通貨を定義します。Orderは単なる購入だけでなく、Ramp(段階的契約)やOrder Actionを通じた契約の更新・解約を記録するトランザクション・エンティティであり、1つのOrderから複数のSubscriptionを管理可能です。
オブジェクト関連
| オブジェクト | リレーション | 説明 |
|---|---|---|
| Account | 1:N (Order) | 請求・支払いの主体。Bill Cycle DayやCurrencyを保持 |
| Order | 1:N (Subscription) | 契約のアクション(新規・変更・解約)を記録。Ramp機能も包含 |
| Subscription | 1:N (Rate Plan) | 契約期間や更新条件を管理するビジネス合意の器 |
| Invoice | 1:N (Invoice Item) | 計算された料金を提示する文書。Taxation Itemも保持 |
💡 ポイント: Zuoraでは「Order Action」を使用することで、1つのサブスクリプションのライフサイクル全体(アップグレードや解約予約)を時系列で正確に追跡できます。
「製品 - プラン - チャージ - ティア」の4層構造により、複雑な課金ロジックをテンプレート化します。
最下層の「Charge」には、一回払い(One-time)、継続(Recurring)、従量(Usage)の3タイプがあり、フラットフィーやボリューム、ティア(階層別)などの価格モデル(Charge Models)を適用できます。
💡 ポイント: プロダクトカタログはテンプレートであり、Subscription作成時に特定の数量や価格を個別にオーバーライド(上書き)して適用することが可能です。
用語
| 用語 | 説明 |
|---|---|
| Rate Plan | 製品のパッケージ。月額版や年額版などのオファー単位 |
| Charge | 課金計算の最小単位。Billing Frequency(請求頻度)を定義 |
| Schema Visualizer | テナント固有の標準・カスタムオブジェクトのリレーションを可視化するツール |
参考
組織全体の挙動、財務計算の精度、および日付・時刻のフォーマットを一元的に制御する基盤設定です。導入初期に確定させるべき設定が集中しており、後からの変更が業務影響を及ぼしやすい領域です。
UI、ドキュメント、およびAPIにおける日時表示の整合性と、グローバル取引を支える通貨計算エンジンを定義します。
ロケール設定は日付形式(MM/DD/YYYY等)を制御し、UIやPDFに適用されますが、SOAP/REST API通信には適用されない点に注意が必要です。多通貨設定では、通貨ごとに丸めモード(Rounding Mode)や最小増分(Rounding Increment)を細かく定義できます。
| 設定項目 | 詳細説明 |
|---|---|
| Rounding Mode | Down(切り捨て)、Up(切り上げ)、Half Up(四捨五入)を選択可能 |
| Time Zone | UI、API、レポートの基準時刻。夏時間(DST)は自動的に遵守される |
| Exchange Rate | Oanda等のプロバイダまたはカスタムインポートにより換算レートを管理 |
💡 ポイント: 個人設定(Personal Settings)のロケールはテナント全体のデフォルト設定を上書きしますが、API通信やFinance Mass Updaterには影響しません。
日割り計算(Proration)のロジックや、会計期間(Accounting Period)の制御など、財務整合性を担保するルールです。
「Accounting Rules」により、クローズされた会計期間へのデータ入力を禁止したり、総勘定元帳(GL)連携時に会計コード(Accounting Codes)が未指定であることを許可しない(No)設定にするなど、エラーを未然に防ぐ統制が可能です。
💡 ポイント: 「Aggregate transactions with different currencies」を Yes に設定すると、ジャーナルラン実行時に異通貨トランザクションを合算し、すべてホーム通貨(Home Currency)で表示可能です。
開発、テスト、UAT、およびパフォーマンス検証の各フェーズに応じた最適な環境活用とデータ同期手法です。環境の選択ミスは検証コストの増大に直結するため、プロジェクト初期に方針を確定してください。
用途とデータ容量、およびインフラ構成の違いに基づき、適切な環境を選択します。
API Sandboxは機能検証用、Developer Sandboxは設定のみをコピーする開発用、Central Sandboxは本番同等のAWSインフラ上でTransactionalデータをコピーしてUATやパフォーマンス検証を行うために使用されます。
| 環境タイプ | 構成データ | リフレッシュ頻度 | 推奨用途 |
|---|---|---|---|
| API Sandbox | なし | 自動(リリース前) | 新機能の先行検証、API疎通確認 |
| Developer | メタデータのみ | 14日に1回 | 開発、ユニットテスト、連携開発 |
| Central | 全データ(Scrubbed) | 28日に1回 | UAT、パフォーマンス・負荷テスト |
💡 ポイント: Central Sandboxは唯一、本番と同等のAWSインフラ上で動作するため、大規模なBill RunやPayment Runの処理時間(Timing)の検証が可能です。
本番環境からSandboxへデータを同期する際、機密情報を自動的に匿名化し、セキュリティを保護します。
リフレッシュ時には既存のSandboxデータは消去され、顧客の氏名、メールアドレス、電話番号、および決済トークン(クレジットカード情報等)がダミーデータに置き換わります。
💡 ポイント: Salesforce Sandboxをリフレッシュすると組織ID(Org ID)が変わるため、ZuoraとのOAuth接続を再設定する必要があります。
用語
| 用語 | 説明 |
|---|---|
| Scrubbing | PII(個人情報)をランダムな値に置き換える処理 |
| Reset Stage | リフレッシュジョブがこの段階を過ぎると、以降はキャンセルができなくなる |
参考
OneIDによるアイデンティティ管理と、役割ベースのアクセス制限(RBAC)によるガバナンスの実装です。最小権限の原則を徹底することで、内部不正・操作ミス・連携障害のリスクを低減します。
業務上の役割に応じて権限を分離し、機密性の高い財務・セキュリティ操作を制限します。
デフォルトの「Administrator」と「Standard User」以外に、カスタムロールを作成可能です。特定のIPアドレス範囲(IP Range)によるアクセス制限をカスタムロールに適用することで、VPN経由のみのログインを強制するなど、強力なセキュリティ層を追加できます。
カスタムロールの例
| ロール名 | 主要な権限設定 | 目的 |
|---|---|---|
| Auditor | Audit Trail Access, View Reports | データの閲覧と操作履歴の監視のみ |
| API User | API Write Access, (UI Access: OFF) | システム連携専用。人間によるログインを遮断 |
| Financial Lead | Post Invoices, Override RevRec | 請求実行と収益認識の最終承認権限 |
💡 ポイント: APIユーザー(サービスアカウント)にはUI Access権限を与えず、OAuth 2.0のクライアント資格情報を使用させることで、UIでの強制パスワード変更による連携停止リスクを回避できます。
OktaやMicrosoft Entra ID等のIdPと連携し、SAML 2.0プロトコルによるシングルサインオンを構成します。
OneIDポータルを通じてIdPのメタデータURLを登録し、フェデレーションID(メールアドレス形式)をマッピングすることで、ユーザーは一度のログインで全てのZuoraテナントにアクセス可能となります。
# OAuth 2.0 Bearer Token 取得例 (cURL)
curl -X POST "https://rest.sandbox.na.zuora.com/oauth/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET" \
-d "grant_type=client_credentials"
参考
法的な分離(Entity)か、運用のセグメンテーション(Org Unit)かに基づく最適なモデルの選択です。この選定はセクション8の不可逆設定にも直結するため、導入初期に確定が必要です。
リーガルエンティティの独立性と、マスタデータ(製品カタログ等)の共有ニーズに基づき、構造を定義します。
Multi-Entityは異なる法人格として独立した決算期や税務設定を持つ場合に適しており、Multi-Orgは単一テナント内で地域や事業部ごとにデータを論理的にセグメント化したい場合に適しています。
比較マトリクス
| 特徴 | Multi-Entity | Multi-Org |
|---|---|---|
| 分離レベル | 物理的・法的な完全分離 | 同一テナント内での論理セグメント |
| マスタ共有 | 共有不可(要同期ツール) | 親Orgから子Orgへの共有が可能 |
| 主な用途 | 独立した子会社、M&A後の企業 | 同一法人の海外拠点、ブランド別管理 |
| 制約 | 複数テナント管理の手間 | Zuora Analytics等の非対応機能あり |
💡 ポイント: Multi-Orgは単一の「Reporting Currency(報告通貨)」を全Org Unitで共有し、連結レポートを容易に作成できる利点があります。
用語
| 用語 | 説明 |
|---|---|
| Leaf Entity | Multi-Entity階層における最下位のエンティティ。Multi-Orgへのアップグレードが可能 |
| Org Picker | UI上で操作対象の組織コンテキストを切り替えるセレクタ |
設定変更やデータ操作の履歴をSQLベースで追跡し、内部統制要件を充足させます。SOX対応やISO27001等のコンプライアンス要件がある場合、本セクションの実装は必須となります。
ユーザーのログイン履歴、システム設定の変更、および主要オブジェクトのCRUD操作を永続的に記録します。
管理者はData Query(SQL)を使用し、auditloginevent(ログイン履歴)、auditsettingchangeevent(設定変更)、auditobjectchangeevent(オブジェクト変更)の各テーブルから必要な証跡を抽出可能です。
-- 特定期間のアカウント削除・更新履歴を抽出するクエリ例
SELECT ChangedBy, ChangeDate, Action, ObjectType, ObjectId
FROM auditobjectchangeevent
WHERE ObjectType = 'Account'
AND ChangeDate >= '2025-01-01T00:00:00Z'
💡 ポイント: 監査証跡の参照には「Audit Trail Access」と「Data Query UI Access」の両方の権限をロールに付与する必要があります。
監視対象の例
| カテゴリ | 監視内容 |
|---|---|
| 認証 | ログイン成功/失敗履歴とIPアドレス |
| 設定変更 | 請求ルール、税金設定、収益認識ルールの変更履歴 |
| データ操作 | Subscriptions、Invoices、Payments等のビジネスオブジェクトの更新 |
参考
メタデータ設定をSandboxから本番環境へ安全かつ正確にデプロイ(反映)する仕組みを解説します。手動による再設定を排除し、環境間の設定の整合性を担保します。
Deployment Managerは、設定(Settings)、カスタムフィールド(Custom Fields)、通知(Notifications)などのメタデータをパッケージ化し、テナント間で移行します。GitHubとの連携により、設定のバージョン管理も可能です。
💡 ポイント: デプロイ実行前にソースとターゲットの「Environment Comparison(比較)」を行うことで、差分のみを抽出し、意図しない上書きを防止できます。
移行可能なオブジェクト
| カテゴリ | 対象オブジェクト |
|---|---|
| 設定 | Billing/Payments Rules 各種設定項目 |
| データモデル | カスタムオブジェクト定義、カスタムフィールド |
| 自動化・通知 | ワークフロー、通知テンプレート、メールテンプレート |
参考
一度有効化すると無効化できないクリティカルな設定を特定し、初期設計ミスによるリスクを回避します。本セクションの確認なしに本番設定を進めることは推奨しません。
大規模なデータモデル変更を伴う機能の有効化は、事前のSandbox検証が必須となります。特に「Orders(またはOrders Harmonization)」、「Invoice Settlement(請求決済機能)」、「Multi-Org」などの機能は、一度有効化すると以前のデータモデルや旧API(Subscribe/Amend)に完全に戻すことができません。
不可逆設定チェックリスト
| 機能 | 影響範囲 | 注意点 |
|---|---|---|
| Orders | 契約モデルの拡張 | Subscribe/Amend APIが制限され、Order APIが主軸となる |
| Invoice Settlement | 請求・入金消込処理 | 従来のInvoice Adjustment(IA)がCredit/Debit Memoに置き換わる |
| Multi-Org | データセグメンテーション | データにOrgラベルが付与され、アクセス制御が組織単位となる |
💡 ポイント: 「Invoice Settlement」を有効にすると、既存のマイナス請求書(Negative Invoices)はクレジットメモ(Credit Memos)に自動変換されるため、会計期間をクローズした直後のタイミングでの有効化が推奨されます。
「何を・どの順番で・どの環境で」設定するかを明確化し、手戻りを最小化します。不可逆設定は必ずPhase 1のSandbox検証フェーズで合意を取ってください。
| フェーズ | 作業内容 | 使用環境 | 主な参照セクション |
|---|---|---|---|
| Phase 1:基盤設計 | マルチ組織モデルの確定、不可逆設定の合意、セキュリティポリシー策定 | Developer Sandbox | セクション 5, 8, 4 |
| Phase 2:コア設定 | テナントプロファイル、通貨・ロケール、プロダクトカタログ構築 | Developer Sandbox | セクション 2, 1 |
| Phase 3:統合・連携 | 外部システム連携(Salesforce/ERP/決済)、SSO設定、API疎通確認 | API Sandbox | セクション 4, 10 |
| Phase 4:検証 | UAT、パフォーマンステスト、監査ロール確認 | Central Sandbox | セクション 3, 6 |
| Phase 5:本番移行 | Deployment Managerによるメタデータデプロイ、監査証跡の有効化確認 | Production | セクション 7, 6 |
💡 ポイント: Central Sandboxのリフレッシュは28日周期のため、UAT開始タイミングをリフレッシュスケジュールに合わせて計画することで、最新の本番データに近い状態で検証できます。
エンタープライズ環境では必ずZuora外部のシステムとの連携が生じます。主要な連携パターンと設計上の注意点を整理します。
ZuoraとSalesforceはネイティブコネクタ(Zuora for Salesforce)により、QuoteからOrderまでのリードトゥキャッシュプロセスを統合します。
SalesforceのOpportunityやQuoteをトリガーにZuora上でSubscriptionを作成するフローが一般的です。Sandbox環境のリフレッシュ時にSalesforce側のOrg IDが変わるため、OAuth接続の再設定が必要になる点に注意が必要です(セクション3.2参照)。
| 連携ポイント | 説明 |
|---|---|
| Quote → Order | SalesforceのQuoteをZuora Orderに変換。価格・数量・契約期間を引き継ぎ |
| Account同期 | Salesforce AccountとZuora Accountの双方向同期。マスタをどちらに置くか初期設計で確定が必要 |
| Sandbox再接続 | Salesforce Sandbox更新後はZuoraとのOAuth 2.0設定を再構成 |
ZuoraのJournal Runと会計コード(Accounting Codes)を活用し、ERPの総勘定元帳(GL)へ仕訳データをエクスポートします。
会計コードはInvoice Item・Payment・Credit Memoなどのトランザクション種別ごとに設定し、ERP側のGL勘定科目にマッピングします。会計期間(Accounting Period)の管理をZuora側で行うか、ERP側で行うかを初期設計で確定してください。
💡 ポイント: Zuora Revenue(RevRec)を併用する場合、収益認識ルールの設定はZuora Billingの会計コードと整合を取る必要があり、ERP連携設計と並行して進めることを推奨します。
Stripe、Adyen、Braintree等の主要ゲートウェイとのネイティブ連携により、Payment Methodのトークン管理と自動回収を実現します。
| 連携方式 | 説明 |
|---|---|
| ネイティブコネクタ | Zuora管理画面から設定可能。トークンはゲートウェイ側で管理 |
| HPM(Hosted Payment Pages) | PCI DSS準拠のZuoraホスト型フォームで決済情報を直接収集 |
| Custom Payment Gateway | Zuora Payment Gateway APIを使用した独自ゲートウェイの組み込み |
💡 ポイント: Sandbox環境ではゲートウェイのテストモードを使用し、本番トークンが混入しないよう管理します。Central Sandboxリフレッシュ時に決済トークンはスクラブ(匿名化)されます(セクション3.2参照)。
導入プロジェクトで繰り返し発生する設定ミスと、その対処・予防策をまとめます。特に不可逆設定に関わるミスは早期発見が重要です。
| # | ミスのパターン | 影響 | 対処・予防策 |
|---|---|---|---|
| 1 | Bill Cycle Day(BCD)の設定誤り | 請求日がずれ、顧客への請求タイミングが不整合 | アカウント作成前にBCDポリシーを文書化し、Account作成テンプレートで固定 |
| 2 | Orders有効化後に旧APIを継続使用 | Subscribe/Amend APIが制限され、連携システムがエラー | 有効化前に全連携システムのAPIバージョンを棚卸し、Order APIへの移行計画を策定 |
| 3 | Sandbox OAuthの再設定漏れ | Salesforce等の連携システムが認証エラーで停止 | Sandboxリフレッシュ後の作業チェックリストにOAuth再設定を必須項目として組み込む |
| 4 | APIユーザーへのUI Access付与 | パスワード変更ポリシーの適用により連携が突然停止 | サービスアカウントはUI Accessを外し、OAuth 2.0クライアント資格情報のみ使用(セクション4.1参照) |
| 5 | Invoice Settlement有効化のタイミングミス | 進行中の会計期間内で有効化し、Negative Invoiceが意図せず変換される | 会計期間クローズ直後に有効化。事前にCentral SandboxでEnd-to-End検証を実施 |
| 6 | Multi-Org有効化後のレポート非対応 | Zuora Analytics等の一部機能がMulti-Org非対応で使用不可 | 使用予定の機能のMulti-Org対応状況を事前にZuoraサポートに確認 |
| 7 | タイムゾーン設定の混在 | レポートやAPIレスポンスの時刻が環境によって異なり、データ突合が困難 | テナント設定・API・レポートツールのタイムゾーンをUTCに統一 |
💡 ポイント: 上記のミスの多くはSandboxでの十分な検証と設定前の合意形成で防げます。特に不可逆設定(#2, #5, #6)は、Central Sandboxでの本番同等環境検証を必須プロセスとして定義してください。
Zuoraの機能の一部はサブスクリプションプランや追加ライセンスによって利用可否が異なります。設計フェーズで使用したい機能が契約に含まれているかを事前確認してください。
| 機能 | 確認が必要なライセンス要件 |
|---|---|
| Central Sandbox | エンタープライズプラン以上での提供が一般的。契約テナント数の確認が必要 |
| Multi-Org | 別途アドオンまたは上位プランが必要な場合あり |
| Deployment Manager | プランによって移行可能なオブジェクト数・回数に制限がある場合あり |
| Zuora Revenue(RevRec) | Zuora Billingとは別ライセンス。ERP連携設計と並行して契約確認が必要 |
| API呼び出し数 | プランごとにAPI Rate Limitが設定されており、大量バッチ処理時は上限に注意 |
💡 ポイント: 導入プロジェクト開始前に、利用予定の全機能についてZuoraのAccount Executiveまたはサポートチームに契約条件を確認し、スコープ外機能が設計に含まれないよう注意してください。