diff --git a/docs/geode-native-book-cpp/Gemfile.lock b/docs/geode-native-book-cpp/Gemfile.lock
index 48f5b00..0549ca6 100644
--- a/docs/geode-native-book-cpp/Gemfile.lock
+++ b/docs/geode-native-book-cpp/Gemfile.lock
@@ -202,6 +202,3 @@
 DEPENDENCIES
   bookbindery
   libv8
-
-BUNDLED WITH
-   1.17.3
diff --git a/docs/geode-native-book-dotnet/Gemfile.lock b/docs/geode-native-book-dotnet/Gemfile.lock
index 8ccdcfc..ffb0270 100644
--- a/docs/geode-native-book-dotnet/Gemfile.lock
+++ b/docs/geode-native-book-dotnet/Gemfile.lock
@@ -202,6 +202,3 @@
 DEPENDENCIES
   bookbindery
   libv8
-
-BUNDLED WITH
-   1.17.3
diff --git a/docs/geode-native-docs-cpp/common/images/10-Continuous_Querying-1.gif b/docs/geode-native-docs-cpp/common/images/10-Continuous_Querying-1.gif
deleted file mode 100644
index ca78bc9..0000000
--- a/docs/geode-native-docs-cpp/common/images/10-Continuous_Querying-1.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/common/images/10-Continuous_Querying-3.gif b/docs/geode-native-docs-cpp/common/images/10-Continuous_Querying-3.gif
deleted file mode 100644
index 716aabc..0000000
--- a/docs/geode-native-docs-cpp/common/images/10-Continuous_Querying-3.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/common/images/6-DotNet_API-1.gif b/docs/geode-native-docs-cpp/common/images/6-DotNet_API-1.gif
deleted file mode 100644
index 0ac6fa0..0000000
--- a/docs/geode-native-docs-cpp/common/images/6-DotNet_API-1.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/common/images/client-cache-data-flow.gif b/docs/geode-native-docs-cpp/common/images/client-cache-data-flow.gif
deleted file mode 100644
index b69ad60..0000000
--- a/docs/geode-native-docs-cpp/common/images/client-cache-data-flow.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/common/images/client-cache-plugins-run.gif b/docs/geode-native-docs-cpp/common/images/client-cache-plugins-run.gif
deleted file mode 100644
index f255b33..0000000
--- a/docs/geode-native-docs-cpp/common/images/client-cache-plugins-run.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/common/images/client-overview.gif b/docs/geode-native-docs-cpp/common/images/client-overview.gif
deleted file mode 100644
index a71a23a..0000000
--- a/docs/geode-native-docs-cpp/common/images/client-overview.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/common/images/data-dep-func-from-client.gif b/docs/geode-native-docs-cpp/common/images/data-dep-func-from-client.gif
deleted file mode 100644
index a0c4488..0000000
--- a/docs/geode-native-docs-cpp/common/images/data-dep-func-from-client.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/common/images/data-dep-func-with-filter.gif b/docs/geode-native-docs-cpp/common/images/data-dep-func-with-filter.gif
deleted file mode 100644
index f5bb9d9..0000000
--- a/docs/geode-native-docs-cpp/common/images/data-dep-func-with-filter.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/common/images/data-indep-func-from-client.gif b/docs/geode-native-docs-cpp/common/images/data-indep-func-from-client.gif
deleted file mode 100644
index 1ab8a96..0000000
--- a/docs/geode-native-docs-cpp/common/images/data-indep-func-from-client.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/common/images/delta-propagation-in-client-server.gif b/docs/geode-native-docs-cpp/common/images/delta-propagation-in-client-server.gif
deleted file mode 100644
index e662062..0000000
--- a/docs/geode-native-docs-cpp/common/images/delta-propagation-in-client-server.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/common/images/ha-data-dep-func.gif b/docs/geode-native-docs-cpp/common/images/ha-data-dep-func.gif
deleted file mode 100644
index 519dd6b..0000000
--- a/docs/geode-native-docs-cpp/common/images/ha-data-dep-func.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/common/images/security-client-connections.gif b/docs/geode-native-docs-cpp/common/images/security-client-connections.gif
deleted file mode 100644
index af8fd27..0000000
--- a/docs/geode-native-docs-cpp/common/images/security-client-connections.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/connection-pools/about-connection-pools.html.md.erb b/docs/geode-native-docs-cpp/connection-pools/about-connection-pools.html.md.erb
index fce954c..2f66e68 100644
--- a/docs/geode-native-docs-cpp/connection-pools/about-connection-pools.html.md.erb
+++ b/docs/geode-native-docs-cpp/connection-pools/about-connection-pools.html.md.erb
@@ -30,7 +30,7 @@
 <a id="client-load-balancing__fig_226964BAA1464DBA9F5CEDC2CB7B3585"></a>
 <span class="figtitleprefix">Figure: </span>Logical Architecture of Client/Server Connections
 
-<img src="../common/images/client-server-arch.gif" id="client-load-balancing__image_1E8316666E1B4CC2ADE4D927B629E49F" class="image" />
+<img src="../images/client-server-arch.gif" id="client-load-balancing__image_1E8316666E1B4CC2ADE4D927B629E49F" class="image" />
 
 When a connection receives an exception, the operation is failed over to another connection from the pool. The failover mechanism obtains the endpoint to failover to from the locator or from the specified endpoint list in the pool.
 
diff --git a/docs/geode-native-docs-cpp/connection-pools/configuring-pools-attributes-example.html.md.erb b/docs/geode-native-docs-cpp/connection-pools/configuring-pools-attributes-example.html.md.erb
index 17bb6ea..4696143 100644
--- a/docs/geode-native-docs-cpp/connection-pools/configuring-pools-attributes-example.html.md.erb
+++ b/docs/geode-native-docs-cpp/connection-pools/configuring-pools-attributes-example.html.md.erb
@@ -105,7 +105,7 @@
 </tr>
 <tr class="even">
 <td><p><code class="ph codeph">pr-single-hop-enabled</code></p></td>
-<td><p>Setting used for single-hop access to partitioned region data in the servers for some data operations. See <a href="../client-cache/application-plugins.html#application-plugins__section_348E00A84F274D4B9DBA9ECFEB2F012E">PartitionResolver</a>. See note in <code class="ph codeph">thread-local-connections</code> below.</p></td>
+<td><p>Setting used for single-hop access to partitioned region data in the servers for some data operations. See <a href="../client-cache-ref.html#partition-resolver-ref">PartitionResolver</a>. See note in <code class="ph codeph">thread-local-connections</code> below.</p></td>
 <td><p>True</p></td>
 </tr>
 <tr class="odd">
diff --git a/docs/geode-native-docs-cpp/common/images/7-Preserving_Data-2.gif b/docs/geode-native-docs-cpp/images/7-Preserving_Data-2.gif
similarity index 100%
rename from docs/geode-native-docs-cpp/common/images/7-Preserving_Data-2.gif
rename to docs/geode-native-docs-cpp/images/7-Preserving_Data-2.gif
Binary files differ
diff --git a/docs/geode-native-docs-cpp/images/SQLite_Persistence_Mgr.png b/docs/geode-native-docs-cpp/images/SQLite_Persistence_Mgr.png
deleted file mode 100644
index 0384874..0000000
--- a/docs/geode-native-docs-cpp/images/SQLite_Persistence_Mgr.png
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/images/client-cache-plugins-run.png b/docs/geode-native-docs-cpp/images/client-cache-plugins-run.png
deleted file mode 100644
index 72631c9..0000000
--- a/docs/geode-native-docs-cpp/images/client-cache-plugins-run.png
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/common/images/client-server-arch.gif b/docs/geode-native-docs-cpp/images/client-server-arch.gif
similarity index 100%
rename from docs/geode-native-docs-cpp/common/images/client-server-arch.gif
rename to docs/geode-native-docs-cpp/images/client-server-arch.gif
Binary files differ
diff --git a/docs/geode-native-docs-cpp/images/delta-propagation.png b/docs/geode-native-docs-cpp/images/delta-propagation.png
deleted file mode 100644
index 022e6c5..0000000
--- a/docs/geode-native-docs-cpp/images/delta-propagation.png
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-cpp/preserving-data/reconnection.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/reconnection.html.md.erb
index 193e41f..8fc8b5e 100644
--- a/docs/geode-native-docs-cpp/preserving-data/reconnection.html.md.erb
+++ b/docs/geode-native-docs-cpp/preserving-data/reconnection.html.md.erb
@@ -44,6 +44,6 @@
 <a id="concept_38C027837216434CB5DEC84DF56B807E__fig_5A5566FB9EBE4A6D906E9D8FA687B4C5"></a>
 <span class="figtitleprefix">Figure: </span> Initialization of a Reconnected Durable Client
 
-<img src="../common/images/7-Preserving_Data-2.gif" id="concept_38C027837216434CB5DEC84DF56B807E__image_1B3693DB90D041F193496BA24849D114" class="image" />
+<img src="../images/7-Preserving_Data-2.gif" id="concept_38C027837216434CB5DEC84DF56B807E__image_1B3693DB90D041F193496BA24849D114" class="image" />
 
 Only one region is shown for simplicity, but the messages in the queue could apply to multiple regions. Also, the figure omits the concurrent cache updates on the servers, which would normally be adding more messages to the client's message queue.
diff --git a/docs/geode-native-docs-cpp/regions/consistency-checking-in-regions.html.md.erb b/docs/geode-native-docs-cpp/regions/consistency-checking-in-regions.html.md.erb
deleted file mode 100644
index 84bc252..0000000
--- a/docs/geode-native-docs-cpp/regions/consistency-checking-in-regions.html.md.erb
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title:  Region Consistency
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-<%=vars.product_name%> ensures that all copies of a region eventually reach a consistent state on all members and clients that host the region.
-
-By default <%=vars.product_name%> members perform consistency checks when they apply updates to a distributed region, in order to ensure that all copies of the region eventually become consistent on all <%=vars.product_name%> members and client caches that host the region. Different types of region ensure consistency using different techniques. However, when consistency checking is enabled (the default) all entries in a region require additional overhead in order to store version and timestamp information.
-
-Although a region must have the same consistency checking configuration on all <%=vars.product_name%> members that host the region, you can optionally disable consistency checking in a client cache region while leaving consistency checking enabled for the region on <%=vars.product_name%> members. This configuration may be necessary in certain cases where the client must view all updates to a given region, even when <%=vars.product_name%> members discards an update in order to preserve region consistency.
-
-See [Consistency for Region Updates](geodeman/developing/distributed_regions/region_entry_versions.html#topic_CF2798D3E12647F182C2CEC4A46E2045) in the server's documentation for more information.
-
-## <a id="concept_77340A4999AC4861972A0EE10303E557__section_167CD194A5374C64B4064783490F3EA8" class="no-quick-link"></a>Client Overhead for Consistency Checks
-
-In the client regions, the overhead for performing consistency check is an additional 11 bytes per region entry. This overhead is slightly smaller than the overhead required to provide consistency checking on server-side region entries.
-
-If you cannot support the additional overhead in your deployment, you can disable consistency checks by setting the region attribute `concurrency-checks-enabled` to false for each region hosted by your client.
diff --git a/docs/geode-native-docs-dotnet/common/images/10-Continuous_Querying-1.gif b/docs/geode-native-docs-dotnet/common/images/10-Continuous_Querying-1.gif
deleted file mode 100644
index ca78bc9..0000000
--- a/docs/geode-native-docs-dotnet/common/images/10-Continuous_Querying-1.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/common/images/10-Continuous_Querying-3.gif b/docs/geode-native-docs-dotnet/common/images/10-Continuous_Querying-3.gif
deleted file mode 100644
index 716aabc..0000000
--- a/docs/geode-native-docs-dotnet/common/images/10-Continuous_Querying-3.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/common/images/6-DotNet_API-1.gif b/docs/geode-native-docs-dotnet/common/images/6-DotNet_API-1.gif
deleted file mode 100644
index 0ac6fa0..0000000
--- a/docs/geode-native-docs-dotnet/common/images/6-DotNet_API-1.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/common/images/client-cache-data-flow.gif b/docs/geode-native-docs-dotnet/common/images/client-cache-data-flow.gif
deleted file mode 100644
index b69ad60..0000000
--- a/docs/geode-native-docs-dotnet/common/images/client-cache-data-flow.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/common/images/client-cache-plugins-run.gif b/docs/geode-native-docs-dotnet/common/images/client-cache-plugins-run.gif
deleted file mode 100644
index f255b33..0000000
--- a/docs/geode-native-docs-dotnet/common/images/client-cache-plugins-run.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/common/images/client-overview.gif b/docs/geode-native-docs-dotnet/common/images/client-overview.gif
deleted file mode 100644
index a71a23a..0000000
--- a/docs/geode-native-docs-dotnet/common/images/client-overview.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/common/images/data-dep-func-from-client.gif b/docs/geode-native-docs-dotnet/common/images/data-dep-func-from-client.gif
deleted file mode 100644
index a0c4488..0000000
--- a/docs/geode-native-docs-dotnet/common/images/data-dep-func-from-client.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/common/images/data-dep-func-with-filter.gif b/docs/geode-native-docs-dotnet/common/images/data-dep-func-with-filter.gif
deleted file mode 100644
index f5bb9d9..0000000
--- a/docs/geode-native-docs-dotnet/common/images/data-dep-func-with-filter.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/common/images/data-indep-func-from-client.gif b/docs/geode-native-docs-dotnet/common/images/data-indep-func-from-client.gif
deleted file mode 100644
index 1ab8a96..0000000
--- a/docs/geode-native-docs-dotnet/common/images/data-indep-func-from-client.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/common/images/delta-propagation-in-client-server.gif b/docs/geode-native-docs-dotnet/common/images/delta-propagation-in-client-server.gif
deleted file mode 100644
index e662062..0000000
--- a/docs/geode-native-docs-dotnet/common/images/delta-propagation-in-client-server.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/common/images/ha-data-dep-func.gif b/docs/geode-native-docs-dotnet/common/images/ha-data-dep-func.gif
deleted file mode 100644
index 519dd6b..0000000
--- a/docs/geode-native-docs-dotnet/common/images/ha-data-dep-func.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/common/images/security-client-connections.gif b/docs/geode-native-docs-dotnet/common/images/security-client-connections.gif
deleted file mode 100644
index af8fd27..0000000
--- a/docs/geode-native-docs-dotnet/common/images/security-client-connections.gif
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/connection-pools/about-connection-pools.html.md.erb b/docs/geode-native-docs-dotnet/connection-pools/about-connection-pools.html.md.erb
index fce954c..2f66e68 100644
--- a/docs/geode-native-docs-dotnet/connection-pools/about-connection-pools.html.md.erb
+++ b/docs/geode-native-docs-dotnet/connection-pools/about-connection-pools.html.md.erb
@@ -30,7 +30,7 @@
 <a id="client-load-balancing__fig_226964BAA1464DBA9F5CEDC2CB7B3585"></a>
 <span class="figtitleprefix">Figure: </span>Logical Architecture of Client/Server Connections
 
-<img src="../common/images/client-server-arch.gif" id="client-load-balancing__image_1E8316666E1B4CC2ADE4D927B629E49F" class="image" />
+<img src="../images/client-server-arch.gif" id="client-load-balancing__image_1E8316666E1B4CC2ADE4D927B629E49F" class="image" />
 
 When a connection receives an exception, the operation is failed over to another connection from the pool. The failover mechanism obtains the endpoint to failover to from the locator or from the specified endpoint list in the pool.
 
diff --git a/docs/geode-native-docs-dotnet/connection-pools/configuring-pools-attributes-example.html.md.erb b/docs/geode-native-docs-dotnet/connection-pools/configuring-pools-attributes-example.html.md.erb
index 17bb6ea..4696143 100644
--- a/docs/geode-native-docs-dotnet/connection-pools/configuring-pools-attributes-example.html.md.erb
+++ b/docs/geode-native-docs-dotnet/connection-pools/configuring-pools-attributes-example.html.md.erb
@@ -105,7 +105,7 @@
 </tr>
 <tr class="even">
 <td><p><code class="ph codeph">pr-single-hop-enabled</code></p></td>
-<td><p>Setting used for single-hop access to partitioned region data in the servers for some data operations. See <a href="../client-cache/application-plugins.html#application-plugins__section_348E00A84F274D4B9DBA9ECFEB2F012E">PartitionResolver</a>. See note in <code class="ph codeph">thread-local-connections</code> below.</p></td>
+<td><p>Setting used for single-hop access to partitioned region data in the servers for some data operations. See <a href="../client-cache-ref.html#partition-resolver-ref">PartitionResolver</a>. See note in <code class="ph codeph">thread-local-connections</code> below.</p></td>
 <td><p>True</p></td>
 </tr>
 <tr class="odd">
diff --git a/docs/geode-native-docs-dotnet/common/images/7-Preserving_Data-2.gif b/docs/geode-native-docs-dotnet/images/7-Preserving_Data-2.gif
similarity index 100%
rename from docs/geode-native-docs-dotnet/common/images/7-Preserving_Data-2.gif
rename to docs/geode-native-docs-dotnet/images/7-Preserving_Data-2.gif
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/images/SQLite_Persistence_Mgr.png b/docs/geode-native-docs-dotnet/images/SQLite_Persistence_Mgr.png
deleted file mode 100644
index 0384874..0000000
--- a/docs/geode-native-docs-dotnet/images/SQLite_Persistence_Mgr.png
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/images/client-cache-plugins-run.png b/docs/geode-native-docs-dotnet/images/client-cache-plugins-run.png
deleted file mode 100644
index 72631c9..0000000
--- a/docs/geode-native-docs-dotnet/images/client-cache-plugins-run.png
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/common/images/client-server-arch.gif b/docs/geode-native-docs-dotnet/images/client-server-arch.gif
similarity index 100%
rename from docs/geode-native-docs-dotnet/common/images/client-server-arch.gif
rename to docs/geode-native-docs-dotnet/images/client-server-arch.gif
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/images/delta-propagation.png b/docs/geode-native-docs-dotnet/images/delta-propagation.png
deleted file mode 100644
index 022e6c5..0000000
--- a/docs/geode-native-docs-dotnet/images/delta-propagation.png
+++ /dev/null
Binary files differ
diff --git a/docs/geode-native-docs-dotnet/preserving-data/reconnection.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/reconnection.html.md.erb
index 193e41f..8fc8b5e 100644
--- a/docs/geode-native-docs-dotnet/preserving-data/reconnection.html.md.erb
+++ b/docs/geode-native-docs-dotnet/preserving-data/reconnection.html.md.erb
@@ -44,6 +44,6 @@
 <a id="concept_38C027837216434CB5DEC84DF56B807E__fig_5A5566FB9EBE4A6D906E9D8FA687B4C5"></a>
 <span class="figtitleprefix">Figure: </span> Initialization of a Reconnected Durable Client
 
-<img src="../common/images/7-Preserving_Data-2.gif" id="concept_38C027837216434CB5DEC84DF56B807E__image_1B3693DB90D041F193496BA24849D114" class="image" />
+<img src="../images/7-Preserving_Data-2.gif" id="concept_38C027837216434CB5DEC84DF56B807E__image_1B3693DB90D041F193496BA24849D114" class="image" />
 
 Only one region is shown for simplicity, but the messages in the queue could apply to multiple regions. Also, the figure omits the concurrent cache updates on the servers, which would normally be adding more messages to the client's message queue.
diff --git a/docs/geode-native-docs-dotnet/regions/consistency-checking-in-regions.html.md.erb b/docs/geode-native-docs-dotnet/regions/consistency-checking-in-regions.html.md.erb
deleted file mode 100644
index 84bc252..0000000
--- a/docs/geode-native-docs-dotnet/regions/consistency-checking-in-regions.html.md.erb
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title:  Region Consistency
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-<%=vars.product_name%> ensures that all copies of a region eventually reach a consistent state on all members and clients that host the region.
-
-By default <%=vars.product_name%> members perform consistency checks when they apply updates to a distributed region, in order to ensure that all copies of the region eventually become consistent on all <%=vars.product_name%> members and client caches that host the region. Different types of region ensure consistency using different techniques. However, when consistency checking is enabled (the default) all entries in a region require additional overhead in order to store version and timestamp information.
-
-Although a region must have the same consistency checking configuration on all <%=vars.product_name%> members that host the region, you can optionally disable consistency checking in a client cache region while leaving consistency checking enabled for the region on <%=vars.product_name%> members. This configuration may be necessary in certain cases where the client must view all updates to a given region, even when <%=vars.product_name%> members discards an update in order to preserve region consistency.
-
-See [Consistency for Region Updates](geodeman/developing/distributed_regions/region_entry_versions.html#topic_CF2798D3E12647F182C2CEC4A46E2045) in the server's documentation for more information.
-
-## <a id="concept_77340A4999AC4861972A0EE10303E557__section_167CD194A5374C64B4064783490F3EA8" class="no-quick-link"></a>Client Overhead for Consistency Checks
-
-In the client regions, the overhead for performing consistency check is an additional 11 bytes per region entry. This overhead is slightly smaller than the overhead required to provide consistency checking on server-side region entries.
-
-If you cannot support the additional overhead in your deployment, you can disable consistency checks by setting the region attribute `concurrency-checks-enabled` to false for each region hosted by your client.
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/custom-class-igfserializable.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/custom-class-igfserializable.html.md.erb
deleted file mode 100644
index 1489566..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/custom-class-igfserializable.html.md.erb
+++ /dev/null
@@ -1,153 +0,0 @@
----
-title:  Using a Custom Class With IDataSerializable
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-An example shows how to use the `BankAccount` custom key type and the `AccountHistory` value type that were previously defined.
-
-## Using a BankAccount Object
-
-``` pre
-class AccountHistory : IDataSerializable   
-   {
-      #region Private members
-      private List<string> m_history;
-      #endregion
-      public AccountHistory()
-      {
-         m_history = new List<string>();
-      }
-      public void ShowAccountHistory()
-      {
-         Console.WriteLine("AccountHistory:");
-         foreach (string hist in m_history) {
-           Console.WriteLine("\t{0}", hist);
-         }
-      }
-      public void AddLog(string entry)
-      {
-         m_history.Add(entry);
-      }
-         public static IDataSerializable CreateInstance()
-      {
-         return new AccountHistory();
-      }
-      #region IDataSerializable Members
-      public void FromData(DataInput input)
-      {
-         int len = input.ReadInt32();
-         m_history.Clear();
-         for (int i = 0; i < len; i++) {
-            m_history.Add(input.ReadUTF());
-         }
-         return this;
-      }
-      public void ToData(DataOutput output)
-      {
-         output.WriteInt32(m_history.Count);
-         foreach (string hist in m_history) {
-            output.WriteUTF(hist);
-         }
-      }
-         public UInt32 ClassId
-      {
-         get
-         {
-            return 0x05;
-         }
-      }
-      public UInt32 ObjectSize
-      {
-         get
-         {
-            UInt32 objectSize = 0;
-            foreach (string hist in m_history) {
-              objectSize += (UInt32)(hist == null ? 0 : sizeof(char) * hist.Length);
-            }
-            return objectSize;
-         }
-      }
-      #endregion
-   }
-      public class TestBankAccount
-      {
-         public static void Main()
-         {
-            // Register the user-defined serializable type.
-            Serializable.RegisterType(AccountHistory.CreateInstance);
-            Serializable.RegisterType(BankAccountKey.CreateInstance);
-            // Create a cache.
-            CacheFactory cacheFactory = CacheFactory.CreateCacheFactory(null);
-            Cache cache = cacheFactory.Create();
-            // Create a region.
-            RegionFactory regionFactory =
-            cache.CreateRegionFactory(RegionShortcut.CACHING_PROXY);
-            Region region = regionFactory.Create("BankAccounts");
-            // Place some instances of BankAccount cache region.
-            BankAccountKey baKey = new BankAccountKey(2309, 123091);
-            AccountHistory ahVal = new AccountHistory();
-            ahVal.AddLog("Created account");
-            region.Put(baKey, ahVal);
-            Console.WriteLine("Put an AccountHistory in cache keyed with
-            BankAccount.");
-            // Display the BankAccount information.
-            Console.WriteLine(baKey.ToString());
-            // Call custom behavior on instance of AccountHistory.
-            ahVal.ShowAccountHistory();
-            // Get a value out of the region.
-            AccountHistory history = region.Get(baKey) as AccountHistory;
-            if (history != null)
-            {
-               Console.WriteLine("Found AccountHistory in the cache.");
-               history.ShowAccountHistory();
-               history.AddLog("debit $1,000,000.");
-               region.Put(baKey, history);
-               Console.WriteLine("Updated AccountHistory in the cache.");
-            }
-            // Look up the history again.
-            history = region.Get(baKey) as AccountHistory;
-            if (history != null)
-            {
-               Console.WriteLine("Found AccountHistory in the cache.");
-               history.ShowAccountHistory();
-            }
-            // Close the cache.
-            cache.Close();
-         }
-      }
-
-      //Example 5.12 Using ICacheLoader to Load New Integers in the Region
-      class ExampleLoaderCallback : ICacheLoader
-      {
-         #region Private members
-         private int m_loads = 0;
-         #endregion
-         #region Public accessors
-         public int Loads
-         {
-            get
-            {
-               return m_loads;
-            }
-         }
-         #endregion
-      }
-```
-
-
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/dotnet-data-serialization-options.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/dotnet-data-serialization-options.html.md.erb
deleted file mode 100644
index 24546ed..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/dotnet-data-serialization-options.html.md.erb
+++ /dev/null
@@ -1,63 +0,0 @@
-<a id="data-serialization-options"></a>
-## Data Serialization Options
-
-Built-in .NET types are serialized automatically into the cache and can be retrieved by Java servers and other <%=vars.product_name%> clients. For domain objects that are not simple types, you have three <%=vars.product_name%> serialization options.
-
-The options give good performance and flexibility for data storage, transfers, and language types. The <%=vars.product_name%> options can also improve performance in serializing and deserializing built-in types.
-
-The simplest option is to use automatic serialization by registering the <%=vars.product_name%> .NET PDX reflection-based autoserializer in your application. When you have this registered, <%=vars.product_name%> uses it for all domain objects that are not custom serialized.
-
-You can also custom serialize your objects by implementing one of the <%=vars.product_name%> .NET interfaces, `Apache.Geode.Client.IPdxSerializable` or `Apache.Geode.Client.IDataSerializable`.
-
-In addition, You have the option of using default .NET serialization, but you cannot use it unless you also use helper classes. The helper classes you must use are `CacheableObject` and `CacheableObjectXml`.
-
-<%=vars.product_name%> .NET PDX serialization has more bytes in overhead than <%=vars.product_name%> .NET Data serialization, but using PDX serialization helps you avoid the performance costs of deserialization when performing queries. Applications can use `PdxInstances` in functions to avoid the deserialization of entire objects.
-
-<a id="concept_6DC3DD288F6C4190AEA07DEDE76DD867__table_D61A94C4BFBE4712835F632F30BB488E">Serialization Options—Comparison of Features</a>
-<table>
-<colgroup>
-<col width="33%" />
-<col width="33%" />
-<col width="34%" />
-</colgroup>
-<thead>
-<tr class="header">
-<th>Capability</th>
-<th>IDataSerializable</th>
-<th>IPdxSerializable and PDX reflection-based autoserializer</th>
-</tr>
-</thead>
-<tbody>
-<tr class="odd">
-<td><p>Handles multiple versions of domain objects*</p></td>
-<td></td>
-<td>X</td>
-</tr>
-<tr class="even">
-<td><p>Provides single field access on servers of serialized data, without full deserialization. Supported also for OQL queries.</p></td>
-<td></td>
-<td>X</td>
-</tr>
-<tr class="odd">
-<td><p>Automatically ported to other languages by <%=vars.product_name%> - no need to program Java-side implementation</p></td>
-<td></td>
-<td>X</td>
-</tr>
-<tr class="even">
-<td><p>Works with <%=vars.product_name%> delta propagation</p></td>
-<td>X</td>
-<td>X (See explanation below.)</td>
-</tr>
-</tbody>
-</table>
-
-
-\*You can mix domain object versions where the differences between versions are the addition and removal of object fields.
-
-By default, you can use <%=vars.product_name%> delta propagation with PDX serialization. However,
-delta propagation will not work if you have set the <%=vars.product_name%> property `read-serialized`
-to `true`. To apply a change, delta propagation requires a domain class
-instance and the `fromDelta` method. If you have set `read-serialized` to `true`, you will receive an
-`IPdxInstance` instead of a domain class instance, but `IPdxInstance` does not have the `fromDelta`
-method required for delta propagation. You will also require a Java domain class on the server
-similar to your .NET PDX Delta domain class.
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/dotnet-data-serialization.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/dotnet-data-serialization.html.md.erb
deleted file mode 100644
index 6e4de50..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/dotnet-data-serialization.html.md.erb
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title:  Data Serialization &ndash; .NET
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-All data moving out of the client cache must be serializable.
-
-
-  - <%=vars.product_name%> Portable Data eXchange (PDX) serialization
-  - `DataSerializable` interface serialization
-
-The `DataSerializable` interface can be a good option performance-wise if the size of your objects
-is small, but do not as readily support code that executes on the server, such as queries and functions.
-
-Each of these serialization methods provides two options:
-
-  - PDXSerializable / DataSerializable for objects under your control, that is, objects you can modify to incorporate their own serialization and deserialization code
-  - PDXSerializer / DataSerializer for objects not under your control, that is, objects for which serialization and deserialization must be specified separately from the objects themselves.
-
-For .NET, a reflection-based autoserialization option is also available, but it is limited to cases in which the objects being serialized (a) contain no transient state and (b) are composed only of primitive types.
-
-
-# .NET Data Serialization Options
-
-The .NET client API provides an option not available to the C++ API, as .NET objects are capable of reflection.
-The recommended choice is iPDXSerializable.
-
-With reflection-based autoserialization, built-in .NET types are serialized automatically into the
-cache and can be retrieved by <%=vars.product_name%> servers and other <%=vars.product_name%> clients. For domain
-objects that are not simple types, you have three <%=vars.product_name%> serialization options.
-
-  - The simplest option is to use automatic serialization by registering the <%=vars.product_name%> .NET PDX
-reflection-based autoserializer in your application. When you have this registered, <%=vars.product_name%> uses it
-for all domain objects that are not custom serialized.
-
-  - You can custom serialize your objects by implementing the <%=vars.product_name%> `IDataSerializable` .NET interface.
-
-  - You also have the option of using default .NET serialization, but you cannot use it unless you also
-use helper classes. The helper classes you must use are `CacheableObject` and `CacheableObjectXml`.
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/how-igfserializable-works.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/how-igfserializable-works.html.md.erb
deleted file mode 100644
index 5efba97..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/how-igfserializable-works.html.md.erb
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title:  How Serialization Works with IDataSerializable
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-When your application puts an object into the cache for distribution, <%=vars.product_name%> serializes the data by taking these steps.
-
-1.  Calls the appropriate `ClassId` function and creates the `TypeId` from it.
-2.  Writes the `TypeId` for the instance.
-3.  Invokes the `ToData` function for the instance.
-
-When your application subsequently receives a byte array, <%=vars.product_name%> takes the following steps:
-
-1.  Decodes the `TypeId` and creates an object of the designated type, using the registered factory functions.
-2.  Invokes the `FromData` function with input from the data stream.
-3.  Decodes the data and then populates the data fields.
-
-The `TypeId` is an integer of four bytes, which is a combination of `ClassId` integer and `0x27`, which is an indicator of user-defined type.
-
-
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/implementing-igfserializable.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/implementing-igfserializable.html.md.erb
deleted file mode 100644
index aa069c1..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/implementing-igfserializable.html.md.erb
+++ /dev/null
@@ -1,139 +0,0 @@
----
-title:  Implement the IDataSerializable Interface
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-To store your own data types in the cache, you implement the <%=vars.product_name%> `IDataSerializable` interface.
-
-Examples follow the procedure.
-
-**Procedure**
-
-1.  Implement the `ToData` function that serializes your data:
-
-    ``` pre
-    void ToData(DataOutput output)
-    ```
-
-    The `ToData` function is responsible for copying all of the data fields for the object to the object stream. The `DataOutput` class represents the output stream and provides methods for writing the primitives in a network byte order.
-
-2.  Implement the `FromData` function that consumes a data input stream and repopulates the data fields for the object:
-
-    ``` pre
-    void fromData (DataInput& input)
-    ```
-
-    The `DataInput` class represents the input stream and provides methods for reading input elements. The `FromData` function must read the elements of the input stream in the same order that they were written by `ToData`.
-
-3.  Implement the `ClassId` function to return an integer which is unique for your class (in the set of all of your user-defined classes).
-
-## Simple BankAccount Class
-
-This example shows a simple class, `BankAccount`, that encapsulates the two `ints`, `customerId` and `accountId`:
-
-``` pre
-public class BankAccount
-{
-   private int m_customerId;
-   private int m_accountId;
-   public int Customer
-   {
-      get
-      {
-         return m_customerId;
-      }
-   }
-   public int Account
-   {
-      get
-      {
-         return m_accountId;
-      }
-   }
-   public BankAccount(int customer, int account)
-   {
-      m_customerId = customer;
-      m_accountId = account;
-   }
-}
-```
-
-## Implementing a Serializable Class
-
-To make `BankAccount` serializable, you implement the `IDataSerializable` interface as shown in this example:
-
-``` pre
-public class BankAccount : IDataSerializable
-   {
-   private int m_customerId;
-   private int m_accountId;
-   public int Customer
-   {
-      get
-      {
-         return m_customerId;
-      }
-   }
-   public int Account
-   {
-      get
-      {
-         return m_accountId;
-      }
-   }
-   public BankAccount(int customer, int account)
-   {
-      m_customerId = customer;
-      m_accountId = account;
-   }
-   // Our TypeFactoryMethod
-   public static IDataSerializable CreateInstance()
-   {
-      return new BankAccount(0, 0);
-   }
-   #region IDataSerializable Members
-   public void ToData(DataOutput output)
-   {
-      output.WriteInt32(m_customerId);
-      output.WriteInt32(m_accountId);
-   }
-   public void FromData(DataInput input)
-   {
-      m_customerId = input.ReadInt32();
-      m_accountId = input.ReadInt32();
-      return this;
-   }
-   public UInt32 ClassId
-   {
-      get
-      {
-         return 11;
-      }
-   }
-   public UInt32 ObjectSize
-   {
-      get
-      {
-         return (UInt32)(sizeof(Int32) + sizeof(Int32));
-      }
-   }
-}
-```
-
-
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/implementing-pdxserializable-custom-class.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/implementing-pdxserializable-custom-class.html.md.erb
deleted file mode 100644
index 67cdb34..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/implementing-pdxserializable-custom-class.html.md.erb
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title:  Implementing a PdxSerializable Custom Class
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-Pdx serialization provides custom serialization to an individual class. Fields within an object can be serialized separately from the rest of the class.
-
-The type of serialization and its implementation can be specified entirely in the client
-application, with no need to create corresponding code on the <%=product_name%> server.
-
-<a id="setup_pdxsbl_class"></a>
-## Setup
-
-Pdx serialization provides custom serialization to an individual class. Fields within an object can be serialized separately from the rest of the class.
-
-Setting up a custom class for PdxSerializable treatment requires some preparatory steps:
-
-- The custom class must inherit from the .NET IPdxSerializable interface.
-
-- You must provide serialization instructions for objects of the custom class. Specifically:
-
-  -  You must implement the `ToData()` and `FromData()` methods.
-  -  You must provide a "factory method" that returns an instance of the custom object.
-
-- Your application must register your custom class with the cache, which takes care of informing the server of your
-  serialization scheme. With registration, you provide the name of the "factory method" you created for instantiating
-  objects of the custom class.
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/mapping-dotnet-domain-type-names.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/mapping-dotnet-domain-type-names.html.md.erb
deleted file mode 100644
index c925faa..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/mapping-dotnet-domain-type-names.html.md.erb
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title:  Map .NET Domain Type Names to PDX Type Names with IPdxTypeMapper
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-PDX serialized instances in Java map to .NET types with the same name. If you need to adjust the .NET name, then you need to use the IPdxTypeMapper.
-
-See the [Java to .NET Type Mapping Table](../../dotnet-caching-api/java-to-dotnet-type-mapping.html#concept_24D0AAC71FF1483AB47A7772DA018966) for current mappings.
-
-## Using IPdxTypeMapper
-
-``` pre
-//This demonstrates, how to map .NET type to pdx type or java type
-public class PdxTypeMapper : IPdxTypeMapper {
-    
-    public string ToPdxTypeName(string localTypeName) {
-        return "pdx_" + localTypeName;
-    }
-
-    public string FromPdxTypeName(string pdxTypeName) {
-        return pdxTypeName.Substring(4);//need to extract "pdx_"
-    }
-}
-```
-
-
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/programming-ipdxinstance.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/programming-ipdxinstance.html.md.erb
deleted file mode 100644
index 6e00839..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/programming-ipdxinstance.html.md.erb
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title:  Program Your Application to Use IPdxInstance
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-An `IPdxInstance` is a lightweight wrapper around PDX serialized bytes. It provides applications with run-time access to fields of a PDX serialized object.
-
-You can configure your cache to return an `IPdxInstance` when a PDX serialized object is deserialized instead of deserializing the object to a domain class. You can then program your application code that reads your entries to handle `IPdxInstances` fetched from the cache.
-
-**Note:**
-This option applies only to entry retrieval that you explicitly code using methods like `EntryEvent.getNewValue` and `Region.get`, as you do inside functions or in cache listener code. This does not apply to querying because the query engine retrieves the entries and handles object access for you.
-
-**Note:**
-`IPdxInstance` overrides any custom implementation you might have coded for your object's `equals` and `hashcode` methods.
-
-**Procedure**
-
-1.  In the `cache.xml` file of the server member where entry fetches are run, set the `<pdx>` read-serialized attribute to true.
-
-    Data is not necessarily accessed on the member that you have coded for it. For example, if a client application runs a function on a server, the actual data access is done on the server, so you set read-serialized to true on the server.
-
-    For example:
-
-    ``` pre
-    // Cache configuration setting PDX read behavior
-                  <cache>
-                    <pdx read-serialized="true" />
-    ... </cache>
-    ```
-
-2.  Write the application code that fetches data from the cache to handle a `IPdxInstance`. If you are sure you will only retrieve `IPdxInstances` from the cache, you can code only for that. In many cases, a `IPdxInstance` or a domain object may be returned from your cache entry retrieval operation, so you should check the object type and handle each possible type.
-
-    See [Use the IPdxInstanceFactory to Create IPdxInstances](using-ipdxinstancefactory.html#concept_8FA31D0D022146CE8DE2197006507AFF__example_89B7EDD2BE27423BA0CAB9B0270348B5) for an example of this.
-
-If you configure your cache to allow PDX serialized reads, cache fetches return the data in the form it is found. If the object is not serialized, the fetch returns the domain object. If the object is serialized, the fetch returns the `PdxInstance` for the object.
-
-**Note:**
-If you are using `IPdxInstances`, you cannot use delta propagation to apply changes to PDX serialized objects.
-
-For example, in client/server applications that are programmed and configured to handle all data activity from the client, PDX serialized reads done on the server side will always return the `IPdxInstance`. This is because all of data is serialized for transfer from the client and you are not performing any server-side activities that would deserialize the objects in the server cache.
-
-In mixed situations, such as where a server cache is populated from client operations and also from data loads done on the server side, fetches done on the server can return a mix of `IPdxInstances` and domain objects.
-
-When fetching data in a cache with PDX serialized reads enabled, the safest approach is to code to handle both types, receiving an Object from the fetch operation, checking the type and casting as appropriate.
-
-## <a id="using-ipdxinstancefactory""></a> Using the IPdxInstanceFactory to Create IPdxInstances
-
-You can use the `IPdxInstanceFactory` to create an `IPdxInstance` from raw data when the domain class is not available on the server.
-
-This option can be useful when you need an instance of a domain class for plug-in code such as a
-function or a loader. If you have the raw data for the domain object (the class name and each
-field's type and data), then you can explicitly create a `IPdxInstance`. The `IPdxInstanceFactory`
-is very similar to the `IPdxWriter` except that after writing each field, you need to call the
-create method which returns the created `IPdxInstance.`
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/registering-the-type.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/registering-the-type.html.md.erb
deleted file mode 100644
index c77603e..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/registering-the-type.html.md.erb
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title:  Register the Type
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-To use the `BankAccount` type, you must register it with the type system. Then, when an incoming stream contains a `BankAccount`, it can be manufactured from the associated `TypeFactoryMethod.`
-
-``` pre
-Serializable.RegisterType(BankAccount.CreateInstance);
-```
-
-Typically, you would register the type before creating the system.
-
-## <a id="concept_FFFB0AAA131E46D09065F910EFF218CB__section_1B68CDA7392E45CAA413362F42CCF829" class="no-quick-link"></a>Using ClassId
-
-A `ClassId` is an integer that returns the `ClassId` of the instance being serialized. The `ClassId` is used by deserialization to determine what instance type to create and deserialize into.
-
-## <a id="concept_FFFB0AAA131E46D09065F910EFF218CB__section_8A63DBA039744DCCB6840A7F1F5734DA" class="no-quick-link"></a>Using DSFID
-
-A `DSFID` is an integer that returns the data serialization fixed ID type. `DSFID` is used to determine what instance type to create and deserialize into. `DSFID` should not be overridden by custom implementations, and it is reserved only for built-in serializable types.
-
-## <a id="concept_FFFB0AAA131E46D09065F910EFF218CB__section_A02B5E61D03B4B0893DFF3D21F2346F9" class="no-quick-link"></a>Using Custom Key Types
-
-If your application uses its own key types that are too complex to easily force into strings, you can probably improve performance by using a custom type and implementing `HashCode` and `Equals` functions. For example, if you have hybrid data types such as floating point numbers, you can implement your own type that encapsulates the floating point number. Comparing floating point numbers in this way provides better performance than comparing a string representation of the floating point numbers, with such noticeable improvements as faster cache access and smaller payloads.
-
-See [Serialization in Native Client Mode with a Java Server](../cpp-caching-api/serialization-using-serializable.html#concept_696AB5206C3E45898CC1A24CDD93D003__section_AFB685227E4048BF9FB4FD7C55AED274) for information about implementing key types for a client that is used with a Java cache server.
-
-To extend a type that implements `IPdxSerializable` or `IDataSerializable` for your key, override and implement the `HashCode` and `Equals` methods in the key as needed.
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/serializable-types.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/serializable-types.html.md.erb
deleted file mode 100644
index f213da6..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/serializable-types.html.md.erb
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title:  Generic and Custom Serializable Types
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-All built-in generics are automatically registered at initialization. You have a couple of options for complex key types.
-
-If your application uses more complex key types that you want to make more accessible or easier to handle, you can derive a new class from `IDataSerializable`. Another option is for the application to do its own object serialization using `Byte[]` or a custom type.
-
-## <a id="concept_5D520C87F65B48AFA4240615190B0150__section_DA3BCFFFCB974C65BEE953DF3FAA8442" class="no-quick-link"></a>Blobs
-
-If you have data that is best handled as a blob, such as structs that do not contain pointers, use a `Byte[]` or, if you need something more complex than `Byte[]`, implement a custom type using either `IPdxSerializable` or `IDataSerializable`.
-
-## <a id="concept_5D520C87F65B48AFA4240615190B0150__section_D49865F1CF5F467A9FFAD244D990F3F5" class="no-quick-link"></a>Object Graphs
-
-If you have a graph of objects in which each node can be serializable, the parent node calls `DataOutput.WriteObject` to delegate the serialization responsibility to its child nodes. Similarly, your application calls `DataInput.ReadObject` to deserialize the object graph.
-
-**Note:**
-The <%=vars.product_name%> `IDataSerializable` interface does not support object graphs with multiple references to the same object. If your application uses these types of circular graphs, you must address this design concern explicitly.
-
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/serialize-using-igfserializable.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/serialize-using-igfserializable.html.md.erb
deleted file mode 100644
index e261eea..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/serialize-using-igfserializable.html.md.erb
+++ /dev/null
@@ -1,41 +0,0 @@
-<% set_title("Using the", product_name, "IDataSerializable Interface") %>
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-The .NET `IDataSerializable` interface provides fast and compact data serialization.
-
-<%=vars.product_name%> .NET Data serialization consumes fewer bytes in overhead than  <%=vars.product_name%> .NET PDX serialization,
-but incurs higher performance costs of deserialization when performing queries.
-
--   **[How Serialization Works with IDataSerializable](how-igfserializable-works.html)**
-
-    When your application puts an object into the cache for distribution, <%=vars.product_name%> serializes the data by taking these steps.
-
--   **[Implement the IDataSerializable Interface](implementing-igfserializable.html)**
-
-    To store your own data types in the cache, you implement the <%=vars.product_name%> `IDataSerializable` interface.
-
--   **[Register the Type](registering-the-type.html)**
-
-    To use the `BankAccount` type, you must register it with the type system. Then, when an incoming stream contains a `BankAccount`, it can be manufactured from the associated `TypeFactoryMethod.`
-
--   **[Using a Custom Class With IDataSerializable](custom-class-igfserializable.html)**
-
-    An example shows how to use the BankAccount custom key type and the AccountHistory value type that were previously defined.
-
-
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/serializing-domain-objects.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/serializing-domain-objects.html.md.erb
deleted file mode 100644
index d3e571a..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/serializing-domain-objects.html.md.erb
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title:  Serialize Your Domain Objects with IPdxSerializer
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-For domain objects that you cannot or do not want to modify, use the `IPdxSerializer` class to serialize and deserialize the object's fields.
-
-You use one `IPdxSerializer` implementation for the entire cache, programming it for all of the domain objects that you handle in this way. This way you do not have to implement the `IPdxSerializable` interface for each domain class.
-
-With `IPdxSerializer`, you leave your domain object as-is and handle the serialization and deserialization in the separate serializer. You register the serializer in your cache PDX configuration. Then program the serializer to handle all of the domain objects you need.
-
-If you write your own `IPdxSerializer` and you also use the `ReflectionBasedAutoSerializer`, then the `IPdxSerializer` needs to own the `ReflectionBasedAutoSerializer` and delegate to it. A cache can only have a single `IPdxSerializer` instance.
-
-**Note:**
-The `IPdxSerializer` `toData` and `fromData` methods differ from those for `IPdxSerializable`. They have different parameters and results.
-
-To register an `IPdxSerializer`, you can use the following code. Note that you can only register the `IPdxSerializer` in the application code. It cannot be configured declaratively in `cache.xml`.
-
-Example:
-
-``` pre
-using Apache.Geode.Client;
-...
-// Register a PdxSerializer to serialize
-// domain objects using PDX serialization
- 
-Serializable.RegisterPdxSerializer(new MyPdxSerializer());
-```
-
-
diff --git a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/using-ipdxinstancefactory.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/using-ipdxinstancefactory.html.md.erb
deleted file mode 100644
index c433e60..0000000
--- a/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/archive/using-ipdxinstancefactory.html.md.erb
+++ /dev/null
@@ -1,26 +0,0 @@
----
-title:  Using the IPdxInstanceFactory to Create IPdxInstances
----
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-You can use the `IPdxInstanceFactory` to create an `IPdxInstance` from raw data when the domain class is not available on the server.
-
-This option can be useful when you need an instance of a domain class for plug-in code such as a function or a loader. If you have the raw data for the domain object (the class name and each field's type and data), then you can explicitly create a `IPdxInstance`. The `IPdxInstanceFactory` is very similar to the `IPdxWriter` except that after writing each field, you need to call the create method which returns the created `IPdxInstance.`
-
-
