diff --git a/src/com/android/exchange/eas/EasOperation.java b/src/com/android/exchange/eas/EasOperation.java
index 414fcb8..9119dbd 100644
--- a/src/com/android/exchange/eas/EasOperation.java
+++ b/src/com/android/exchange/eas/EasOperation.java
@@ -101,7 +101,8 @@
     protected final long mAccountId;
     private final EasServerConnection mConnection;
 
-    private EasOperation(final Context context, final long accountId,
+    // TODO: Make this private again when EasSyncHandler is converted to be a subclass.
+    protected EasOperation(final Context context, final long accountId,
             final EasServerConnection connection) {
         mContext = context;
         mAccountId = accountId;
diff --git a/src/com/android/exchange/eas/EasProvision.java b/src/com/android/exchange/eas/EasProvision.java
index cad2565..16f5733 100644
--- a/src/com/android/exchange/eas/EasProvision.java
+++ b/src/com/android/exchange/eas/EasProvision.java
@@ -16,6 +16,7 @@
 
 package com.android.exchange.eas;
 
+import android.content.Context;
 import android.content.SyncResult;
 
 import com.android.emailcommon.provider.Policy;
@@ -25,6 +26,7 @@
 import com.android.exchange.adapter.ProvisionParser;
 import com.android.exchange.adapter.Serializer;
 import com.android.exchange.adapter.Tags;
+import com.android.exchange.service.EasServerConnection;
 import com.android.mail.utils.LogUtils;
 
 import org.apache.http.HttpEntity;
@@ -89,6 +91,16 @@
      */
     private int mPhase;
 
+    // TODO: Temporary until EasSyncHandler converts to EasOperation.
+    public EasProvision(final Context context, final long accountId,
+            final EasServerConnection connection) {
+        super(context, accountId, connection);
+        mPolicy = null;
+        mPolicyKey = null;
+        mStatus = null;
+        mPhase = 0;
+    }
+
     public EasProvision(final EasOperation parentOperation) {
         super(parentOperation);
         mPolicy = null;
diff --git a/src/com/android/exchange/service/EasSyncHandler.java b/src/com/android/exchange/service/EasSyncHandler.java
index 57782c4..5e77b45 100644
--- a/src/com/android/exchange/service/EasSyncHandler.java
+++ b/src/com/android/exchange/service/EasSyncHandler.java
@@ -33,6 +33,7 @@
 import com.android.exchange.adapter.Parser;
 import com.android.exchange.adapter.Serializer;
 import com.android.exchange.adapter.Tags;
+import com.android.exchange.eas.EasProvision;
 import com.android.mail.utils.LogUtils;
 
 import org.apache.http.HttpStatus;
@@ -343,8 +344,14 @@
             } else {
                 LogUtils.e(TAG, "Sync failed with Status: " + code);
                 if (resp.isProvisionError()) {
-                    syncResult.stats.numAuthExceptions++;
-                    return SYNC_RESULT_FAILED; // TODO: Handle SyncStatus.FAILURE_SECURITY;
+                    final EasProvision provision = new EasProvision(mContext, mAccount.mId, this);
+                    if (provision.provision(syncResult, mAccount.mId)) {
+                        // We handled the provisioning error, so loop.
+                        result = SYNC_RESULT_MORE_AVAILABLE;
+                    } else {
+                        syncResult.stats.numAuthExceptions++;
+                        return SYNC_RESULT_FAILED; // TODO: Handle SyncStatus.FAILURE_SECURITY;
+                    }
                 } else if (resp.isAuthError()) {
                     syncResult.stats.numAuthExceptions++;
                     return SYNC_RESULT_FAILED; // TODO: Handle SyncStatus.FAILURE_LOGIN;
