diff --git a/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml b/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml
index 2e23802..7ec49a7 100644
--- a/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml
+++ b/buffet/dbus_bindings/org.chromium.Buffet.Manager.xml
@@ -56,5 +56,10 @@
                                  valid.
       </tp:docstring>
     </property>
+    <property name="DeviceId" type="s" access="read">
+      <tp:docstring>
+        GCD ID if the device is registered or empty otherwise.
+      </tp:docstring>
+    </property>
   </interface>
 </node>
diff --git a/buffet/device_registration_info.cc b/buffet/device_registration_info.cc
index 3b9fdc9..f14ca21 100644
--- a/buffet/device_registration_info.cc
+++ b/buffet/device_registration_info.cc
@@ -171,8 +171,8 @@
   return BuildURL(oauth_url_, {subpath}, params);
 }
 
-std::string DeviceRegistrationInfo::GetDeviceId(chromeos::ErrorPtr* error) {
-  return CheckRegistration(error) ? device_id_ : std::string();
+const std::string& DeviceRegistrationInfo::GetDeviceId() const {
+  return device_id_;
 }
 
 bool DeviceRegistrationInfo::Load() {
@@ -233,7 +233,6 @@
   client_secret_        = client_secret;
   api_key_              = api_key;
   refresh_token_        = refresh_token;
-  device_id_            = device_id;
   oauth_url_            = oauth_url;
   service_url_          = service_url;
   device_robot_account_ = device_robot_account;
@@ -243,6 +242,8 @@
   description_          = description;
   location_             = location;
 
+  SetDeviceId(device_id);
+
   if (HaveRegistrationCredentials(nullptr)) {
     // Wait a significant amount of time for local daemons to publish their
     // state to Buffet before publishing it to the cloud.
@@ -544,14 +545,16 @@
   }
 
   std::string auth_code;
+  std::string device_id;
   if (!json_resp->GetString("robotAccountEmail", &device_robot_account_) ||
       !json_resp->GetString("robotAccountAuthorizationCode", &auth_code) ||
-      !json_resp->GetString("deviceDraft.id", &device_id_)) {
+      !json_resp->GetString("deviceDraft.id", &device_id)) {
     chromeos::Error::AddTo(error, FROM_HERE, kErrorDomainGCD,
                            "unexpected_response",
                            "Device account missing in response");
     return std::string();
   }
+  SetDeviceId(device_id);
 
   // Now get access_token and refresh_token
   response = chromeos::http::PostFormDataAndBlock(GetOAuthURL("token"), {
@@ -994,7 +997,15 @@
   VLOG(1) << "Changing registration status to " << StatusToString(new_status);
   registration_status_ = new_status;
   if (!registration_status_handler_.is_null())
-    registration_status_handler_.Run(registration_status_);
+    registration_status_handler_.Run();
+}
+
+void DeviceRegistrationInfo::SetDeviceId(const std::string& device_id) {
+  if (device_id == device_id_)
+    return;
+  device_id_ = device_id;
+  if (!registration_status_handler_.is_null())
+    registration_status_handler_.Run();
 }
 
 }  // namespace buffet
diff --git a/buffet/device_registration_info.h b/buffet/device_registration_info.h
index 648bcd6..c519048 100644
--- a/buffet/device_registration_info.h
+++ b/buffet/device_registration_info.h
@@ -45,7 +45,7 @@
  public:
   // This is a helper class for unit testing.
   class TestHelper;
-  using StatusHandler = base::Callback<void(RegistrationStatus)>;
+  using StatusHandler = base::Closure;
 
   DeviceRegistrationInfo(
       const std::shared_ptr<CommandManager>& command_manager,
@@ -100,8 +100,8 @@
     const std::string& subpath = {},
     const chromeos::data_encoding::WebParamList& params = {}) const;
 
-  // Returns the registered device ID (GUID) or empty string if failed
-  std::string GetDeviceId(chromeos::ErrorPtr* error);
+  // Returns the registered device ID (GUID) or empty string.
+  const std::string& GetDeviceId() const;
 
   // Loads the device registration information from cache.
   bool Load();
@@ -218,6 +218,7 @@
       chromeos::ErrorPtr* error);
 
   void SetRegistrationStatus(RegistrationStatus new_status);
+  void SetDeviceId(const std::string& device_id);
 
   std::unique_ptr<XmppClient> xmpp_client_;
   base::MessageLoopForIO::FileDescriptorWatcher fd_watcher_;
diff --git a/buffet/device_registration_info_unittest.cc b/buffet/device_registration_info_unittest.cc
index 7909713..0823e77 100644
--- a/buffet/device_registration_info_unittest.cc
+++ b/buffet/device_registration_info_unittest.cc
@@ -221,7 +221,7 @@
                                    mock_callback));
   }
 
-  MOCK_METHOD1(OnRegistrationStatusChange, void(RegistrationStatus));
+  MOCK_METHOD0(OnRegistrationStatusChange, void());
 
   base::DictionaryValue data_;
   std::shared_ptr<MemStorage> storage_;
@@ -385,8 +385,7 @@
   transport_->AddHandler(dev_reg_->GetDeviceURL(),
                          chromeos::http::request_type::kGet,
                          base::Bind(DeviceInfoHandler));
-  std::string id = dev_reg_->GetDeviceId(nullptr);
-  EXPECT_EQ(test_data::kDeviceId, id);
+  EXPECT_EQ(test_data::kDeviceId, dev_reg_->GetDeviceId());
 }
 
 TEST_F(DeviceRegistrationInfoTest, RegisterDevice) {
diff --git a/buffet/manager.cc b/buffet/manager.cc
index 7a4a9ca..53ec9c9 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -72,7 +72,7 @@
           base::Bind(&Manager::OnRegistrationStatusChange,
                      base::Unretained(this))));
   // Reset D-Bus properties.
-  OnRegistrationStatusChange(device_info_->GetRegistrationStatus());
+  OnRegistrationStatusChange();
   device_info_->Load();
   dbus_adaptor_.RegisterWithDBusObject(&dbus_object_);
   dbus_object_.RegisterAsync(cb);
@@ -90,17 +90,7 @@
     return;
   }
 
-  std::string device_id;
-  if (registered) {
-    error.reset();
-    device_id = device_info_->GetDeviceId(&error);
-    if (error) {
-      response->ReplyWithError(error.get());
-      return;
-    }
-  }
-
-  response->Return(device_id);
+  response->Return(registered ? device_info_->GetDeviceId() : std::string());
 }
 
 void Manager::GetDeviceInfo(DBusMethodResponse<std::string> response) {
@@ -205,8 +195,10 @@
   return message;
 }
 
-void Manager::OnRegistrationStatusChange(RegistrationStatus status) {
-  dbus_adaptor_.SetStatus(StatusToString(status));
+void Manager::OnRegistrationStatusChange() {
+  dbus_adaptor_.SetStatus(
+      StatusToString(device_info_->GetRegistrationStatus()));
+  dbus_adaptor_.SetDeviceId(device_info_->GetDeviceId());
 }
 
 }  // namespace buffet
diff --git a/buffet/manager.h b/buffet/manager.h
index 03bd68a..da3c044 100644
--- a/buffet/manager.h
+++ b/buffet/manager.h
@@ -73,7 +73,7 @@
   // Handles calls to org.chromium.Buffet.Manager.Test()
   std::string TestMethod(const std::string& message) override;
 
-  void OnRegistrationStatusChange(RegistrationStatus status);
+  void OnRegistrationStatusChange();
 
   org::chromium::Buffet::ManagerAdaptor dbus_adaptor_{this};
   chromeos::dbus_utils::DBusObject dbus_object_;
