Yappli Tech Blog

株式会社ヤプリの開発メンバーによるブログです。最新の技術情報からチーム・働き方に関するテーマまで、日々の熱い想いを持って発信していきます。

オンボーディング・サポートを自動化する

はじめに

ITグループの原口です。 株式会社ヤプリでは現在、毎月一定数の新しい仲間を迎え入れており、そのオンボーディングで主にIT関連のサポートをするのがITグループの重要なミッションです。

私自身も経験したのですが、オンボーディング期間はインプット情報が過多になりがちで、うまく消化できないことがあります。そんな時、リアルに出社していれば気軽に質問ができますが、オンラインではここに一定のハードルが生まれます。まして、入社直後で社員との関係性も少ないなかでちょっとしたことを質問するにも「そもそも誰に何をきけば」状態であることがほとんどです。

そこで「トラブルを早期に検知し、関係者とのコミュニケーションの場所を用意し、オンボーディングに寄与する」これらを自動化する仕組みを新たに始めました。

前提

自動化では以下のサービスを利用しています(それぞれ基本的な使い方は割愛しています)

  • Okta
  • Zapier
  • Slack

トラブル検知のトリガー

ヤプリでは業務で様々なSaaSを利用しており、IdPにはOktaを利用しています。様々なサービスの入り口がOktaであり、Oktaでトラブルが発生すると業務に大きな支障がでることになります。

Oktaでは一定回数パスワード入力を誤るとアカウントがロックされますが、今回はこのアカウントロックをトリガーにしました。

アカウントロックは自分自身で解除することも可能ですがその場合、現時点ではOktaに設定している秘密の質問が必要です(OIEでは不要にできるようです)。 観測してきた範囲では「アカウントロックに至っている場合、パスワードだけではなく秘密の質問も失念している可能性が高く、この時点で一度社内で利用しているサービス全体について理解してもらう」ことがオンボーディング上もっとも効果的であるという判断からここをトリガーにしています。

つまり、ロックさせないロックを自動的に解除するといったアプローチではなく、ロックに至っているという事実から、社内で利用するサービスについてITグループとして十分な説明ができていないという仮説に基づき、ユーザーから問い合わせが来る前にこちらから接触するという、超攻撃的なディフェンスを敷いています。

コミュニケーションチャンネル

トラブルを検知するとZapierを使ってSlackに一時チャンネルを作成し、関係者を招待します。

Slackの一時チャンネルにはあらかじめアカウントロックの解除までに必要なプロセスが自動で投稿されますが、それ以外にも何か困りごとがあればこのチャンネルでコミュニケーションして解決していきます。 一通り確認ができれば一時チャンネルはアーカイブします。

実際の設定

OktaとZapierの実際の設定は以下となります。

トリガー設定

  • ZapierにWebhookを受け取るZapを作成し、Webhook URLを控えておきます。 f:id:cazziwork:20211125050645p:plain
  • Oktaで管理コンソールからWorkflow→Event Hooksに進み、Create Event Hookボタンをクリックします。
  • 任意のNameを入力し、URLにはZapierのWebhook URLを指定します。必要に応じて認証用の情報を設定し、Subscribe to eventsにはAuto-lock user accout for Okta.を指定します。設定内容を確認してSave & Continue をクリックします。 f:id:cazziwork:20211125050705p:plain
  • これでOkta側の設定は完了ですが、PreviewからWebhookのテストができます。Deliver Requestをクリックすると実際にZapierにPOSTされます。 f:id:cazziwork:20211125050721p:plain

ここから先はすべてZapierでの設定となります。

対象ユーザーのSlackIDを取得

  • 最初にSlackIDを取得します。ZapのAction EventでSlackのFind User by Emailを選択します。
  • Set up actionではWebhookで送られてきたデータの中からActor Alternate IDを選択します。 f:id:cazziwork:20211125050859p:plain
  • Test actionで取得したSlackIDが正しいか確認します。

Slackチャンネルを作成

  • ZapのAction EventでCreate Channelを選択します。
  • Set up actionで作成するSlackの一時チャンネル名を指定します。今回は以下の通りtmp-okta-lockedというプレフィックスの後ろに、Webhookが保持している日時データを指定しています。必要に応じてタイムゾーンの変更などは行ってください。 なおSlackのチャンネル名で使用できない記号はすべて_に置換して作成されます。 f:id:cazziwork:20211124094208p:plain
  • Test actionで指定したチャンネルが作成されるかを確認します。

Slackにユーザーを招待

  • ZapのAction EventでInvite User To Channelを選択します。
  • Set up actionではChannelに作成したチャンネルID指定します。Usersには取得してきた対象者のSlackIDの他、関係するメンバーを指定します。 f:id:cazziwork:20211125050930p:plain
  • Test actionで指定したチャンネルに招待されるかを確認します。

Slackに定型文を投稿

  • ZapのAction EventでSend Channel Messageを選択します。
  • Set up actionではChannelに先ほど指定したチャンネルIDを指定し、復旧までの流れ(管理者がやるべきこと、ユーザーがやるべきことなど)を記述します。 f:id:cazziwork:20211125050941p:plain
  • Test actionで指定したチャンネルにメッセージが投稿されるかを確認します。

以上でオンボーディング・サポートの自動化が完成です。

これでアカウントロックをトリガーに、困りごとがないかを積極的にコミュニケーションするためのチャンネルが自動的に作成されました。

まとめ

今回のシナリオではOktaのアカウントロックをトリガーにしていますが、他にも様々なシーンに応用ができると思いますので、みなさんの参考になれば幸いです。