Salesforce・freee請求書と連携した作業工数記録システムを構築

Salesforce・freee請求書と連携した作業工数記録システムを構築

顧客の依頼に応じて時給制でサービスを提供するBtoCビジネスにおいて、サービス提供履歴の管理と請求書の発行を効率化するため、Salesforceとfreee請求書とAPI連携する社内ツールを開発と導入を行いました。

目的

従来は顧客へのサービスの提供履歴は、Google Sheetsドキュメントを顧客ごとに作成していました。
また、ビジネスとして国内での売上に加え、国外での売上及び立替金が発生しており、適切な為替レートで日本円に換算して請求する必要があり、経理担当者がExcelで1件1件手作業で請求書を作成する運用となっていました。

添付画像タップして拡大表示

その体制では、以下のような課題が発生していました。

  • 顧客ごとにシートが存在していることで、全体を俯瞰できない
  • シートごとに列が異なっていたり、列内のデータが2つ以上の形式になっていたりすることで、関数を活用した集計や、全履歴を統合した表示を作る等ができない
  • 顧客からサービスの提供履歴の詳細な内訳を求められても迅速に対応できない
  • サービスの提供履歴の情報を集計して請求書を作成するまでに時間がかかり、顧客からクレームを受ける
  • 全社員がフルリモート勤務のため、いつ、誰がどの程度サービスを提供し、売上を発生させているのか把握できない
  • 発行した請求書の入金状況もGoogle Sheets管理だったため、銀行口座への入金記録を手作業で反映させる業務が発生しており、人件費や人為的ミスの可能性がある
  • 特定のサービス提供履歴に関する社内の連絡は、Google Sheetsのコメント機能を利用しており、返信漏れが多発していた

これらの課題を解決し、業務の効率化を図ることを目的としました。

最終的な体制

添付画像タップして拡大表示

請求先情報の同期系統

  • 従業員は顧客から収集した請求先情報(名前・住所など)をSalesforceに登録する
  • 従業員の操作をトリガーとして、システムが顧客の請求先情報をfreeeの「取引先」に同期する

サービス提供履歴の登録系統

  • 従業員は日々の顧客へのサービス提供時に、社内ツールを通じてSalesforceにデータを登録する
  • 従業員によるサービス提供履歴の登録・編集・削除をトリガーとして、システムが社内Slackに情報を通知する

日次の売上の集計・通知系統

  • 毎日午前10時に、当月のサービス提供履歴から売上を計算してSlackに通知する

請求書の作成系統

  • 経理担当者が社内ツールにて、費用を請求したいサービス提供履歴を課金ツール上の概念「請求書」に追加する
  • 社内ツールにて「請求書」をfreeeに送信する操作を行うことにより、Salesforceに登録されたサービス提供履歴が、freee請求書で発行可能な請求書の明細の形式に変換される
  • 準備が出来次第、freee請求書にデータが転送され、顧客に送信可能となる

サービス提供履歴の参照系統

  • 従業員・経理担当者・経営者はSalesforceに登録されたサービス提供履歴を、任意の検索条件で検索して抽出することができる

サービス提供履歴に関する社内連絡系統

  • 従業員は、システムに登録された特定のサービス提供履歴について、社内ツールから会話を開始する操作ができる
  • 従業員の操作をトリガーとして、システムが社内Slackにサービス提供の概要を含めたメッセージを投稿し、従業員が会話できる場所を用意する

工夫したポイント

  • 体制の移行に関して、従業員の戸惑いを可能な限り抑え、時間のロスやミスを防ぐ
    • 既存の体制と大きく体験を変えないようにし、Google Sheetsのようなグリッド形式の入力画面を採用しました。
    • 説明の際に、既存の系統で管理している情報と本質的に何も変わっていないことを強調し、既存の系統と対応づけて説明しました。
  • リリース後に不備が発覚するリスクを可能な限り抑える
    • 入力・参照系統だけに絞ったPoCを作成し、従業員に試験利用してもらうことで機能の過不足を早い段階で検証しました。
  • 開発工数や、保守が必要な部分を可能な限り減らす
    • 既に運用フェーズとなっていたSalesforceや、SaaSであるfreeeを最大限活用し、内製する部分を可能な限り少なくする設計としました。
    • サービス提供履歴に関する社内での相談機能も、社内Slackと連携することでメッセージ機能を丸ごと開発しなくて済む設計としました。
  • 従業員が管理すべきアカウント情報を増やさない
    • 社内ツールを、全社員が利用していたGoogle Workspace発行のGoogleアカウントでログインできる仕様にすることで、従業員に配布するログイン情報を増やさない形としました。
  • 顧客ごとの個別対応を行わないようにする
    • 既存の系統がGoogle Sheets, Excelという非常に柔軟性が高いツールで構成されていたことから、顧客からのちょっとした要望をすぐに反映できてしまっていましたが、管理が煩雑になったり、従業員の業務手順が複雑化したりと費用対効果が非常に悪かったので、個別対応を行わないような業務設計に変更しました。

本支援の結果

本支援の結果、当初目的として掲げていた問題解決が一通り完了しました。
会社として日々どの程度サービスを提供しているのかが一目瞭然になり、さらにサービス提供時のSlack通知により、肌感覚レベルで状況を把握できるようになりました。

また、データが構造化された状態で保存され、検索可能となっていることで、新たに参照したい形や実現したいSlack通知などを思いついたら即実行に移せるような機動力も実現できました。

進行過程から意識していた手戻りを防ぐという観点については、リリース当初から特に不都合の声は上がって来ず、理想的な進行ができました。

サービスの提供と記録を行う従業員の方からは、既存の体制に比べて圧倒的に入力しやすくなったというポジティブなフィードバックをいただくことができました。

担当した作業

  1. 課題の聞き取り
    • 現状の運用体制や課題を従業員にヒアリングし、資料にまとめました。
    • 現状の課題を詳細に聞き取り、システムに求められる要件を明確化しました。
  2. 要件定義・設計
    • 課題を解決するための方法や、実現していくフェーズの検討を行いました。
  3. Salesforceの設定変更
    • データを実際に登録するために、Salesforceにカスタムオブジェクトを追加しました。
    • 実際に従業員がデータの登録を行う課金ツール以外からデータを変更できないよう、権限セットによる権限の制限も行いました。
    • 課金ツールからAPIでSalesforceにアクセスするための接続アプリケーションや、その権限の設定も行いました。
    • 標準機能だけでは検証しきれないレコードの不整合を防ぐため、Apexトリガーによるカスタムバリデーションを実装しました。
  4. 社内ツールの構築
    • Salesforceへのデータ登録や参照を旧体制と同等以上の体験で行う目的で、社内ツールを構築しました。
    • Salesforceでの顧客の請求先の更新をトリガーに、freeeの取引先を更新する系統を構築しました。
    • 大手銀行が公開している外国為替相場情報を毎日取得し、カスタムオブジェクトに格納する系統を構築しました。
    • 社内ツールでの従業員の操作をトリガーに、Slackに通知する系統を構築しました。
    • 社内ツールのホスティング環境やCI/CDパイプラインを構築しました。
  5. freee請求書の初期設定
    • freee請求書において、請求書のフォーマットや税金処理の設定を行いました。
    • 必要な従業員への権限付与を行いました。
  6. 新体制の説明とトレーニングの実施
    • 従業員に対して新体制の説明や質問対応を行いました。
    • freeeの基本知識や請求書発行の方法の説明も行いました。

システム構成

添付画像タップして拡大表示

Sentry, Vercelは既にWebサイト構築用にアカウントがあり、そちらを利用することにしました。
AWS系統もサーバーレスで構築したため、今回のシステム全体で発生するコストはほぼゼロに抑えられました。
AWS系統はAWS CDKによりコード管理しています。

所感

今回のプロジェクトでは、以下の要因によって効率的に進行できたと感じています。

  • 従業員の皆様が本プロジェクトに非常に前向きに、積極的に参加してくださった
  • 関連するSalesforce, freee, 社内システムなども必要に応じて調整可能な立場で参画させていただけた
  • 調整が必要となったSalesforceは、既にSFDXとDevOps Centerを使ったコード管理とリリース体制が構築できていた

特に1点目の、現場の協力を得られたことが大きかったと考えています。
業務改善においては、まずは既存の業務フローについて正確に把握する必要があります。
そして、これらは担当者の中で属人化していることが多く、無意識的に運用できる熟練者である本人に説明してもらっても網羅し切ることが難しいです。
自分がその業務を責任者として完全に引き継ぐつもりでヒアリングすることで、漏れなく把握できると考えています。
そのような深いヒアリングを行うためにも、支援先の従業員の方々との関係性の構築は非常に重要だと考えています。

今回、バージョン1として無事リリースすることができ、それによって今後より良くするための案も各方面から上がってきたので、順次取り入れてより業務改善を進めていければと思います。

Salesforce
Salesforce Apex
Next.js
Vercel
AWS Lambda
AWS SQS
Slack
業務改善