diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index 4e602bc5..9d0e96e8d4 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -1309,6 +1309,8 @@
     "login/screens/recommend_apps_screen.h",
     "login/screens/reset_screen.cc",
     "login/screens/reset_screen.h",
+    "login/screens/supervision_onboarding_screen.cc",
+    "login/screens/supervision_onboarding_screen.h",
     "login/screens/supervision_transition_screen.cc",
     "login/screens/supervision_transition_screen.h",
     "login/screens/sync_consent_screen.cc",
diff --git a/chrome/browser/chromeos/login/screens/supervision_onboarding_screen.cc b/chrome/browser/chromeos/login/screens/supervision_onboarding_screen.cc
new file mode 100644
index 0000000..51b0410
--- /dev/null
+++ b/chrome/browser/chromeos/login/screens/supervision_onboarding_screen.cc
@@ -0,0 +1,68 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/login/screens/supervision_onboarding_screen.h"
+
+#include "base/logging.h"
+#include "chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.h"
+#include "chromeos/constants/chromeos_features.h"
+
+namespace chromeos {
+namespace {
+
+constexpr const char kFinishedUserAction[] = "setup-finished";
+
+}  // namespace
+
+SupervisionOnboardingScreen::SupervisionOnboardingScreen(
+    SupervisionOnboardingScreenView* view,
+    const base::RepeatingClosure& exit_callback)
+    : BaseScreen(SupervisionOnboardingScreenView::kScreenId),
+      view_(view),
+      exit_callback_(exit_callback) {
+  if (view_)
+    view_->Bind(this);
+}
+
+SupervisionOnboardingScreen::~SupervisionOnboardingScreen() {
+  if (view_)
+    view_->Unbind();
+}
+
+void SupervisionOnboardingScreen::Show() {
+  // TODO(ltenorio): Show this screen only for supervised accounts when the
+  // test support is improved by b/959244.
+  if (view_ && base::FeatureList::IsEnabled(
+                   features::kEnableSupervisionOnboardingScreens)) {
+    view_->Show();
+    return;
+  }
+
+  Exit();
+}
+
+void SupervisionOnboardingScreen::Hide() {
+  if (view_)
+    view_->Hide();
+}
+
+void SupervisionOnboardingScreen::OnUserAction(const std::string& action_id) {
+  if (action_id == kFinishedUserAction) {
+    Exit();
+    return;
+  }
+  BaseScreen::OnUserAction(action_id);
+}
+
+void SupervisionOnboardingScreen::OnViewDestroyed(
+    SupervisionOnboardingScreenView* view) {
+  if (view_ == view)
+    view_ = nullptr;
+}
+
+void SupervisionOnboardingScreen::Exit() {
+  exit_callback_.Run();
+}
+
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/screens/supervision_onboarding_screen.h b/chrome/browser/chromeos/login/screens/supervision_onboarding_screen.h
new file mode 100644
index 0000000..3a681c3
--- /dev/null
+++ b/chrome/browser/chromeos/login/screens/supervision_onboarding_screen.h
@@ -0,0 +1,44 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_SUPERVISION_ONBOARDING_SCREEN_H_
+#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_SUPERVISION_ONBOARDING_SCREEN_H_
+
+#include <string>
+
+#include "base/callback.h"
+#include "base/macros.h"
+#include "chrome/browser/chromeos/login/screens/base_screen.h"
+
+namespace chromeos {
+
+class SupervisionOnboardingScreenView;
+
+class SupervisionOnboardingScreen : public BaseScreen {
+ public:
+  SupervisionOnboardingScreen(SupervisionOnboardingScreenView* view,
+                              const base::RepeatingClosure& exit_callback);
+  ~SupervisionOnboardingScreen() override;
+
+  // BaseScreen:
+  void Show() override;
+  void Hide() override;
+  void OnUserAction(const std::string& action_id) override;
+
+  // Called when view is destroyed so there's no dead reference to it.
+  void OnViewDestroyed(SupervisionOnboardingScreenView* view);
+
+  // Called when supervision onboarding has finished, exits the screen.
+  void Exit();
+
+ private:
+  SupervisionOnboardingScreenView* view_;
+  base::RepeatingClosure exit_callback_;
+
+  DISALLOW_COPY_AND_ASSIGN(SupervisionOnboardingScreen);
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_SUPERVISION_ONBOARDING_SCREEN_H_
diff --git a/chrome/browser/chromeos/login/screens/supervision_onboarding_screen_browsertest.cc b/chrome/browser/chromeos/login/screens/supervision_onboarding_screen_browsertest.cc
new file mode 100644
index 0000000..e9cb3b1
--- /dev/null
+++ b/chrome/browser/chromeos/login/screens/supervision_onboarding_screen_browsertest.cc
@@ -0,0 +1,144 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/login/screens/supervision_onboarding_screen.h"
+
+#include <initializer_list>
+#include <memory>
+
+#include "base/bind.h"
+#include "base/run_loop.h"
+#include "base/strings/string_piece.h"
+#include "base/test/scoped_feature_list.h"
+#include "chrome/browser/chromeos/login/login_wizard.h"
+#include "chrome/browser/chromeos/login/mixin_based_in_process_browser_test.h"
+#include "chrome/browser/chromeos/login/oobe_screen.h"
+#include "chrome/browser/chromeos/login/test/js_checker.h"
+#include "chrome/browser/chromeos/login/test/login_manager_mixin.h"
+#include "chrome/browser/chromeos/login/test/oobe_screen_waiter.h"
+#include "chrome/browser/chromeos/login/ui/login_display_host.h"
+#include "chrome/browser/chromeos/login/wizard_controller.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/profiles/profile_manager.h"
+#include "chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.h"
+#include "chromeos/constants/chromeos_features.h"
+
+namespace chromeos {
+
+namespace {
+
+constexpr char kTestUser[] = "test-user1@gmail.com";
+
+chromeos::OobeUI* GetOobeUI() {
+  auto* host = chromeos::LoginDisplayHost::default_host();
+  return host ? host->GetOobeUI() : nullptr;
+}
+
+}  // namespace
+
+class SupervisionOnboardingTest : public MixinBasedInProcessBrowserTest {
+ public:
+  SupervisionOnboardingTest() = default;
+  ~SupervisionOnboardingTest() override = default;
+
+  void SetUpOnMainThread() override {
+    login_manager_.LoginAndWaitForActiveSession(
+        LoginManagerMixin::CreateDefaultUserContext(test_user_));
+
+    ShowLoginWizard(OobeScreen::SCREEN_TEST_NO_WINDOW);
+    WizardController::default_controller()
+        ->screen_manager()
+        ->DeleteScreenForTesting(SupervisionOnboardingScreenView::kScreenId);
+    auto supervision_onboarding_screen =
+        std::make_unique<SupervisionOnboardingScreen>(
+            GetOobeUI()->GetView<SupervisionOnboardingScreenHandler>(),
+            base::BindRepeating(&SupervisionOnboardingTest::HandleScreenExit,
+                                base::Unretained(this)));
+    supervision_onboarding_screen_ = supervision_onboarding_screen.get();
+    WizardController::default_controller()
+        ->screen_manager()
+        ->SetScreenForTesting(std::move(supervision_onboarding_screen));
+
+    MixinBasedInProcessBrowserTest::SetUpOnMainThread();
+  }
+
+  void TurnOnFeature() {
+    feature_list_.InitAndEnableFeature(
+        features::kEnableSupervisionOnboardingScreens);
+  }
+
+  void ShowAndWaitForScreen() {
+    supervision_onboarding_screen_->Show();
+
+    OobeScreenWaiter screen_waiter(SupervisionOnboardingScreenView::kScreenId);
+    screen_waiter.set_assert_next_screen();
+    screen_waiter.Wait();
+  }
+
+  void ClickButton(const std::string& button_id) {
+    std::initializer_list<base::StringPiece> button_path = {
+        "supervision-onboarding", button_id};
+    test::OobeJS().CreateEnabledWaiter(true, button_path)->Wait();
+    test::OobeJS().TapOnPath(button_path);
+  }
+
+  void WaitForScreenExit() {
+    if (screen_exited_)
+      return;
+
+    base::RunLoop run_loop;
+    screen_exit_callback_ = run_loop.QuitClosure();
+    run_loop.Run();
+  }
+
+  SupervisionOnboardingScreen* supervision_onboarding_screen_;
+  base::test::ScopedFeatureList feature_list_;
+
+ private:
+  void HandleScreenExit() {
+    ASSERT_FALSE(screen_exited_);
+    screen_exited_ = true;
+    if (screen_exit_callback_)
+      std::move(screen_exit_callback_).Run();
+  }
+
+  bool screen_exited_ = false;
+  base::OnceClosure screen_exit_callback_;
+
+  const LoginManagerMixin::TestUserInfo test_user_{
+      AccountId::FromUserEmailGaiaId(kTestUser, kTestUser)};
+  LoginManagerMixin login_manager_{&mixin_host_, {test_user_}};
+};
+
+IN_PROC_BROWSER_TEST_F(SupervisionOnboardingTest,
+                       ExitImmediatelyWhenFeatureIsOff) {
+  supervision_onboarding_screen_->Show();
+  WaitForScreenExit();
+}
+
+IN_PROC_BROWSER_TEST_F(SupervisionOnboardingTest, NextButtonExitsScreen) {
+  TurnOnFeature();
+  ShowAndWaitForScreen();
+
+  ClickButton("next-button");
+  WaitForScreenExit();
+}
+
+IN_PROC_BROWSER_TEST_F(SupervisionOnboardingTest, BackButtonExitsScreen) {
+  TurnOnFeature();
+  ShowAndWaitForScreen();
+
+  ClickButton("back-button");
+  WaitForScreenExit();
+}
+
+IN_PROC_BROWSER_TEST_F(SupervisionOnboardingTest, SkipButtonExitsScreen) {
+  TurnOnFeature();
+  ShowAndWaitForScreen();
+
+  ClickButton("skip-button");
+  WaitForScreenExit();
+}
+
+}  // namespace chromeos
diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc
index d521e29..0ce1a49 100644
--- a/chrome/browser/chromeos/login/wizard_controller.cc
+++ b/chrome/browser/chromeos/login/wizard_controller.cc
@@ -64,6 +64,7 @@
 #include "chrome/browser/chromeos/login/screens/network_screen.h"
 #include "chrome/browser/chromeos/login/screens/recommend_apps_screen.h"
 #include "chrome/browser/chromeos/login/screens/reset_screen.h"
+#include "chrome/browser/chromeos/login/screens/supervision_onboarding_screen.h"
 #include "chrome/browser/chromeos/login/screens/supervision_transition_screen.h"
 #include "chrome/browser/chromeos/login/screens/sync_consent_screen.h"
 #include "chrome/browser/chromeos/login/screens/update_required_screen.h"
@@ -115,6 +116,7 @@
 #include "chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
+#include "chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.h"
@@ -507,6 +509,10 @@
       oobe_ui->GetView<DeviceDisabledScreenHandler>()));
   append(std::make_unique<EncryptionMigrationScreen>(
       oobe_ui->GetView<EncryptionMigrationScreenHandler>()));
+  append(std::make_unique<SupervisionOnboardingScreen>(
+      oobe_ui->GetView<SupervisionOnboardingScreenHandler>(),
+      base::BindRepeating(&WizardController::OnSupervisionOnboardingScreenExit,
+                          weak_factory_.GetWeakPtr())));
   append(std::make_unique<SupervisionTransitionScreen>(
       oobe_ui->GetView<SupervisionTransitionScreenHandler>(),
       base::BindRepeating(&WizardController::OnSupervisionTransitionScreenExit,
@@ -673,6 +679,10 @@
   SetCurrentScreen(GetScreen(EncryptionMigrationScreenView::kScreenId));
 }
 
+void WizardController::ShowSupervisionOnboardingScreen() {
+  SetCurrentScreen(GetScreen(SupervisionOnboardingScreenView::kScreenId));
+}
+
 void WizardController::ShowSupervisionTransitionScreen() {
   SetCurrentScreen(GetScreen(SupervisionTransitionScreenView::kScreenId));
 }
@@ -1110,7 +1120,7 @@
 void WizardController::OnMultiDeviceSetupScreenExit() {
   OnScreenExit(MultiDeviceSetupScreenView::kScreenId, 0 /* exit_code */);
 
-  OnOobeFlowFinished();
+  ShowSupervisionOnboardingScreen();
 }
 
 void WizardController::OnResetScreenExit() {
@@ -1138,6 +1148,12 @@
   }
 }
 
+void WizardController::OnSupervisionOnboardingScreenExit() {
+  OnScreenExit(SupervisionOnboardingScreenView::kScreenId, 0 /* exit_code */);
+
+  OnOobeFlowFinished();
+}
+
 void WizardController::OnSupervisionTransitionScreenExit() {
   OnScreenExit(SupervisionTransitionScreenView::kScreenId, 0 /* exit_code */);
 
@@ -1451,6 +1467,8 @@
     ShowFingerprintSetupScreen();
   } else if (screen == MarketingOptInScreenView::kScreenId) {
     ShowMarketingOptInScreen();
+  } else if (screen == SupervisionOnboardingScreenView::kScreenId) {
+    ShowSupervisionOnboardingScreen();
   } else if (screen == SupervisionTransitionScreenView::kScreenId) {
     ShowSupervisionTransitionScreen();
   } else if (screen != OobeScreen::SCREEN_TEST_NO_WINDOW) {
diff --git a/chrome/browser/chromeos/login/wizard_controller.h b/chrome/browser/chromeos/login/wizard_controller.h
index 0885efc..d8392d4 100644
--- a/chrome/browser/chromeos/login/wizard_controller.h
+++ b/chrome/browser/chromeos/login/wizard_controller.h
@@ -179,6 +179,7 @@
   void ShowHIDDetectionScreen();
   void ShowDeviceDisabledScreen();
   void ShowEncryptionMigrationScreen();
+  void ShowSupervisionOnboardingScreen();
   void ShowSupervisionTransitionScreen();
   void ShowUpdateRequiredScreen();
   void ShowAssistantOptInFlowScreen();
@@ -227,6 +228,7 @@
   void OnMultiDeviceSetupScreenExit();
   void OnResetScreenExit();
   void OnDeviceModificationCanceled();
+  void OnSupervisionOnboardingScreenExit();
   void OnSupervisionTransitionScreenExit();
   void OnOobeFlowFinished();
 
diff --git a/chrome/browser/resources/chromeos/login/custom_elements_login.html b/chrome/browser/resources/chromeos/login/custom_elements_login.html
index 36d9825..8d4a561 100644
--- a/chrome/browser/resources/chromeos/login/custom_elements_login.html
+++ b/chrome/browser/resources/chromeos/login/custom_elements_login.html
@@ -31,5 +31,6 @@
 <include src="marketing_opt_in.html">
 <include src="../assistant_optin/assistant_optin_flow.html">
 <include src="multidevice_setup_first_run.html">
+<include src="supervision_onboarding.html">
 
 <script src="chrome://oobe/custom_elements.js"></script>
diff --git a/chrome/browser/resources/chromeos/login/custom_elements_login.js b/chrome/browser/resources/chromeos/login/custom_elements_login.js
index a1ade1a..7b2213f2 100644
--- a/chrome/browser/resources/chromeos/login/custom_elements_login.js
+++ b/chrome/browser/resources/chromeos/login/custom_elements_login.js
@@ -37,3 +37,4 @@
 // <include src="marketing_opt_in.js">
 // <include src="../assistant_optin/assistant_optin_flow.js">
 // <include src="multidevice_setup_first_run.js">
+// <include src="supervision_onboarding.js">
diff --git a/chrome/browser/resources/chromeos/login/custom_elements_oobe.html b/chrome/browser/resources/chromeos/login/custom_elements_oobe.html
index 7a171df1..0253c63d 100644
--- a/chrome/browser/resources/chromeos/login/custom_elements_oobe.html
+++ b/chrome/browser/resources/chromeos/login/custom_elements_oobe.html
@@ -43,5 +43,6 @@
 <include src="marketing_opt_in.html">
 <include src="../assistant_optin/assistant_optin_flow.html">
 <include src="multidevice_setup_first_run.html">
+<include src="supervision_onboarding.html">
 
 <script src="chrome://oobe/custom_elements.js"></script>
diff --git a/chrome/browser/resources/chromeos/login/custom_elements_oobe.js b/chrome/browser/resources/chromeos/login/custom_elements_oobe.js
index ede58cd..9a2c065 100644
--- a/chrome/browser/resources/chromeos/login/custom_elements_oobe.js
+++ b/chrome/browser/resources/chromeos/login/custom_elements_oobe.js
@@ -54,3 +54,4 @@
 // <include src="marketing_opt_in.js">
 // <include src="../assistant_optin/assistant_optin_flow.js">
 // <include src="multidevice_setup_first_run.js">
+// <include src="supervision_onboarding.js">
diff --git a/chrome/browser/resources/chromeos/login/md_login_screens.html b/chrome/browser/resources/chromeos/login/md_login_screens.html
index 50b8ee40..1cc43759 100644
--- a/chrome/browser/resources/chromeos/login/md_login_screens.html
+++ b/chrome/browser/resources/chromeos/login/md_login_screens.html
@@ -26,3 +26,6 @@
 <include src="screen_discover.html">
 <include src="screen_marketing_opt_in.html">
 <include src="screen_multidevice_setup.html">
+<supervision-onboarding id="supervision-onboarding" class="step right hidden"
+    full-screen-dialog hidden>
+</supervision-onboarding>
diff --git a/chrome/browser/resources/chromeos/login/oobe_screens.html b/chrome/browser/resources/chromeos/login/oobe_screens.html
index 20498ab..2d23d58 100644
--- a/chrome/browser/resources/chromeos/login/oobe_screens.html
+++ b/chrome/browser/resources/chromeos/login/oobe_screens.html
@@ -36,3 +36,6 @@
 <include src="screen_discover.html">
 <include src="screen_marketing_opt_in.html">
 <include src="screen_multidevice_setup.html">
+<supervision-onboarding id="supervision-onboarding" class="step right hidden"
+    full-screen-dialog hidden>
+</supervision-onboarding>
diff --git a/chrome/browser/resources/chromeos/login/supervision_onboarding.html b/chrome/browser/resources/chromeos/login/supervision_onboarding.html
new file mode 100644
index 0000000..71b426a
--- /dev/null
+++ b/chrome/browser/resources/chromeos/login/supervision_onboarding.html
@@ -0,0 +1,38 @@
+<!-- Copyright 2019 The Chromium Authors. All rights reserved.
+     Use of this source code is governed by a BSD-style license that can be
+     found in the LICENSE file. -->
+
+<link rel="import" href="chrome://resources/html/polymer.html">
+
+<link rel="import" href="chrome://oobe/custom_elements.html">
+
+<!--
+  UI for the Supervision Onboarding flow that's displayed for the first login
+  or OOBE of supervised users. -->
+<dom-module id="supervision-onboarding">
+  <template>
+    <link rel="stylesheet" href="oobe_flex_layout.css">
+    <oobe-dialog id="supervision-onboarding-dialog" has-buttons>
+      <iron-icon src="chrome://oobe/supervision_icon.png" slot="oobe-icon"
+          aria-hidden="true">
+      </iron-icon>
+      <h1 slot="title">Placeholder Supervision Onboarding flow</h1>
+      <div slot="bottom-buttons" class="flex layout horizontal">
+        <oobe-back-button id="back-button"
+          on-tap="onBack_">
+          Back
+        </oobe-back-button>
+        <div class="flex">
+        </div>
+        <oobe-text-button id="skip-button"
+            border on-tap="onSkip_">
+          Skip
+        </oobe-text-button>
+        <oobe-text-button id="next-button"
+            inverse on-tap="onNext_">
+          Next
+        </oobe-text-button>
+      </div>
+    </oobe-dialog>
+  </template>
+</dom-module>
diff --git a/chrome/browser/resources/chromeos/login/supervision_onboarding.js b/chrome/browser/resources/chromeos/login/supervision_onboarding.js
new file mode 100644
index 0000000..79a48026
--- /dev/null
+++ b/chrome/browser/resources/chromeos/login/supervision_onboarding.js
@@ -0,0 +1,42 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+/**
+ * @fileoverview Supervision Onboarding polymer element. It forwards user input
+ * to the C++ handler.
+ */
+Polymer({
+  is: 'supervision-onboarding',
+
+  behaviors: [LoginScreenBehavior],
+
+  /** @override */
+  ready: function() {
+    this.initializeLoginScreen('SupervisionOnboardingScreen', {
+      commonScreenSize: true,
+      resetAllowed: true,
+    });
+  },
+
+  /** @private */
+  onBack_: function() {
+    this.exitSetupFlow_();
+  },
+
+  /** @private */
+  onSkip_: function() {
+    this.exitSetupFlow_();
+  },
+
+  /** @private */
+  onNext_: function() {
+    this.exitSetupFlow_();
+  },
+
+  /** @private */
+  exitSetupFlow_: function() {
+    chrome.send('login.SupervisionOnboardingScreen.userActed',
+        ['setup-finished']);
+  }
+});
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index fdb2a62..5f82efc 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -1676,6 +1676,8 @@
       "webui/chromeos/login/reset_screen_handler.h",
       "webui/chromeos/login/signin_screen_handler.cc",
       "webui/chromeos/login/signin_screen_handler.h",
+      "webui/chromeos/login/supervision_onboarding_screen_handler.cc",
+      "webui/chromeos/login/supervision_onboarding_screen_handler.h",
       "webui/chromeos/login/supervision_transition_screen_handler.cc",
       "webui/chromeos/login/supervision_transition_screen_handler.h",
       "webui/chromeos/login/sync_consent_screen_handler.cc",
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
index 8e2a4e5..af629ff 100644
--- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
@@ -67,6 +67,7 @@
 #include "chrome/browser/ui/webui/chromeos/login/recommend_apps_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/reset_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h"
+#include "chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/supervision_transition_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/sync_consent_screen_handler.h"
 #include "chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.h"
@@ -417,6 +418,9 @@
   AddScreenHandler(std::make_unique<EncryptionMigrationScreenHandler>(
       js_calls_container_.get()));
 
+  AddScreenHandler(std::make_unique<SupervisionOnboardingScreenHandler>(
+      js_calls_container_.get()));
+
   AddScreenHandler(std::make_unique<SupervisionTransitionScreenHandler>(
       js_calls_container_.get()));
 
diff --git a/chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.cc
new file mode 100644
index 0000000..13a8c15
--- /dev/null
+++ b/chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.cc
@@ -0,0 +1,54 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.h"
+
+#include "base/bind.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/chromeos/login/oobe_screen.h"
+#include "chrome/browser/chromeos/login/screens/supervision_onboarding_screen.h"
+#include "chrome/browser/profiles/profile_manager.h"
+#include "chrome/browser/ui/ash/login_screen_client.h"
+#include "components/login/localized_values_builder.h"
+
+namespace chromeos {
+
+constexpr StaticOobeScreenId SupervisionOnboardingScreenView::kScreenId;
+
+SupervisionOnboardingScreenHandler::SupervisionOnboardingScreenHandler(
+    JSCallsContainer* js_calls_container)
+    : BaseScreenHandler(kScreenId, js_calls_container) {
+  set_user_acted_method_path("login.SupervisionOnboardingScreen.userActed");
+}
+
+SupervisionOnboardingScreenHandler::~SupervisionOnboardingScreenHandler() {
+  if (screen_)
+    screen_->OnViewDestroyed(this);
+}
+
+void SupervisionOnboardingScreenHandler::DeclareLocalizedValues(
+    ::login::LocalizedValuesBuilder* builder) {
+  // TODO(ltenorio): Add the strings for the back/next buttons here.
+}
+
+void SupervisionOnboardingScreenHandler::Bind(
+    SupervisionOnboardingScreen* screen) {
+  BaseScreenHandler::SetBaseScreen(screen);
+  screen_ = screen;
+}
+
+void SupervisionOnboardingScreenHandler::Unbind() {
+  screen_ = nullptr;
+  BaseScreenHandler::SetBaseScreen(nullptr);
+}
+
+void SupervisionOnboardingScreenHandler::Show() {
+  ShowScreen(kScreenId);
+}
+
+void SupervisionOnboardingScreenHandler::Hide() {}
+
+void SupervisionOnboardingScreenHandler::Initialize() {}
+
+}  // namespace chromeos
diff --git a/chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.h
new file mode 100644
index 0000000..1464d653
--- /dev/null
+++ b/chrome/browser/ui/webui/chromeos/login/supervision_onboarding_screen_handler.h
@@ -0,0 +1,73 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SUPERVISION_ONBOARDING_SCREEN_HANDLER_H_
+#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SUPERVISION_ONBOARDING_SCREEN_HANDLER_H_
+
+#include <memory>
+#include <string>
+
+#include "base/macros.h"
+#include "base/time/time.h"
+#include "base/timer/timer.h"
+#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h"
+#include "components/prefs/pref_change_registrar.h"
+
+namespace chromeos {
+
+class SupervisionOnboardingScreen;
+
+// Interface for dependency injection between SupervisionOnboardingScreen
+// and its WebUI representation.
+class SupervisionOnboardingScreenView {
+ public:
+  constexpr static StaticOobeScreenId kScreenId{"supervision-onboarding"};
+
+  virtual ~SupervisionOnboardingScreenView() {}
+
+  virtual void Bind(SupervisionOnboardingScreen* screen) = 0;
+  virtual void Unbind() = 0;
+  virtual void Show() = 0;
+  virtual void Hide() = 0;
+
+ protected:
+  SupervisionOnboardingScreenView() = default;
+
+ private:
+  DISALLOW_COPY_AND_ASSIGN(SupervisionOnboardingScreenView);
+};
+
+class SupervisionOnboardingScreenHandler
+    : public BaseScreenHandler,
+      public SupervisionOnboardingScreenView {
+ public:
+  using TView = SupervisionOnboardingScreenView;
+
+  explicit SupervisionOnboardingScreenHandler(
+      JSCallsContainer* js_calls_container);
+  ~SupervisionOnboardingScreenHandler() override;
+
+  // BaseScreenHandler:
+  void DeclareLocalizedValues(
+      ::login::LocalizedValuesBuilder* builder) override;
+
+  // SupervisionOnboardingScreenView:
+  void Bind(SupervisionOnboardingScreen* screen) override;
+  void Unbind() override;
+  void Show() override;
+  void Hide() override;
+
+ private:
+  // BaseScreenHandler:
+  void Initialize() override;
+
+  SupervisionOnboardingScreen* screen_ = nullptr;
+
+  DISALLOW_COPY_AND_ASSIGN(SupervisionOnboardingScreenHandler);
+};
+
+}  // namespace chromeos
+
+#endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_SUPERVISION_ONBOARDING_SCREEN_HANDLER_H_
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 779e536..912e5cd 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -1893,6 +1893,7 @@
         "../browser/chromeos/login/screens/recommend_apps/scoped_test_recommend_apps_fetcher_factory.cc",
         "../browser/chromeos/login/screens/recommend_apps/scoped_test_recommend_apps_fetcher_factory.h",
         "../browser/chromeos/login/screens/recommend_apps_screen_browsertest.cc",
+        "../browser/chromeos/login/screens/supervision_onboarding_screen_browsertest.cc",
         "../browser/chromeos/login/screens/update_screen_browsertest.cc",
         "../browser/chromeos/login/screens/user_selection_screen_browsertest.cc",
         "../browser/chromeos/login/screens/welcome_screen_browsertest.cc",
diff --git a/chromeos/constants/chromeos_features.cc b/chromeos/constants/chromeos_features.cc
index 8c98d08..e5d8204 100644
--- a/chromeos/constants/chromeos_features.cc
+++ b/chromeos/constants/chromeos_features.cc
@@ -67,6 +67,11 @@
 const base::Feature kMyFilesVolume{"MyFilesVolume",
                                    base::FEATURE_ENABLED_BY_DEFAULT};
 
+// If enabled, will display screens responsible for additional setup for
+// supervised users.
+const base::Feature kEnableSupervisionOnboardingScreens{
+    "EnableSupervisionOnboardingScreens", base::FEATURE_DISABLED_BY_DEFAULT};
+
 // If enabled, will display blocking screens during re-authentication after a
 // supervision transition occurred.
 const base::Feature kEnableSupervisionTransitionScreens{
diff --git a/chromeos/constants/chromeos_features.h b/chromeos/constants/chromeos_features.h
index 18463f0..18e1512 100644
--- a/chromeos/constants/chromeos_features.h
+++ b/chromeos/constants/chromeos_features.h
@@ -39,6 +39,8 @@
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kMojoDBusRelay;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kMyFilesVolume;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
+extern const base::Feature kEnableSupervisionOnboardingScreens;
+COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
 extern const base::Feature kEnableSupervisionTransitionScreens;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS) extern const base::Feature kFsNosymfollow;
 COMPONENT_EXPORT(CHROMEOS_CONSTANTS)
