Everdo Help – Data Sync /docs/sync/ Recent content in Data Sync on Everdo Help Hugo -- gohugo.io en-us Sat, 31 Oct 2020 00:00:00 +0000 Docs: Local Network Sync /docs/sync/network/ Sat, 31 Oct 2020 00:00:00 +0000 /docs/sync/network/ <h2 id="overview-of-the-local-network-sync">Overview of the local network sync</h2> <ul> <li>The desktop Everdo app is configured as a <em>sync server</em> on one of your computers.</li> <li>All other devices must be configured as <em>clients</em>.</li> <li>Each client performs a two-way sync with the <em>server</em> every few seconds or upon request, per configuration.</li> <li>Clients do not communicate directly with each other. Instead, they communicate with the server, which is responsible for propagating changes to all devices appropriately.</li> </ul> <p>The rest of this page describes the configuration process in detail.</p> <div class="alert alert-primary" role="alert"> If you find that local network sync is too restrictive or difficult to set up, then you might consider using the <a href="/docs/sync/ess/">Encrypted Sync Service</a>, which is more flexible and easier to setup. </div> <h2 id="deciding-which-computer-should-be-the-server">Deciding which computer should be the server</h2> <p>Since only one computer can be the server, it&rsquo;s important to correctly choose <em>which</em> one. Here are the things you should keep in mind.</p> <ul> <li>You must get your clients on the same network as the server to perform sync.</li> <li>When your server gets moved to a different local network, its IP address might change, which will likely require re-configuration of both the server and the clients.</li> </ul> <div class="alert alert-primary" role="alert"> Only the desktop version of Everdo can be configured as a server. </div> <p>Let us consider a few examples.</p> <p><strong>Example 1</strong> You have a desktop computer at home, a phone and a laptop. If you set up your home PC as the server, then you will be able to sync all your devices at home. But you won&rsquo;t be able to sync the laptop and the phone when not at home, because they are no longer on the same network as the server (unless there is a VPN acting as a local network over the internet).</p> <p><strong>Example 2</strong> You have a desktop computer at home, a phone and a laptop. If you set up your laptop as the server and all other devices as clients, then you will be able to sync both at home and at work. But you will have to make sure your network settings match the network that you are currently in. This is because your home network configuration will likely be different from your work network configuration.</p> <p>Once decided which computer should be the server, we can proceed to the next step.</p> <h2 id="server-configuration">Server configuration</h2> <p>First we need to to identify your server&rsquo;s IP address on the local network.</p> <h3 id="determining-your-local-ip-address">Determining your local IP address</h3> <p><strong>On Linux and macOS</strong> you can use the <code>ifconfig</code> terminal command. In the code block below you can see the output of <code>ifconfig</code>, which indicates that the computer has IP address <code>192.168.1.5</code>.</p> <pre><code>$ ifconfig enp0s25: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt; mtu 1500 inet 192.168.1.5 netmask 255.255.255.0 broadcast 192.168.1.255 ... </code></pre> <p><strong>On Windows</strong> you can use the <code>ipconfig</code> terminal command. For example, the output below indicates local IP address <code>192.1.168.1.5</code>.</p> <pre><code>&gt; ipconfig Windows IP Configuration Ethernet adapter Local Area Connection: Connection-specific DNS Suffix . . : IPv4 Address . . . . . . . . . . . : 192.168.1.5 ... </code></pre> <p>Many computers have multiple network interfaces, which means they might have multiple IP addresses, for example one for the wired connection and another one for wireless. You can take note of all of them and to later determine which one works.</p> <h3 id="configuring-and-starting-the-server">Configuring and starting the server</h3> <p>Run Everdo and follow these steps to configure the server.</p> <ol> <li>Go to <em>Settings</em> and open the <em>Sync</em> tab.</li> <li>In <em>Mode</em> select <em>Server</em>.</li> <li>Switch to the <em>API</em> tab.</li> <li>Set the <em>IP/Hostname</em> setting to correspond to the <em>IP Address</em> of the computer on your local network. You can leave port as <code>11111</code>, unless it&rsquo;s taken by another process, which is unlikely.</li> <li>Optional: Change the <em>API Key</em> setting. This is a password that is used to authenticate your clients before they are allowed to sync with the server. The API key must be alpha-numeric.</li> <li>Press <em>Apply</em> and close Everdo.</li> <li>Run Everdo again and observe the bottom right corner of the application window. If the configuration is correct, then the message &ldquo;Everdo API is up&rdquo; will appear.</li> </ol> <p>The success message indicates that the server is ready and you can proceed to configuring clients.</p> <p>If you see a warning message instead, then check out the <a href="#troubleshooting">Troubleshooting</a> section.</p> <h3 id="optional-set-up-a-static-ip-address-for-the-server">Optional: set up a static IP address for the server</h3> <p>In order to prevent the IP address of your server of being changed by the network router arbitrarily, you might want to make it fixed (static).</p> <p>The correct steps to set up a static IP address for your computer differ based on your network hardware and operating system. There are two basic approaches you could consider:</p> <ul> <li>Fix the IP address at the network router level via the control panel UI of your router.</li> <li>Fix the IP address at the operating system level via network configuration tools of your operating system, for example, the control panel on Windows.</li> </ul> <h2 id="client-configuration">Client configuration</h2> <p>The point of client configuration is to specify the <em>IP Address</em>, <em>Port</em>, and the <em>API Key</em> of the <em>Server</em>, on all the client devices so that they know how to reach the server.</p> <h3 id="configuring-desktop-clients">Configuring desktop clients</h3> <ol> <li>Start Everdo and open <em>Settings</em>, <em>Sync</em>.</li> <li>Select <em>Manual Client</em> in the <em>Mode</em> drop-down.</li> <li>Fill in the <em>IP/Hostname</em>, <em>Port</em>, and <em>Server API Key</em> settings. Use the values based on your server configuration.</li> <li>Press <em>Sync</em> to perform a two-way sync between the app and the server.</li> </ol> <p>You should see a success status if all went correctly. If you want the computer to sync automatically, you should change the <em>Mode</em> setting to <em>Client</em> instead of <em>Manual Client</em>.</p> <h3 id="configuring-android-clients">Configuring Android clients</h3> <ol> <li>Start Everdo and open <em>Settings</em>.</li> <li>Tap <em>Sync Mode</em> and select the <em>Local Network</em> option.</li> <li>Tap <em>Local Network</em>, fill in the <em>IP/Hostname</em>, <em>Port</em>, and <em>Server API Key</em> settings. Use the values based on your server configuration.</li> <li>Exit <em>Settings</em> and try to trigger sync by swiping down the list of actions.</li> </ol> <p>You should see a success message if sync completed correctly. To have the device sync automatically, you can enable the <em>Auto Sync</em> setting in app settings.</p> <h3 id="configuring-ios-clients">Configuring iOS clients</h3> <ol> <li>Start Everdo and open <em>Settings</em>.</li> <li>In the <em>Sync Mode</em> section, select <em>Local Network</em>.</li> <li>Press <em>Setup Sync</em>.</li> <li>Fill in the <em>IP/Hostname</em>, <em>Port</em>, <em>Server API Key</em> settings. Use the values corresponding to your server configuration.</li> <li>Tap <em>Sync Once</em></li> </ol> <p>You should see a success message if all went correctly. To have the device sync automatically, enable the <em>Auto Sync</em> toggle.</p> <h2 id="manual-sync-actions">Manual sync actions</h2> <p>Every time Everdo syncs automatically, it sends an incremental set of changes over to keep the server in the updated state.</p> <p>However you can also perform the following actions manually, if needed.</p> <p>In the Android app, these actions are available in <em>Settings -&gt; Manual sync actions</em>. In the <em>Desktop</em> and <strong>iOS</strong> apps, the manual actions are located under <em>Settings -&gt; Sync</em>.</p> <h3 id="sync">Sync</h3> <p>Triggers a two-way incremental sync. Incremental means that only the changes since <em>last successful sync</em> will be taken into consideration. Conflicts will get merged according to the latest modification time. This action has the exact same effect as the automatic sync that runs every few seconds.</p> <h3 id="pull-from-server">Pull from server</h3> <p>Triggers a one-way sync by copying <em>all</em> data from the server to the client. Any conflicts are overwritten by the server data.</p> <h3 id="push-to-server">Push to server</h3> <p>Triggers a one-way sync by copying <em>all</em> data from the client to the server. Any conflicts are overwritten by the client data.</p> <h2 id="troubleshooting">Troubleshooting</h2> <p>We look at some common issues with Local Network sync configuration.</p> <h3 id="problem-server-doesnt-start---everdo-api-is-down-eaddrnotavail">Problem: Server doesn&rsquo;t start - Everdo API is down, <code>EADDRNOTAVAIL</code></h3> <ul> <li>In the vast majority of cases this error is caused by an invalid IP address specified in the server configuration. To resolve the problem, try determining your IP address again or try a different one if you have multiple.</li> <li>In very rare cases there might be a port conflict with another app, so you can try changing the <em>port</em> setting to a different value, for example <code>11112</code> or similar.</li> </ul> <p>Remember to restart Everdo after changing the server settings to see if it worked.</p> <h3 id="problem-server-used-to-start-but-it-doesnt-start-anymore">Problem: Server used to start, but it doesn&rsquo;t start anymore</h3> <p>It&rsquo;s likely that your computer has changed its IP address, so the configuration that used to work is no longer valid. In this case you should:</p> <ul> <li><a href="#determining-your-local-ip-address">Find out the new IP address</a> and update the corresponding Everdo sync settings on both the client and the server.</li> <li>Configure your server to have a <a href="#optional-set-up-a-static-ip-address-for-the-server">static IP address</a></li> </ul> <h3 id="problem-server-starts-but-sync-doesnt-work">Problem: Server starts, but sync doesn&rsquo;t work</h3> <p>This most likely means the clients can&rsquo;t obtain a connection to the server. There are many possible reasons for that depending on your physical network configuration, as well as the software running on your server computer. Some of the most frequent issues are:</p> <ol> <li>Wrong IP address/port was specified on the client.</li> <li>The client is connected to a different local network (or none).</li> <li>A firewall is running on the server and blocking incoming requests.</li> <li>Special symbols were used in the <em>API key</em> (as opposed to alpha-numeric characters only).</li> </ol> <p>Below is a <em>connection test</em> you can perform to ensure that Everdo server physically accessible from both the server and the client devices.</p> <ol> <li>Open a web browser on the <em>server</em> computer.</li> <li>In the address bar type <code>https://192.168.1.1:11111/time?key=***</code>, replacing <code>192.168.1.1</code> with the correct IP address and <code>***</code> with the correct API key.</li> <li>Press <code>Enter</code>. You should see a response indicating an HTTPS warning, or possible an OK message. Both mean that the server works <em>correctly</em> and your are able to connect to it from <em>the same</em> computer.</li> <li>Repeat the steps 2,3 on the <em>client</em> computer. You will either see the same response as you saw in step <em>3</em>, or you might see an error saying <code>This site can't be reached</code>, or similar depending on your browser. This error means that there&rsquo;s either a connectivity issue between the client and the server. For example a firewall may be blocking the requests.</li> </ol> <p>Some Linux distributions, as well as Windows can have their firewall enabled by default to block all incoming traffic to apps. You should try disabling these first to see if that helps. If it does, then you could configure an exception to allow local network traffic to Everdo.</p> <p>The exact instructions to configure the firewall on your OS can be found online. Some mainstream Linux distributions, use <code>ufw</code>.</p> <h3 id="problem-sync-is-working-but-some-itemstags-are-missing-on-a-device">Problem: Sync is working, but some items/tags are missing on a device</h3> <p>Sometimes devices get out of sync for one reason or another. Since the auto-sync algorithm is incremental, it will not detect a discrepancy in data that might have occurred a while ago. If you notice such discrepancy, you can use <a href="#manual-sync-actions">manual sync actions</a> to bring the devices back to the same state. Make sure to read the description of actions carefully so that you understand what they do.</p> Docs: Encrypted Sync Service /docs/sync/ess/ Sat, 31 Oct 2020 00:00:00 +0000 /docs/sync/ess/ <h2 id="overview">Overview</h2> <ul> <li>The Encrypted Sync Service (ESS) is the easiest way to sync your Everdo data across multiple devices.</li> <li>Each device still maintains a full local database of the data and is capable of working offline for any period of time.</li> <li>When online, each device sends data updates to the Sync Service, which keeps track of them and passes changes to other devices.</li> <li>The transmitted data gets encrypted on the client side and the encryption key is never shared with the Sync Service. See <a href="#q-which-parts-of-the-data-get-encrypted-and-how">what data is encrypted and how</a> to learn more.</li> </ul> <h2 id="creating-a-sync-account">Creating a sync account</h2> <p>To connect your devices to ESS, you will need a user account that will store the encrypted data. To create an account, go to <a href="https://sync.everdo.net/signup">sync.everdo.net/signup</a> and complete the sign up process.</p> <p>Make sure to verify your email address by clicking a verification link in your email inbox. You should see the <em>Active</em> status in your ESS account before trying to configure your devices.</p> <div class="alert alert-primary" role="alert"> Using the Sync Service requires a small subscription fee. After you create an account, a 30-day evaluation period starts. You will be reminded via email a few days before the evaluation period ends. </div> <h2 id="configuring-sync-in-the-desktop-app---automatic-setup">Configuring sync in the desktop app - automatic setup</h2> <div class="alert alert-primary" role="alert"> If possible, try to first set up sync on one of your computers as described below. Then proceed to configure any mobile devices. This way you will be able to use the streamlined setup process. </div> <ol> <li>Run Everdo and click <em>Setup Sync</em> at the top of the application window.</li> <li>Choose <em>Encrypted Sync Service</em> and proceed to sign in with your ESS username and password.</li> <li>Once signed in, follow the rest of the steps until you see a confirmation message saying that configuration is complete.</li> <li>If you need to setup a mobile device, press <em>Pair Mobile Device</em> and follow further instructions on then screen.</li> </ol> <p>You can always pair another mobile device from <em>Settings-&gt;Sync-&gt;Pair Device</em>.</p> <h2 id="configuring-sync-in-the-desktop-app---manual-setup">Configuring sync in the desktop app - manual setup</h2> <p>The following manual steps are equivalent to the automatic setup described earlier.</p> <p>First, sign in.</p> <ol> <li>Open Everdo, go to <em>Settings-&gt;Sync</em>.</li> <li>In <em>Mode</em>, select <code>Encrypted Sync</code>.</li> <li>Enter your <a href="#creating-an-ess-account">ESS account credentials</a> to sign in.</li> <li>Optional: In <em>Device Name</em>, enter a label for this computer that will make sense to you later on.</li> <li>Click <em>Sign In</em>.</li> </ol> <p>Once you have signed in, the next step is to set up an encryption key for your data.</p> <div class="alert alert-primary" role="alert"> <h4 class="alert-heading">Note</h4> You only need to generate an encryption key on <em>one</em> of your computers. All other devices must use <em>the exact same key</em> in order to work with shared encrypted data. </div> <p>When in <em>Sync Settings</em>, notice that an encryption key (passphrase) has already been generated for you. You can see it in the <em>Encryption Key</em> textbox. This key was chosen randomly, so it is safe to use. However you can also modify it if needed.</p> <p>Setting your own encryption key is possible as well. You must create a 16-word passphrase using the <a href="https://github.com/diracdeltas/niceware/blob/1895eb01a9c504058b4a9b4d8b66557694bf196f/lib/wordlist.js">Niceware list</a>. If you use a word that is not in the list, or a different number of words, then the key will not pass validation, because a 256-bit key is required.</p> <div class="alert alert-warning" role="alert"> <h4 class="alert-heading">Warning</h4> You must configure all your devices to use <em>the exact same encryption key</em>. Otherwise, ESS will refuse to sync in order to avoid data corruption. </div> <p>Once you have set the encryption key, click <em>Sync</em> to initiate sync. You should then see the <em>Status</em> label change to <code>Synced</code> in a few seconds. Finally, press <em>Apply</em> to save the configuration.</p> <div class="alert alert-warning" role="alert"> <h4 class="alert-heading">Warning for users transitioning from local network sync to ESS</h4> <p>If you have been using local network sync before, you must perform this step.</p> <p>Once ESS sync is working, press <em>Push</em> once in <em>Settings-&gt;Sync</em> in order to copy all of your existing data to ESS. Otherwise some of your previously synced data may be missing from ESS resulting in inconsistencies. This step is <em>not needed</em> for devices that have never synced before.</p> </div> <h2 id="quick-pairing-of-mobile-devices">Quick pairing of mobile devices</h2> <p>Once your desktop computer is syncing successfully, you can use it to easily configure your mobile devices.</p> <ol> <li>In the desktop app, go to <em>Settings -&gt; Sync -&gt; Pair Device -&gt; Begin</em>.</li> <li>Follow the instructions until you see a QR code.</li> <li>In the mobile app, go to <em>Settings</em>, change <em>Sync Mode</em> to <code>Encrypted Service</code> or <code>ESS Integration</code>, press <em>Quick Pairing</em>.</li> <li>Scan the QR code, confirm the pairing request and wait until you see a success message in the mobile app.</li> </ol> <div class="alert alert-primary" role="alert"> The pairing step (4) performs a full two-way sync of your device with the ESS, so it can take a few minutes if you have a lot of data or a slow internet connection. </div> <p>After the pairing process your device will be syncing automatically.</p> <h2 id="configuring-ess-sync-on-a-secondthird-computer">Configuring ESS sync on a second/third computer</h2> <p>To configure a second computer you need to bring the encryption key from your first computer, as opposed to generating a new one.</p> <ol> <li>Sign in to ESS, as described earlier on this page.</li> <li>Enter the <em>Encryption Key</em>.</li> <li>Press <em>Sync</em> and make sure that the <code>Synced</code> status appears.</li> <li>Press <em>Apply</em> to apply and save the configuration.</li> </ol> <h2 id="configuring-ess-sync-in-the-android-app---manual-setup">Configuring ESS sync in the Android app - manual setup</h2> <div class="alert alert-primary" role="alert"> You can use a QR code scanner on your Android device to scan the encryption key on your computer and paste it into the app. </div> <ol> <li>Go to <em>Settings</em></li> <li>Tap <em>Sync Type</em>, select <code>Encrypted Service</code></li> <li>Tap <em>Encrypted Service: Manual Setup</em>, then <em>Sign in to sync</em></li> <li>Use your ESS username and password to sign in.</li> <li>Tap <em>Encryption Key</em> and enter the correct encryption key.</li> <li>Exit settings and try to trigger sync by swiping down the view.</li> </ol> <p>Once you have have verified that sync is working, you can enable <em>Auto Sync</em> in settings.</p> <h2 id="configuring-ess-sync-in-the-ios-app---manual-setup">Configuring ESS sync in the <strong>iOS</strong> app - manual setup</h2> <div class="alert alert-primary" role="alert"> You can use a QR code scanner or the camera app on your iOS device to scan the encryption key on your computer and paste it into the app. </div> <ol> <li>Go to <em>Settings</em></li> <li>In <em>Sync Mode</em>, select <code>ESS Integration</code></li> <li>Tap <em>Manual Setup-&gt;Connect</em></li> <li>Use your ESS username and password to sign in.</li> <li>Tap <em>Update Key</em> and enter the correct encryption key.</li> <li>Tap <em>Sync Once</em> and observe the status.</li> </ol> <p>Once you have have verified that sync is working, you can enable <em>Auto Sync</em>.</p> <h2 id="manual-sync-actions">Manual sync actions</h2> <p>In some cases it may be necessary to manually trigger a sync action to fix a data discrepancy between devices, particularly when transitioning between local network sync and ESS sync, or when switching to a different ESS account.</p> <p>The manual actions described below are available in <em>sync settings</em>.</p> <h3 id="push">Push</h3> <p>Copy all items and tags from the device to ESS, making ESS data completely match the local data.</p> <h3 id="force-push">Force Push</h3> <p>Same as <em>Push</em>, but also forces ESS to accept data encrypted with a different encryption key. This is necessary after changing the encryption key, otherwise ESS will reject the sync request and report a <code>key mismatch</code> error.</p> <h3 id="pull">Pull</h3> <p>Copy all items and tags from ESS to the device, overwriting any conflicts. A pull does not remove any items on the device, unless they have been explicitly removed on another device. This means that a pull does not necessarily bring the state of your device to exactly match the ESS data.</p> <h3 id="clean-pull">Clean Pull</h3> <p>Re-create the local database from scratch and pull all data from ESS. This action is useful to make the state on the device exactly match ESS data.</p> <div class="alert alert-warning" role="alert"> <h4 class="alert-heading">Warning</h4> A <em>Clean Pull</em> will completely discard your existing local data. You need to be sure that ESS has a copy of all the data that you care about before triggering this operation. </div> <h2 id="proxy-server-settings">Proxy server settings</h2> <p>In order to specify an HTTP proxy for ESS connections, add the following line to <code>config.json</code>, which is located in the <a href="/docs/advanced/home-directory/">home directory</a>. Replace <code>user</code> and <code>password</code> with correct values.</p> <pre><code>{ ..., &quot;proxy&quot;: &quot;http://user:password@1.2.3.4:12345&quot;, } </code></pre> <h2 id="troubleshooting">Troubleshooting</h2> <h3 id="the-encryption-key-mismatch-error">The <code>encryption key mismatch</code> error</h3> <p>This means the device is <em>not</em> configured with the same encryption key that has been previously used to sync with ESS. ESS detects a change in encryption key and rejects such requests because they cannot be merged with existing data.</p> <ol> <li>Open Everdo on one of your computers that has complete data.</li> <li>Go to <em>Settings-&gt;Sync</em>, press <em>Sync</em> and notice the status.</li> <li>If the status indicates <code>encryption key mismatch</code>, then press <em>Force Push</em> to override all data in ESS.</li> <li>Press <em>Show Key</em> and transfer the key to your other devices.</li> </ol> <h3 id="ssl-errors-when-trying-to-sync">SSL errors when trying to sync</h3> <p>If you are behind an SSL proxy on a trusted network, you may need to use the <code>Ignore SSL Errors</code> switch in the sync settings dialog.</p> <h3 id="sync-removes-tags-from-items">Sync removes tags from items</h3> <p>ESS is missing some of the tags that you have on your device. This is probably because you have migrated from local network sync to the ESS sync. You need to perform a manual <a href="#push"><em>Push</em></a> in order to fix this data discrepancy.</p> <h2 id="ess-sync-faq">ESS sync FAQ</h2> <h3 id="q-once-i-start-using-ess-can-i-go-back-to-local-network-sync">Q: Once I start using ESS, can I go back to local network sync?</h3> <p>Yes, it&rsquo;s just a matter of re-configuring your devices. See <a href="/docs/sync/network/">local network sync guide</a>.</p> <h3 id="q-how-does-ess-know-which-encryption-key-is-used-or-when-it-changes">Q: How does ESS know which encryption key is used or when it changes?</h3> <p>ESS never actually sees your encryption key. Instead, your devices compute a <em>cryptographic hash</em> of your key and send it with each sync request. This provides enough information for the Sync Service to tell one key from another. However such hash does not reveal the key itself and cannot be used to reconstruct the key.</p> <h3 id="q-which-parts-of-the-data-get-encrypted-and-how">Q: Which parts of the data get encrypted and how?</h3> <p>The <em>title</em> and <em>description</em> of all items and tags are encrypted with AES256-CBC. This is what an action’s title looks like when encrypted:</p> <pre><code>1.EoCd6AP5LeGP937S3Mi31g==.kFdPOGCP7e+Z8sAl4wcesADJY54TQULqmmUETq2QWHY= </code></pre> <p>The metadata properties such as modification timestamps, parent-child references and item types are not encrypted. These properties are necessary for conflict resolution and optimizing the syncing algorithm.</p> <p>A 16-word random passphrase from a 65536-word list is generated on your computer and is used to represent a 256-bit encryption key. The passphrase is stored on each synced device so that it can work the encrypted data. The passphrase is never sent to ESS, but a cryptographic hash of the passphrase is tracked by ESS to avoid data corruption caused by mismatched keys on different devices.</p> <h3 id="q-is-data-stored-in-encrypted-form-on-my-devices">Q: Is data stored in encrypted form on my devices?</h3> <p>Using ESS sync doesn&rsquo;t change the way Everdo stores data locally. That is, the data only gets encrypted immediately before being sent to ESS. It does not make sense to store encrypted data on your own device since the encryption key is stored right next to it anyway.</p> <h3 id="q-what-happens-if-i-lose-the-encryption-key">Q: What happens if I lose the encryption key?</h3> <p>The encryption key is stored in the <code>encryption-key</code> file located in Everdo <a href="/docs/advanced/home-directory/">home directory</a>. Even if you lose it somehow, it’s not a problem, as long as you still have the local Everdo database available. You can then generate a new encryption key on your computer, update all devices to use it and use the “Force Push” action to tell ESS to accept the new key.</p>