diff --git a/cellular_capability_universal_cdma.cc b/cellular_capability_universal_cdma.cc
index 3d6f65d..dd925f3 100644
--- a/cellular_capability_universal_cdma.cc
+++ b/cellular_capability_universal_cdma.cc
@@ -92,11 +92,13 @@
 }
 
 void CellularCapabilityUniversalCDMA::ActivateAutomatic() {
-  if (activation_code_.empty()) {
+  if (!cellular()->serving_operator_info()->IsMobileNetworkOperatorKnown() ||
+      cellular()->serving_operator_info()->activation_code().empty()) {
     SLOG(Cellular, 2) << "OTA activation cannot be run in the presence of no "
                       << "activation code.";
     return;
   }
+
   PendingActivationStore::State state =
       modem_info()->pending_activation_store()->GetActivationState(
           PendingActivationStore::kIdentifierMEID, cellular()->meid());
@@ -125,7 +127,10 @@
 
   Error error;
   modem_cdma_proxy_->Activate(
-      activation_code_, &error, activation_callback, kTimeoutActivate);
+      cellular()->serving_operator_info()->activation_code(),
+      &error,
+      activation_callback,
+      kTimeoutActivate);
 }
 
 void CellularCapabilityUniversalCDMA::UpdatePendingActivationState() {
diff --git a/cellular_capability_universal_cdma.h b/cellular_capability_universal_cdma.h
index f8f8bd1..b0badb1 100644
--- a/cellular_capability_universal_cdma.h
+++ b/cellular_capability_universal_cdma.h
@@ -119,9 +119,6 @@
   // CDMA ActivationState property.
   MMModemCdmaActivationState activation_state_;
 
-  // The activation code needed for OTASP activation.
-  std::string activation_code_;
-
   MMModemCdmaRegistrationState cdma_1x_registration_state_;
   MMModemCdmaRegistrationState cdma_evdo_registration_state_;
 
diff --git a/cellular_capability_universal_cdma_unittest.cc b/cellular_capability_universal_cdma_unittest.cc
index a65148b..e108111 100644
--- a/cellular_capability_universal_cdma_unittest.cc
+++ b/cellular_capability_universal_cdma_unittest.cc
@@ -328,22 +328,33 @@
 }
 
 TEST_F(CellularCapabilityUniversalCDMAMainTest, ActivateAutomatic) {
+  const string activation_code {"1234"};
+  SetMockMobileOperatorInfoObjects();
+
   mm1::MockModemModemCdmaProxy *cdma_proxy = modem_cdma_proxy_.get();
   SetUp();
   capability_->InitProxies();
 
-  EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
-              GetActivationState(_,_))
-      .Times(0);
-  EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
-              SetActivationState(_,_,_))
-      .Times(0);
+  // Cases when activation fails because |activation_code| is not available.
+  EXPECT_CALL(*mock_serving_operator_info_, IsMobileNetworkOperatorKnown())
+      .WillRepeatedly(Return(false));
   EXPECT_CALL(*cdma_proxy, Activate(_,_,_,_)).Times(0);
   capability_->ActivateAutomatic();
-  Mock::VerifyAndClearExpectations(modem_info_.mock_pending_activation_store());
+  Mock::VerifyAndClearExpectations(mock_serving_operator_info_);
+  Mock::VerifyAndClearExpectations(modem_cdma_proxy_.get());
+  EXPECT_CALL(*mock_serving_operator_info_, IsMobileNetworkOperatorKnown())
+      .WillRepeatedly(Return(true));
+  mock_serving_operator_info_->SetEmptyDefaultsForProperties();
+  EXPECT_CALL(*cdma_proxy, Activate(_,_,_,_)).Times(0);
+  capability_->ActivateAutomatic();
+  Mock::VerifyAndClearExpectations(mock_serving_operator_info_);
   Mock::VerifyAndClearExpectations(modem_cdma_proxy_.get());
 
-  capability_->activation_code_ = "1234";
+  // These expectations hold for all subsequent tests.
+  EXPECT_CALL(*mock_serving_operator_info_, IsMobileNetworkOperatorKnown())
+      .WillRepeatedly(Return(true));
+  EXPECT_CALL(*mock_serving_operator_info_, activation_code())
+      .WillRepeatedly(ReturnRef(activation_code));
 
   EXPECT_CALL(*modem_info_.mock_pending_activation_store(),
               GetActivationState(PendingActivationStore::kIdentifierMEID, _))
diff --git a/mobile_operator_info.h b/mobile_operator_info.h
index 009c5ef..5dc463a 100644
--- a/mobile_operator_info.h
+++ b/mobile_operator_info.h
@@ -173,7 +173,7 @@
   virtual const std::vector<OnlinePortal> &olp_list() const;
 
   // The number to dial for automatic activation.
-  const std::string &activation_code() const;
+  virtual const std::string &activation_code() const;
   // Some carriers are only available while roaming. This is mainly used by
   // Chrome.
   bool requires_roaming() const;
diff --git a/mock_mobile_operator_info.cc b/mock_mobile_operator_info.cc
index aa6ec12..48197bf 100644
--- a/mock_mobile_operator_info.cc
+++ b/mock_mobile_operator_info.cc
@@ -17,6 +17,8 @@
 void MockMobileOperatorInfo::SetEmptyDefaultsForProperties() {
   ON_CALL(*this, mccmnc()).WillByDefault(ReturnRef(empty_mccmnc_));
   ON_CALL(*this, olp_list()).WillByDefault(ReturnRef(empty_olp_list_));
+  ON_CALL(*this, activation_code())
+      .WillByDefault(ReturnRef(empty_activation_code_));
   ON_CALL(*this, operator_name())
       .WillByDefault(ReturnRef(empty_operator_name_));
   ON_CALL(*this, country())
diff --git a/mock_mobile_operator_info.h b/mock_mobile_operator_info.h
index a3ebfd0..ccdd447 100644
--- a/mock_mobile_operator_info.h
+++ b/mock_mobile_operator_info.h
@@ -27,6 +27,7 @@
   MOCK_CONST_METHOD0(mccmnc, const std::string &());
   MOCK_CONST_METHOD0(olp_list,
                      const std::vector<MobileOperatorInfo::OnlinePortal> &());
+  MOCK_CONST_METHOD0(activation_code, const std::string &());
   MOCK_CONST_METHOD0(operator_name, const std::string &());
   MOCK_CONST_METHOD0(country, const std::string &());
   MOCK_CONST_METHOD0(uuid, const std::string &());
@@ -44,6 +45,7 @@
  private:
   std::string empty_mccmnc_;
   std::vector<MobileOperatorInfo::OnlinePortal> empty_olp_list_;
+  std::string empty_activation_code_;
   std::string empty_operator_name_;
   std::string empty_country_;
   std::string empty_uuid_;
