diff --git a/buffet/device_registration_info.cc b/buffet/device_registration_info.cc
index d4b22a2..3e35cec 100644
--- a/buffet/device_registration_info.cc
+++ b/buffet/device_registration_info.cc
@@ -343,31 +343,16 @@
 std::string DeviceRegistrationInfo::StartRegistration(
     const std::map<std::string, std::string>& params,
     chromeos::ErrorPtr* error) {
+  GetParamValue(params, "ticket_id", &ticket_id_);
   GetParamValue(params, storage_keys::kClientId, &client_id_);
   GetParamValue(params, storage_keys::kClientSecret, &client_secret_);
   GetParamValue(params, storage_keys::kApiKey, &api_key_);
-  GetParamValue(params, storage_keys::kDeviceId, &device_id_);
   GetParamValue(params, storage_keys::kDeviceKind, &device_kind_);
   GetParamValue(params, storage_keys::kSystemName, &system_name_);
   GetParamValue(params, storage_keys::kDisplayName, &display_name_);
   GetParamValue(params, storage_keys::kOAuthURL, &oauth_url_);
   GetParamValue(params, storage_keys::kServiceURL, &service_url_);
 
-  if (!CheckParam(storage_keys::kClientId, client_id_, error))
-    return std::string();
-  if (!CheckParam(storage_keys::kClientSecret, client_secret_, error))
-    return std::string();
-  if (!CheckParam(storage_keys::kApiKey, api_key_, error))
-    return std::string();
-  if (!CheckParam(storage_keys::kDeviceKind, device_kind_, error))
-    return std::string();
-  if (!CheckParam(storage_keys::kSystemName, system_name_, error))
-    return std::string();
-  if (!CheckParam(storage_keys::kOAuthURL, oauth_url_, error))
-    return std::string();
-  if (!CheckParam(storage_keys::kServiceURL, service_url_, error))
-    return std::string();
-
   std::unique_ptr<base::DictionaryValue> commands =
       command_manager_->GetCommandDictionary().GetCommandsAsJson(true, error);
   if (!commands)
@@ -379,26 +364,27 @@
     return std::string();
 
   base::DictionaryValue req_json;
+  req_json.SetString("id", ticket_id_);
   req_json.SetString("oauthClientId", client_id_);
   req_json.SetString("deviceDraft.deviceKind", device_kind_);
   req_json.SetString("deviceDraft.systemName", system_name_);
-  req_json.SetString("deviceDraft.displayName", display_name_);
+  if (!display_name_.empty())
+    req_json.SetString("deviceDraft.displayName", display_name_);
   req_json.SetString("deviceDraft.channel.supportedType", "xmpp");
   req_json.Set("deviceDraft.commandDefs", commands.release());
   req_json.Set("deviceDraft.state", state.release());
 
-  std::string url = GetServiceURL("registrationTickets", {{"key", api_key_}});
+  int status_code{0};
+  auto url = GetServiceURL("registrationTickets/" + ticket_id_,
+                           {{"key", api_key_}});
   auto resp_json = chromeos::http::ParseJsonResponse(
-      chromeos::http::PostJson(url, &req_json, transport_, error).get(),
-      nullptr, error);
+      chromeos::http::PatchJson(url, &req_json, transport_, error).get(),
+      &status_code, error);
   if (!resp_json)
     return std::string();
 
-  if (!resp_json->GetString("id", &ticket_id_)) {
-    chromeos::Error::AddTo(error, kErrorDomainGCD, "unexpected_response",
-                           "Device ID missing");
+  if (status_code >= chromeos::http::status_code::BadRequest)
     return std::string();
-  }
 
   std::string auth_url = GetOAuthURL("auth", {
     {"scope", "https://www.googleapis.com/auth/clouddevices"},
diff --git a/buffet/device_registration_info.h b/buffet/device_registration_info.h
index 90e306f..117f891 100644
--- a/buffet/device_registration_info.h
+++ b/buffet/device_registration_info.h
@@ -120,17 +120,14 @@
   // Persistent data. Some of default values for testing purposes are used.
   // TODO(avakulenko): remove these default values in the future.
   // http://crbug.com/364692
-  std::string client_id_ =
-    "583509257718-lnmeofvjef3b1tm33sbjmckfnumfvn8j.apps.googleusercontent.com";
-  std::string client_secret_ = "6fzZwQhgnsHhvYYvvFdpv5SD";
-  std::string api_key_ = "AIzaSyAp7KVig5m9g4LWWKr79mTS8sXWfUU6w9g";
+  std::string client_id_ = "58855907228.apps.googleusercontent.com";
+  std::string client_secret_ = "eHSAREAHrIqPsHBxCE9zPPBi";
+  std::string api_key_ = "AIzaSyDSq46gG-AxUnC3zoqD9COIPrjolFsMfMA";
   std::string refresh_token_;
   std::string device_id_;
   std::string device_robot_account_;
   std::string oauth_url_ = "https://accounts.google.com/o/oauth2/";
-  std::string service_url_ =
-    "https://www-googleapis-staging.sandbox.google.com/"
-    "clouddevices/v1/";
+  std::string service_url_ = "https://www.googleapis.com/clouddevices/v1/";
 
   // Transient data
   std::string access_token_;
diff --git a/buffet/device_registration_info_unittest.cc b/buffet/device_registration_info_unittest.cc
index 50eb01a..d61f502 100644
--- a/buffet/device_registration_info_unittest.cc
+++ b/buffet/device_registration_info_unittest.cc
@@ -273,12 +273,14 @@
 TEST_F(DeviceRegistrationInfoTest, StartRegistration) {
   EXPECT_TRUE(dev_reg_->Load());
 
-  auto create_ticket = [](const ServerRequest& request,
+  auto update_ticket = [](const ServerRequest& request,
                           ServerResponse* response) {
     EXPECT_EQ(test_data::kApiKey, request.GetFormField("key"));
     auto json = request.GetDataAsJson();
     EXPECT_NE(nullptr, json.get());
     std::string value;
+    EXPECT_TRUE(json->GetString("id", &value));
+    EXPECT_EQ(test_data::kClaimTicketId, value);
     EXPECT_TRUE(json->GetString("deviceDraft.channel.supportedType", &value));
     EXPECT_EQ("xmpp", value);
     EXPECT_TRUE(json->GetString("oauthClientId", &value));
@@ -333,10 +335,12 @@
   })");
   EXPECT_TRUE(command_manager_->LoadCommands(*json_cmds, "", nullptr));
 
-  transport_->AddHandler(dev_reg_->GetServiceURL("registrationTickets"),
-                         chromeos::http::request_type::kPost,
-                         base::Bind(create_ticket));
+  transport_->AddHandler(dev_reg_->GetServiceURL(
+      std::string("registrationTickets/") + test_data::kClaimTicketId),
+      chromeos::http::request_type::kPatch,
+      base::Bind(update_ticket));
   std::map<std::string, std::string> params;
+  params["ticket_id"] = test_data::kClaimTicketId;
   std::string json_resp = dev_reg_->StartRegistration(params, nullptr);
   auto json = std::unique_ptr<base::Value>(base::JSONReader::Read(json_resp));
   EXPECT_NE(nullptr, json.get());
