You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by db...@apache.org on 2019/10/08 21:47:03 UTC

[geode-native] branch develop updated: GEODE-7262: Split Geode Native Client guide into language-specific editions (#532)

This is an automated email from the ASF dual-hosted git repository.

dbarnes pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode-native.git


The following commit(s) were added to refs/heads/develop by this push:
     new 85aa0fe  GEODE-7262: Split Geode Native Client guide into language-specific editions (#532)
85aa0fe is described below

commit 85aa0feb286a30f48adacf82f4d28d6ac82488ad
Author: Dave Barnes <db...@pivotal.io>
AuthorDate: Tue Oct 8 17:46:58 2019 -0400

    GEODE-7262: Split Geode Native Client guide into language-specific editions (#532)
    
    Captured Karen's to-do list, will submit a separate JIRA ticket after this file reorganization has been checked in.
---
 docs/README.md                                     |  44 ++++++-
 docs/geode-native-book/config.yml                  |  13 +-
 .../{config.yml => config.yml.CPP}                 |  13 +-
 .../{config.yml => config.yml.DOTNET}              |  13 +-
 .../source/subnavs/geode-nc-nav.erb                |  46 +++----
 docs/geode-native-book/redirects.rb                |   4 +-
 .../{redirects.rb => redirects.rb.CPP}             |   4 +-
 .../{redirects.rb => redirects.rb.DOTNET}          |   4 +-
 .../about-client-users-guide.html.md.erb           |   0
 .../client-cache-ref.html.md.erb                   |   0
 .../common/images/10-Continuous_Querying-1.gif     | Bin
 .../common/images/10-Continuous_Querying-3.gif     | Bin
 .../common/images/6-DotNet_API-1.gif               | Bin
 .../common/images/7-Preserving_Data-2.gif          | Bin
 .../common/images/client-cache-data-flow.gif       | Bin
 .../common/images/client-cache-plugins-run.gif     | Bin
 .../common/images/client-overview.gif              | Bin
 .../common/images/client-server-arch.gif           | Bin
 .../common/images/data-dep-func-from-client.gif    | Bin
 .../common/images/data-dep-func-with-filter.gif    | Bin
 .../common/images/data-indep-func-from-client.gif  | Bin
 .../images/delta-propagation-in-client-server.gif  | Bin
 .../common/images/ha-data-dep-func.gif             | Bin
 .../common/images/security-client-connections.gif  | Bin
 .../configuring/config-client-cache.html.md.erb    |   3 +-
 .../configuring/configuration.html.md.erb          |   0
 .../configuring/sysprops.html.md.erb               |   4 +-
 .../system-level-configuration.html.md.erb         |   0
 .../about-connection-pools.html.md.erb             |   0
 .../about-server-locators.html.md.erb              |   0
 .../client-load-balancing.html.md.erb              |   0
 .../connection-pools/client-pool-api.html.md.erb   |   0
 ...onfiguring-pools-attributes-example.html.md.erb |   0
 .../connection-pools/configuring-pools.html.md.erb |   0
 .../connection-pools/connection-pools.html.md.erb  |   0
 .../discovering-locators-dynamically.html.md.erb   |   0
 .../running-connection-pool-code.html.md.erb       |   0
 .../subscription-properties.html.md.erb            |   0
 .../continuous-queries.html.md.erb                 |  86 +------------
 .../function-execution.html.md.erb                 |  96 +--------------
 .../app-dev-walkthrough-cpp.html.md.erb            |   0
 .../app-dev-walkthrough-dotnet.html.md.erb         |   0
 .../getting-started-nc-client.html.md.erb          |  42 +------
 .../getting-started/put-get-example.html.md.erb    |  61 ++--------
 .../images/SQLite_Persistence_Mgr.png              | Bin
 .../images/client-cache-plugins-run.png            | Bin
 .../images/delta-propagation.png                   | Bin
 .../app-ops-during-int-reg.html.md.erb             |   0
 .../preserving-data/client-side-config.html.md.erb |   0
 .../config-durable-interest-keys.html.md.erb       |   0
 .../config-durable-reconnect.html.md.erb           |   0
 .../configuring-durable-nc.html.md.erb             |   0
 .../preserving-data/configuring-nc-ha.html.md.erb  |   0
 .../disconnecting-from-server.html.md.erb          |   0
 .../preserving-data/disconnection.html.md.erb      |   0
 .../durable-client-life-cycle.html.md.erb          |   0
 .../durable-client-messaging-req.html.md.erb       |   0
 .../durable-client-messaging.html.md.erb           |   0
 .../durable-message-replay.html.md.erb             |   0
 .../high-availability-client-server.html.md.erb    |   0
 ...mpl-cache-listeners-durable-clients.html.md.erb |   0
 .../preserving-data/initial-operation.html.md.erb  |   0
 .../preserving-data/preserving-data.html.md.erb    |   0
 .../preserving-data/reconnection.html.md.erb       |   0
 .../sending-cache-ready-message.html.md.erb        |   0
 .../sending-periodic-ack.html.md.erb               |   0
 .../using-queue-conflation.html.md.erb             |   0
 .../consistency-checking-in-regions.html.md.erb    |   0
 .../regions/region-attributes.html.md.erb          |   0
 .../regions/regions.html.md.erb                    |  24 +---
 .../registering-interest-for-entries.html.md.erb   |   2 +-
 .../remote-queries.html.md.erb                     |  38 +-----
 .../security/SampleAuth.cpp                        |   0
 .../security/SampleAuth.cs                         |   0
 .../security/authentication.html.md.erb            |  43 -------
 .../security/security-systemprops.html.md.erb      |   0
 .../security/security.html.md.erb                  |   0
 .../security/sslclientserver.html.md.erb           |   0
 .../cpp-serialization/data-as-blob.html.md.erb     |   0
 .../cpp-serialization/object-graphs.html.md.erb    |   0
 .../pdx-ignore-unread-fields.html.md.erb           |   0
 .../pdx-serialization.html.md.erb                  |   0
 .../pdx-with-delta-propagation.html.md.erb         |   0
 .../pdxserializable-example.html.md.erb            |   0
 .../pdxserializable-interface.html.md.erb          |   0
 .../performing-ops-with-pdx-object.html.md.erb     |   0
 .../serialization-options.html.md.erb              |   0
 .../serialization-overview.html.md.erb             |   0
 .../serialization-using-serializable.html.md.erb   |   0
 .../using-enum-type-with-pdx.html.md.erb           |   0
 .../using-pdxinstance.html.md.erb                  |   0
 .../using-pdxinstancefactory.html.md.erb           |   0
 .../using-pdxserialization.html.md.erb             |   0
 .../using-pdxserializer.html.md.erb                |   0
 .../serialization/data-serialization.html.md.erb   | 117 ++----------------
 .../custom-class-igfserializable.html.md.erb       |   0
 .../dotnet-data-serialization-options.html.md.erb  |   0
 .../dotnet-data-serialization.html.md.erb          |   0
 .../dotnet-pdx-autoserializer.html.md.erb          |   0
 .../dotnet-pdx-serialization-features.html.md.erb  |   0
 .../dotnet-pdx-serialization.html.md.erb           |   0
 .../extending-pdx-autoserializer.html.md.erb       |   0
 .../how-igfserializable-works.html.md.erb          |   0
 .../implementing-igfserializable.html.md.erb       |   0
 .../mapping-dotnet-domain-type-names.html.md.erb   |   0
 .../programming-ipdxinstance.html.md.erb           |   0
 .../registering-the-type.html.md.erb               |   0
 .../serializable-types.html.md.erb                 |   0
 .../serialize-using-igfserializable.html.md.erb    |   0
 .../serialize-using-ipdxserializable.html.md.erb   |   0
 .../serializing-domain-objects.html.md.erb         |   0
 .../using-ipdxinstancefactory.html.md.erb          |   0
 .../transactions.html.md.erb                       |  67 +----------
 .../about-client-users-guide.html.md.erb           |   0
 .../client-cache-ref.html.md.erb                   |   0
 .../common/images/10-Continuous_Querying-1.gif     | Bin
 .../common/images/10-Continuous_Querying-3.gif     | Bin
 .../common/images/6-DotNet_API-1.gif               | Bin
 .../common/images/7-Preserving_Data-2.gif          | Bin
 .../common/images/client-cache-data-flow.gif       | Bin
 .../common/images/client-cache-plugins-run.gif     | Bin
 .../common/images/client-overview.gif              | Bin
 .../common/images/client-server-arch.gif           | Bin
 .../common/images/data-dep-func-from-client.gif    | Bin
 .../common/images/data-dep-func-with-filter.gif    | Bin
 .../common/images/data-indep-func-from-client.gif  | Bin
 .../images/delta-propagation-in-client-server.gif  | Bin
 .../common/images/ha-data-dep-func.gif             | Bin
 .../common/images/security-client-connections.gif  | Bin
 .../configuring/config-client-cache.html.md.erb    |   1 -
 .../configuring/configuration.html.md.erb          |  25 ----
 .../configuring/sysprops.html.md.erb               |   4 +-
 .../system-level-configuration.html.md.erb         |   0
 .../about-connection-pools.html.md.erb             |   0
 .../about-server-locators.html.md.erb              |   0
 .../client-load-balancing.html.md.erb              |   0
 .../connection-pools/client-pool-api.html.md.erb   |   0
 ...onfiguring-pools-attributes-example.html.md.erb |   0
 .../connection-pools/configuring-pools.html.md.erb |   0
 .../connection-pools/connection-pools.html.md.erb  |   0
 .../discovering-locators-dynamically.html.md.erb   |   0
 .../running-connection-pool-code.html.md.erb       |   0
 .../subscription-properties.html.md.erb            |   0
 .../continuous-queries.html.md.erb                 |  88 +-------------
 .../function-execution.html.md.erb                 | 115 +-----------------
 .../app-dev-walkthrough-cpp.html.md.erb            |   0
 .../app-dev-walkthrough-dotnet.html.md.erb         |   0
 .../getting-started-nc-client.html.md.erb          |  39 +-----
 .../getting-started/put-get-example.html.md.erb    |  55 +--------
 .../images/SQLite_Persistence_Mgr.png              | Bin
 .../images/client-cache-plugins-run.png            | Bin
 .../images/delta-propagation.png                   | Bin
 .../app-ops-during-int-reg.html.md.erb             |   0
 .../preserving-data/client-side-config.html.md.erb |   0
 .../config-durable-interest-keys.html.md.erb       |   0
 .../config-durable-reconnect.html.md.erb           |   0
 .../configuring-durable-nc.html.md.erb             |   0
 .../preserving-data/configuring-nc-ha.html.md.erb  |   0
 .../disconnecting-from-server.html.md.erb          |   0
 .../preserving-data/disconnection.html.md.erb      |   0
 .../durable-client-life-cycle.html.md.erb          |   0
 .../durable-client-messaging-req.html.md.erb       |   0
 .../durable-client-messaging.html.md.erb           |   0
 .../durable-message-replay.html.md.erb             |   0
 .../high-availability-client-server.html.md.erb    |   0
 ...mpl-cache-listeners-durable-clients.html.md.erb |   0
 .../preserving-data/initial-operation.html.md.erb  |   0
 .../preserving-data/preserving-data.html.md.erb    |   0
 .../preserving-data/reconnection.html.md.erb       |   0
 .../sending-cache-ready-message.html.md.erb        |   0
 .../sending-periodic-ack.html.md.erb               |   0
 .../using-queue-conflation.html.md.erb             |   0
 .../consistency-checking-in-regions.html.md.erb    |   0
 .../regions/region-attributes.html.md.erb          |   0
 .../regions/regions.html.md.erb                    |  24 +---
 .../registering-interest-for-entries.html.md.erb   |   2 +-
 .../remote-queries.html.md.erb                     |  38 +-----
 .../security/SampleAuth.cpp                        |   0
 .../security/SampleAuth.cs                         |   0
 .../security/authentication.html.md.erb            |  45 -------
 .../security/security-systemprops.html.md.erb      |   0
 .../security/security.html.md.erb                  |   0
 .../security/sslclientserver.html.md.erb           |   0
 .../cpp-serialization/data-as-blob.html.md.erb     |   0
 .../cpp-serialization/object-graphs.html.md.erb    |   0
 .../pdx-ignore-unread-fields.html.md.erb           |   0
 .../pdx-serialization.html.md.erb                  |   0
 .../pdx-with-delta-propagation.html.md.erb         |   0
 .../pdxserializable-example.html.md.erb            |   0
 .../pdxserializable-interface.html.md.erb          |   0
 .../performing-ops-with-pdx-object.html.md.erb     |   0
 .../serialization-options.html.md.erb              |   0
 .../serialization-overview.html.md.erb             |   0
 .../serialization-using-serializable.html.md.erb   |   0
 .../using-enum-type-with-pdx.html.md.erb           |   0
 .../using-pdxinstance.html.md.erb                  |   0
 .../using-pdxinstancefactory.html.md.erb           |   0
 .../using-pdxserialization.html.md.erb             |   0
 .../using-pdxserializer.html.md.erb                |   0
 .../serialization/data-serialization.html.md.erb   | 134 ++-------------------
 .../custom-class-igfserializable.html.md.erb       |   0
 .../dotnet-data-serialization-options.html.md.erb  |   0
 .../dotnet-data-serialization.html.md.erb          |   0
 .../dotnet-pdx-autoserializer.html.md.erb          |   0
 .../dotnet-pdx-serialization-features.html.md.erb  |   0
 .../dotnet-pdx-serialization.html.md.erb           |   0
 .../extending-pdx-autoserializer.html.md.erb       |   0
 .../how-igfserializable-works.html.md.erb          |   0
 .../implementing-igfserializable.html.md.erb       |   0
 .../mapping-dotnet-domain-type-names.html.md.erb   |   0
 .../programming-ipdxinstance.html.md.erb           |   0
 .../registering-the-type.html.md.erb               |   0
 .../serializable-types.html.md.erb                 |   0
 .../serialize-using-igfserializable.html.md.erb    |   0
 .../serialize-using-ipdxserializable.html.md.erb   |   0
 .../serializing-domain-objects.html.md.erb         |   0
 .../using-ipdxinstancefactory.html.md.erb          |   0
 .../transactions.html.md.erb                       |  61 +---------
 218 files changed, 157 insertions(+), 1198 deletions(-)

diff --git a/docs/README.md b/docs/README.md
index a8880dc..6ac1cec 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,6 +1,6 @@
-# Apache Geode Native Client User Guide
+# Apache Geode Native Client User Guides
 
-This document contains instructions for building and viewing the Apache Geode Native Client User Guide.
+This document contains instructions for building and viewing the Apache Geode Native Client User Guides.
 
 - [About](#about)
 - [Bookbinder Usage](#bookbinder-usage)
@@ -10,7 +10,27 @@ This document contains instructions for building and viewing the Apache Geode Na
 <a name="about"></a>
 ## About
 
-The Geode-Native repository provides the full source for the Apache Geode Native Client User Guide in markdown format (see _geode-project-dir_/geode-docs/CONTRIBUTE.md for more information on how to use markdown in this context). Users can build the markdown into an HTML user guide using [Bookbinder](https://github.com/pivotal-cf/bookbinder) and the instructions below.
+The Geode-Native repository provides the full source for the Apache Geode Native Client User Guides in markdown format (see _geode-project-dir_/geode-docs/CONTRIBUTE.md for more information on how to use markdown in this context). Users can build the markdown into an HTML user guide using [Bookbinder](https://github.com/pivotal-cf/bookbinder) and the instructions below.
+
+The User Guide can be produced in two versions: one for the .NET native client, the other for the C++ native client. You specify which version to build by copying two language-specific configuration files, each to its generically-named counterpart, then running the Bookbinder build.
+
+For example, to build the .NET version of the Native Client User Guide, first copy the DOTNET configuration files to their generically-named counterparts:
+
+```
+cd geode-native-book
+cp config.yml.DOTNET config.yml
+cp redirects.rb.DOTNET redirects.rb
+```
+Then run Bookbinder to create the guide.
+
+Similarly, to generate the C++ Native Client User Guide, first copy the CPP configuration files:
+
+```
+cd geode-native-book
+cp config.yml.CPP config.yml
+cp redirects.rb.CPP redirects.rb
+```
+Then run Bookbinder to create the guide.
 
 Bookbinder is a Ruby gem that binds  a unified documentation web application from markdown, html, and/or DITA source material. The source material for bookbinder must be stored either in local directories or in GitHub repositories. Bookbinder runs [Middleman](http://middlemanapp.com/) to produce a Rackup app that can be deployed locally or as a web application.
 
@@ -19,7 +39,7 @@ Bookbinder is a Ruby gem that binds  a unified documentation web application fro
 
 Bookbinder is meant to be used from within a project called a **book**. The book includes a configuration file that describes which documentation repositories to use as source materials. Bookbinder provides a set of scripts to aggregate those repositories and publish them to various locations.
 
-For Geode Native Client, a preconfigured **book** is provided in the directory _geode-native-project-dir_/docs/geode-native-book, which gathers content from the directory _geode-native-project-dir_/docs/geode-native-docs. You can use this configuration to build an HTML version of the Apache Geode Native Client User Guide on your local system.
+For Geode Native Client, a preconfigured **book** is provided in the directory _geode-native-project-dir_/docs/geode-native-book. The book gathers content from the language-specific directory _geode-native-project-dir_/docs/geode-native-docs-dotnet or geode-native-docs-cpp. You can use this configuration to build an HTML version of the Apache Geode Native Client User Guides on your local system.
 
 <a name="docker-setup"></a>
 ## Docker Setup
@@ -56,6 +76,22 @@ For ease of use, a Docker image is provided that contains a self-consistent Book
     $ bundle install
     ```
 
+1. Copy the language-specific configuration files to their generically-named counterparts. For the .NET book, copy the DOTNET configuration files to their generically-named conterparts:
+
+```
+cd geode-native-book
+cp config.yml.DOTNET config.yml
+cp redirects.rb.DOTNET redirects.rb
+```
+
+Similarly, to generate the C++ Native Client User Guide, first copy the CPP configuration files:
+
+```
+cd geode-native-book
+cp config.yml.CPP config.yml
+cp redirects.rb.CPP redirects.rb
+```
+
 1. Invoke bookbinder to build the user guide. Bookbinder converts the markdown source into HTML, which it puts in the `final_app` directory:
 
     ```bash
diff --git a/docs/geode-native-book/config.yml b/docs/geode-native-book/config.yml
index 9c1d39a..162a67b 100644
--- a/docs/geode-native-book/config.yml
+++ b/docs/geode-native-book/config.yml
@@ -20,8 +20,8 @@ public_host: localhost
 
 sections:
 - repository:
-    name: geode-native-docs
-  directory: docs/geode-native/19
+    name: geode-native-docs-dotnet
+  directory: docs/geode-native/dotnet/111
   subnav_template: geode-nc-nav
 
 template_variables:
@@ -30,19 +30,20 @@ template_variables:
   product_name_lc: geode
   product_version: "1.11"
   product_version_nodot: 111
-  client_name: Geode Native
+  product_language: dotnet
+  client_name: Geode Native Client for .NET
   min_java_update: 121
   support_url: http://geode.apache.org/community
   product_url: http://geode.apache.org
-  book_title: Apache Geode Native Documentation
+  book_title: Apache Geode Native .NET Documentation
   book_header_img: /images/Apache_Geode_logo_symbol_white.png
   support_link: <a href="http://geode.apache.org/community" target="_blank">Community</a>
   support_call_to_action: <a href="http://geode.apache.org/community" target="_blank">Need Help?</a>
   changelog_href: https://cwiki.apache.org/confluence/display/GEODE/Release+Notes
   product_link: <div class="header-item"><a href="http://geode.apache.org">Back to Product Page</a></div>
   domain_name: apache.org
-  book_title_short: Geode Native Docs
-  local_header_title: Apache Geode Native
+  book_title_short: Geode Native .NET Docs
+  local_header_title: Apache Geode Native .NET
   local_header_img: /images/Apache_Geode_logo_symbol.png
 
 broken_link_exclusions: iefix|using_custom_classes|arrowhead|cppdocs|dotnetdocs|#
diff --git a/docs/geode-native-book/config.yml b/docs/geode-native-book/config.yml.CPP
similarity index 86%
copy from docs/geode-native-book/config.yml
copy to docs/geode-native-book/config.yml.CPP
index 9c1d39a..6679a6c 100644
--- a/docs/geode-native-book/config.yml
+++ b/docs/geode-native-book/config.yml.CPP
@@ -20,8 +20,8 @@ public_host: localhost
 
 sections:
 - repository:
-    name: geode-native-docs
-  directory: docs/geode-native/19
+    name: geode-native-docs-cpp
+  directory: docs/geode-native/cpp/111
   subnav_template: geode-nc-nav
 
 template_variables:
@@ -30,19 +30,20 @@ template_variables:
   product_name_lc: geode
   product_version: "1.11"
   product_version_nodot: 111
-  client_name: Geode Native
+  product_language: cpp
+  client_name: Geode Native Client for C++
   min_java_update: 121
   support_url: http://geode.apache.org/community
   product_url: http://geode.apache.org
-  book_title: Apache Geode Native Documentation
+  book_title: Apache Geode Native C++ Documentation
   book_header_img: /images/Apache_Geode_logo_symbol_white.png
   support_link: <a href="http://geode.apache.org/community" target="_blank">Community</a>
   support_call_to_action: <a href="http://geode.apache.org/community" target="_blank">Need Help?</a>
   changelog_href: https://cwiki.apache.org/confluence/display/GEODE/Release+Notes
   product_link: <div class="header-item"><a href="http://geode.apache.org">Back to Product Page</a></div>
   domain_name: apache.org
-  book_title_short: Geode Native Docs
-  local_header_title: Apache Geode Native
+  book_title_short: Geode Native C++ Docs
+  local_header_title: Apache Geode Native C++
   local_header_img: /images/Apache_Geode_logo_symbol.png
 
 broken_link_exclusions: iefix|using_custom_classes|arrowhead|cppdocs|dotnetdocs|#
diff --git a/docs/geode-native-book/config.yml b/docs/geode-native-book/config.yml.DOTNET
similarity index 86%
copy from docs/geode-native-book/config.yml
copy to docs/geode-native-book/config.yml.DOTNET
index 9c1d39a..162a67b 100644
--- a/docs/geode-native-book/config.yml
+++ b/docs/geode-native-book/config.yml.DOTNET
@@ -20,8 +20,8 @@ public_host: localhost
 
 sections:
 - repository:
-    name: geode-native-docs
-  directory: docs/geode-native/19
+    name: geode-native-docs-dotnet
+  directory: docs/geode-native/dotnet/111
   subnav_template: geode-nc-nav
 
 template_variables:
@@ -30,19 +30,20 @@ template_variables:
   product_name_lc: geode
   product_version: "1.11"
   product_version_nodot: 111
-  client_name: Geode Native
+  product_language: dotnet
+  client_name: Geode Native Client for .NET
   min_java_update: 121
   support_url: http://geode.apache.org/community
   product_url: http://geode.apache.org
-  book_title: Apache Geode Native Documentation
+  book_title: Apache Geode Native .NET Documentation
   book_header_img: /images/Apache_Geode_logo_symbol_white.png
   support_link: <a href="http://geode.apache.org/community" target="_blank">Community</a>
   support_call_to_action: <a href="http://geode.apache.org/community" target="_blank">Need Help?</a>
   changelog_href: https://cwiki.apache.org/confluence/display/GEODE/Release+Notes
   product_link: <div class="header-item"><a href="http://geode.apache.org">Back to Product Page</a></div>
   domain_name: apache.org
-  book_title_short: Geode Native Docs
-  local_header_title: Apache Geode Native
+  book_title_short: Geode Native .NET Docs
+  local_header_title: Apache Geode Native .NET
   local_header_img: /images/Apache_Geode_logo_symbol.png
 
 broken_link_exclusions: iefix|using_custom_classes|arrowhead|cppdocs|dotnetdocs|#
diff --git a/docs/geode-native-book/master_middleman/source/subnavs/geode-nc-nav.erb b/docs/geode-native-book/master_middleman/source/subnavs/geode-nc-nav.erb
index 579c0e3..1968220 100644
--- a/docs/geode-native-book/master_middleman/source/subnavs/geode-nc-nav.erb
+++ b/docs/geode-native-book/master_middleman/source/subnavs/geode-nc-nav.erb
@@ -19,88 +19,88 @@ limitations under the License.
   <div class="nav-content">
   <ul>
     <li>
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/about-client-users-guide.html">Apache Geode Native Documentation</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/about-client-users-guide.html">Apache Geode Native Documentation</a>
     </li>
     <li class="has_submenu">
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html">Getting Started with the Native Library</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html">Getting Started with the Native Library</a>
       <ul>
         <li>
-          <a href="/docs/geode-native/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html#set_up_dev_environment">Set Up Your Development Environment</a>
+          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html#set_up_dev_environment">Set Up Your Development Environment</a>
         </li>
         <li>
-          <a href="/docs/geode-native/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html#establish_cluster_access">Establish Access to a <%=vars.product_name%> Cluster</a>
+          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html#establish_cluster_access">Establish Access to a <%=vars.product_name%> Cluster</a>
         </li>
         <li>
-          <a href="/docs/geode-native/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html#app_dev_walkthroughs">Application Development Walkthroughs</a>
+          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html#app_dev_walkthroughs">Application Development Walkthroughs</a>
         </li>
         <li>
-          <a href="/docs/geode-native/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html#programming_examples">Programming Examples</a>
+          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/getting-started/getting-started-nc-client.html#programming_examples">Programming Examples</a>
         </li>
         <li>
-          <a href="/docs/geode-native/<%=vars.product_version_nodot%>/getting-started/put-get-example.html">Put/Get/Remove Examples</a>
+          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/getting-started/put-get-example.html">Put/Get/Remove Examples</a>
         </li>
       </ul>
     </li>
     <li class="has_submenu">
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/configuring/configuration.html">Configuring a Client Application</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/configuring/configuration.html">Configuring a Client Application</a>
       <ul>
         <li>
-          <a href="/docs/geode-native/<%=vars.product_version_nodot%>/configuring/system-level-configuration.html">System Level Configuration</a>
+          <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/configuring/system-level-configuration.html">System Level Configuration</a>
         </li>
       </ul>
     </li>
 
     <li>
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/configuring/config-client-cache.html">Configuring the Client Cache</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/configuring/config-client-cache.html">Configuring the Client Cache</a>
     </li>
     <li class="has_submenu">
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/regions/regions.html">Configuring Regions</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/regions/regions.html">Configuring Regions</a>
       <ul>
         <li>
-        <a href="/docs/geode-native/<%=vars.product_version_nodot%>/regions/registering-interest-for-entries.html">Registering Interest for Entries</a>
+        <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/regions/registering-interest-for-entries.html">Registering Interest for Entries</a>
         </li>
         <li>
-        <a href="/docs/geode-native/<%=vars.product_version_nodot%>/regions/region-attributes.html">Region Attributes</a>
+        <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/regions/region-attributes.html">Region Attributes</a>
         </li>
       </ul>
     </li>
 
     <li>
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/serialization/data-serialization.html">Serializing Data</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/serialization/data-serialization.html">Serializing Data</a>
     </li>
 
     <li>
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/remote-queries.html">Remote Queries</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/remote-queries.html">Remote Queries</a>
     </li>
 
     <li>
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/continuous-queries.html">Continuous Queries</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/continuous-queries.html">Continuous Queries</a>
     </li>
 
     <li class="has_submenu">
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/security/security.html">Security: Authentication and Encryption</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/security/security.html">Security: Authentication and Encryption</a>
       <ul>
         <li>
-        <a href="/docs/geode-native/<%=vars.product_version_nodot%>/security/authentication.html">Authentication</a>
+        <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/security/authentication.html">Authentication</a>
         </li>
         <li>
-        <a href="/docs/geode-native/<%=vars.product_version_nodot%>/security/sslclientserver.html">TLS/SSL Client-Server Communication Encryption</a>
+        <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/security/sslclientserver.html">TLS/SSL Client-Server Communication Encryption</a>
         </li>
       </ul>
     </li>
 
     <li>
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/function-execution.html">Function Execution</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/function-execution.html">Function Execution</a>
     </li>
 
     <li>
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/transactions.html">Transactions</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/transactions.html">Transactions</a>
     </li>
     <li>
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/configuring/sysprops.html">System Properties</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/configuring/sysprops.html">System Properties</a>
     </li>
     <li>
-      <a href="/docs/geode-native/<%=vars.product_version_nodot%>/client-cache-ref.html">Client Cache XML Reference</a>
+      <a href="/docs/geode-native/<%=vars.product_language%>/<%=vars.product_version_nodot%>/client-cache-ref.html">Client Cache XML Reference</a>
     </li>
   </ul>
   </div>
diff --git a/docs/geode-native-book/redirects.rb b/docs/geode-native-book/redirects.rb
index 6ea5ea2..07afaee 100644
--- a/docs/geode-native-book/redirects.rb
+++ b/docs/geode-native-book/redirects.rb
@@ -19,7 +19,7 @@ r302 %r{/cppdocs/(.*)}, 'https://geode.apache.org/releases/latest/cppdocs/$1'
 r302 %r{/dotnetdocs/(.*)}, 'https://geode.apache.org/releases/latest/dotnetdocs/$1'
 
 # Links to User Guides #
-rewrite '/', '/docs/geode-native/111/about-client-users-guide.html'
-rewrite '/index.html', '/docs/geode-native/111/about-client-users-guide.html'
+rewrite '/', '/docs/geode-native/dotnet/111/about-client-users-guide.html'
+rewrite '/index.html', '/docs/geode-native/dotnet/111/about-client-users-guide.html'
 r301 %r{/serverman/(.*)}, 'https://geode.apache.org/docs/guide/111/$1'
 r301 %r{/geodeman/(.*)}, 'https://geode.apache.org/docs/guide/111/$1'
diff --git a/docs/geode-native-book/redirects.rb b/docs/geode-native-book/redirects.rb.CPP
similarity index 88%
copy from docs/geode-native-book/redirects.rb
copy to docs/geode-native-book/redirects.rb.CPP
index 6ea5ea2..aecfebe 100644
--- a/docs/geode-native-book/redirects.rb
+++ b/docs/geode-native-book/redirects.rb.CPP
@@ -19,7 +19,7 @@ r302 %r{/cppdocs/(.*)}, 'https://geode.apache.org/releases/latest/cppdocs/$1'
 r302 %r{/dotnetdocs/(.*)}, 'https://geode.apache.org/releases/latest/dotnetdocs/$1'
 
 # Links to User Guides #
-rewrite '/', '/docs/geode-native/111/about-client-users-guide.html'
-rewrite '/index.html', '/docs/geode-native/111/about-client-users-guide.html'
+rewrite '/', '/docs/geode-native/cpp/111/about-client-users-guide.html'
+rewrite '/index.html', '/docs/geode-native/cpp/111/about-client-users-guide.html'
 r301 %r{/serverman/(.*)}, 'https://geode.apache.org/docs/guide/111/$1'
 r301 %r{/geodeman/(.*)}, 'https://geode.apache.org/docs/guide/111/$1'
diff --git a/docs/geode-native-book/redirects.rb b/docs/geode-native-book/redirects.rb.DOTNET
similarity index 88%
copy from docs/geode-native-book/redirects.rb
copy to docs/geode-native-book/redirects.rb.DOTNET
index 6ea5ea2..07afaee 100644
--- a/docs/geode-native-book/redirects.rb
+++ b/docs/geode-native-book/redirects.rb.DOTNET
@@ -19,7 +19,7 @@ r302 %r{/cppdocs/(.*)}, 'https://geode.apache.org/releases/latest/cppdocs/$1'
 r302 %r{/dotnetdocs/(.*)}, 'https://geode.apache.org/releases/latest/dotnetdocs/$1'
 
 # Links to User Guides #
-rewrite '/', '/docs/geode-native/111/about-client-users-guide.html'
-rewrite '/index.html', '/docs/geode-native/111/about-client-users-guide.html'
+rewrite '/', '/docs/geode-native/dotnet/111/about-client-users-guide.html'
+rewrite '/index.html', '/docs/geode-native/dotnet/111/about-client-users-guide.html'
 r301 %r{/serverman/(.*)}, 'https://geode.apache.org/docs/guide/111/$1'
 r301 %r{/geodeman/(.*)}, 'https://geode.apache.org/docs/guide/111/$1'
diff --git a/docs/geode-native-docs/about-client-users-guide.html.md.erb b/docs/geode-native-docs-cpp/about-client-users-guide.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/about-client-users-guide.html.md.erb
copy to docs/geode-native-docs-cpp/about-client-users-guide.html.md.erb
diff --git a/docs/geode-native-docs/client-cache-ref.html.md.erb b/docs/geode-native-docs-cpp/client-cache-ref.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/client-cache-ref.html.md.erb
copy to docs/geode-native-docs-cpp/client-cache-ref.html.md.erb
diff --git a/docs/geode-native-docs/common/images/10-Continuous_Querying-1.gif b/docs/geode-native-docs-cpp/common/images/10-Continuous_Querying-1.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/10-Continuous_Querying-1.gif
copy to docs/geode-native-docs-cpp/common/images/10-Continuous_Querying-1.gif
diff --git a/docs/geode-native-docs/common/images/10-Continuous_Querying-3.gif b/docs/geode-native-docs-cpp/common/images/10-Continuous_Querying-3.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/10-Continuous_Querying-3.gif
copy to docs/geode-native-docs-cpp/common/images/10-Continuous_Querying-3.gif
diff --git a/docs/geode-native-docs/common/images/6-DotNet_API-1.gif b/docs/geode-native-docs-cpp/common/images/6-DotNet_API-1.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/6-DotNet_API-1.gif
copy to docs/geode-native-docs-cpp/common/images/6-DotNet_API-1.gif
diff --git a/docs/geode-native-docs/common/images/7-Preserving_Data-2.gif b/docs/geode-native-docs-cpp/common/images/7-Preserving_Data-2.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/7-Preserving_Data-2.gif
copy to docs/geode-native-docs-cpp/common/images/7-Preserving_Data-2.gif
diff --git a/docs/geode-native-docs/common/images/client-cache-data-flow.gif b/docs/geode-native-docs-cpp/common/images/client-cache-data-flow.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/client-cache-data-flow.gif
copy to docs/geode-native-docs-cpp/common/images/client-cache-data-flow.gif
diff --git a/docs/geode-native-docs/common/images/client-cache-plugins-run.gif b/docs/geode-native-docs-cpp/common/images/client-cache-plugins-run.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/client-cache-plugins-run.gif
copy to docs/geode-native-docs-cpp/common/images/client-cache-plugins-run.gif
diff --git a/docs/geode-native-docs/common/images/client-overview.gif b/docs/geode-native-docs-cpp/common/images/client-overview.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/client-overview.gif
copy to docs/geode-native-docs-cpp/common/images/client-overview.gif
diff --git a/docs/geode-native-docs/common/images/client-server-arch.gif b/docs/geode-native-docs-cpp/common/images/client-server-arch.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/client-server-arch.gif
copy to docs/geode-native-docs-cpp/common/images/client-server-arch.gif
diff --git a/docs/geode-native-docs/common/images/data-dep-func-from-client.gif b/docs/geode-native-docs-cpp/common/images/data-dep-func-from-client.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/data-dep-func-from-client.gif
copy to docs/geode-native-docs-cpp/common/images/data-dep-func-from-client.gif
diff --git a/docs/geode-native-docs/common/images/data-dep-func-with-filter.gif b/docs/geode-native-docs-cpp/common/images/data-dep-func-with-filter.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/data-dep-func-with-filter.gif
copy to docs/geode-native-docs-cpp/common/images/data-dep-func-with-filter.gif
diff --git a/docs/geode-native-docs/common/images/data-indep-func-from-client.gif b/docs/geode-native-docs-cpp/common/images/data-indep-func-from-client.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/data-indep-func-from-client.gif
copy to docs/geode-native-docs-cpp/common/images/data-indep-func-from-client.gif
diff --git a/docs/geode-native-docs/common/images/delta-propagation-in-client-server.gif b/docs/geode-native-docs-cpp/common/images/delta-propagation-in-client-server.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/delta-propagation-in-client-server.gif
copy to docs/geode-native-docs-cpp/common/images/delta-propagation-in-client-server.gif
diff --git a/docs/geode-native-docs/common/images/ha-data-dep-func.gif b/docs/geode-native-docs-cpp/common/images/ha-data-dep-func.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/ha-data-dep-func.gif
copy to docs/geode-native-docs-cpp/common/images/ha-data-dep-func.gif
diff --git a/docs/geode-native-docs/common/images/security-client-connections.gif b/docs/geode-native-docs-cpp/common/images/security-client-connections.gif
similarity index 100%
copy from docs/geode-native-docs/common/images/security-client-connections.gif
copy to docs/geode-native-docs-cpp/common/images/security-client-connections.gif
diff --git a/docs/geode-native-docs/configuring/config-client-cache.html.md.erb b/docs/geode-native-docs-cpp/configuring/config-client-cache.html.md.erb
similarity index 95%
copy from docs/geode-native-docs/configuring/config-client-cache.html.md.erb
copy to docs/geode-native-docs-cpp/configuring/config-client-cache.html.md.erb
index c63539d..ffe074a 100644
--- a/docs/geode-native-docs/configuring/config-client-cache.html.md.erb
+++ b/docs/geode-native-docs-cpp/configuring/config-client-cache.html.md.erb
@@ -32,6 +32,5 @@ Regions are created from `Cache` instances. Regions provide the entry points to
 instances of `Region` and `RegionEntry`.
 
 For more information specific to your client programming language, see the
-[C++ Client API](cppdocs) or the
-[.NET Client API](dotnetdocs).
+[C++ Client API](cppdocs).
 
diff --git a/docs/geode-native-docs/configuring/configuration.html.md.erb b/docs/geode-native-docs-cpp/configuring/configuration.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/configuring/configuration.html.md.erb
copy to docs/geode-native-docs-cpp/configuring/configuration.html.md.erb
diff --git a/docs/geode-native-docs/configuring/sysprops.html.md.erb b/docs/geode-native-docs-cpp/configuring/sysprops.html.md.erb
similarity index 98%
copy from docs/geode-native-docs/configuring/sysprops.html.md.erb
copy to docs/geode-native-docs-cpp/configuring/sysprops.html.md.erb
index 081ec6a..caa55ad 100644
--- a/docs/geode-native-docs/configuring/sysprops.html.md.erb
+++ b/docs/geode-native-docs-cpp/configuring/sysprops.html.md.erb
@@ -20,9 +20,7 @@ limitations under the License.
 -->
 
 A variety of system properties can be specified when a client connects to a distributed system, either programmatically or in a `geode.properties` file.
-
-- In the [.NET API docs](dotnetdocs), see `Apache::Geode::Client::SystemProperties`.
-- In the [C++ API docs](cppdocs), see `apache::geode::client::SystemProperties`.
+See `apache::geode::client::SystemProperties` in the [C++ API docs](cppdocs).
 
 The following settings can be configured:
 
diff --git a/docs/geode-native-docs/configuring/system-level-configuration.html.md.erb b/docs/geode-native-docs-cpp/configuring/system-level-configuration.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/configuring/system-level-configuration.html.md.erb
copy to docs/geode-native-docs-cpp/configuring/system-level-configuration.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/about-connection-pools.html.md.erb b/docs/geode-native-docs-cpp/connection-pools/about-connection-pools.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/connection-pools/about-connection-pools.html.md.erb
copy to docs/geode-native-docs-cpp/connection-pools/about-connection-pools.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/about-server-locators.html.md.erb b/docs/geode-native-docs-cpp/connection-pools/about-server-locators.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/connection-pools/about-server-locators.html.md.erb
copy to docs/geode-native-docs-cpp/connection-pools/about-server-locators.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/client-load-balancing.html.md.erb b/docs/geode-native-docs-cpp/connection-pools/client-load-balancing.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/connection-pools/client-load-balancing.html.md.erb
copy to docs/geode-native-docs-cpp/connection-pools/client-load-balancing.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/client-pool-api.html.md.erb b/docs/geode-native-docs-cpp/connection-pools/client-pool-api.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/connection-pools/client-pool-api.html.md.erb
copy to docs/geode-native-docs-cpp/connection-pools/client-pool-api.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/configuring-pools-attributes-example.html.md.erb b/docs/geode-native-docs-cpp/connection-pools/configuring-pools-attributes-example.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/connection-pools/configuring-pools-attributes-example.html.md.erb
copy to docs/geode-native-docs-cpp/connection-pools/configuring-pools-attributes-example.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/configuring-pools.html.md.erb b/docs/geode-native-docs-cpp/connection-pools/configuring-pools.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/connection-pools/configuring-pools.html.md.erb
copy to docs/geode-native-docs-cpp/connection-pools/configuring-pools.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/connection-pools.html.md.erb b/docs/geode-native-docs-cpp/connection-pools/connection-pools.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/connection-pools/connection-pools.html.md.erb
copy to docs/geode-native-docs-cpp/connection-pools/connection-pools.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/discovering-locators-dynamically.html.md.erb b/docs/geode-native-docs-cpp/connection-pools/discovering-locators-dynamically.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/connection-pools/discovering-locators-dynamically.html.md.erb
copy to docs/geode-native-docs-cpp/connection-pools/discovering-locators-dynamically.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/running-connection-pool-code.html.md.erb b/docs/geode-native-docs-cpp/connection-pools/running-connection-pool-code.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/connection-pools/running-connection-pool-code.html.md.erb
copy to docs/geode-native-docs-cpp/connection-pools/running-connection-pool-code.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/subscription-properties.html.md.erb b/docs/geode-native-docs-cpp/connection-pools/subscription-properties.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/connection-pools/subscription-properties.html.md.erb
copy to docs/geode-native-docs-cpp/connection-pools/subscription-properties.html.md.erb
diff --git a/docs/geode-native-docs/continuous-queries.html.md.erb b/docs/geode-native-docs-cpp/continuous-queries.html.md.erb
similarity index 73%
copy from docs/geode-native-docs/continuous-queries.html.md.erb
copy to docs/geode-native-docs-cpp/continuous-queries.html.md.erb
index dc787f5..77f56dd 100644
--- a/docs/geode-native-docs/continuous-queries.html.md.erb
+++ b/docs/geode-native-docs-cpp/continuous-queries.html.md.erb
@@ -49,8 +49,8 @@ Compare this to register interest by reviewing [Registering Interest for Entries
 
 1.  The client creates the CQ. This sets up everything for running the query and provides the client with a `CqQuery` object, but does not execute the CQ. At this point, the query is in a `STOPPED `state, ready to be closed or run.
 2.  The client initiates the CQ with an API call to one of the `CqQuery execute*` methods. This puts the query into a `RUNNING` state on the client and on the server.  The server remotely evaluates the query string, and optionally returns the results to the client. `CqQuery execute*` methods include:
-  - .NET: `CqQuery.Execute()` and `CqQuery.ExecuteWithInitialResults()`
-  - C++: `CqQuery.execute()` and `CqQuery.executeWithInitialResults()`
+  - `CqQuery.execute()` 
+  - `CqQuery.executeWithInitialResults()`
 
 1.  A CQ Listener waits for events. When it receives events, it takes action accordingly with the data in the CqEvent.
 3.  The CQ is closed by a client call to `CqQuery.close`. This de-allocates all resources in use for the CQ on the client and server. At this point, the cycle could begin again with the creation of a new `CqQuery` instance.
@@ -60,93 +60,13 @@ Compare this to register interest by reviewing [Registering Interest for Entries
 The essential steps to create and execute a continuous query are:
 
 1.  Create an instance of the `QueryService` class. If you are using the pool API (recommended), you should obtain the `QueryService` from the pool.
-1.  Define a CQ Listener (in .NET, an `ICqListener`, in C++, a `CqListener`) to field events sent from the server.
+1.  Define a CQ Listener (a `CqListener`) to field events sent from the server.
 1.  Use one of the `CqQuery execute*` methods to submit the query string to the cache server.
 1.  The server remotely evaluates the query string, then monitors those results and notifies the client if they change.
 1.  The client listens for changes that match the query predicate.
 1.  Iterate through the returned objects.
 1.  When finished, close down the continuous query.
 
-### <a id="DotNetCQExample"></a>.NET Continuous Query Example
-
-These C# code excerpts are from the `examples\dotnet\continuousquery` example included in your client
-distribution. See the example for full context.
-
-Following the steps listed above,
-
-1. Create a query service:
-
-    ```
-    var queryService = pool.GetQueryService();
-    ```
-
-1. Define an ICqListener:
-
-    ```
-    public class MyCqListener<TKey, TResult> : ICqListener<TKey, TResult>
-    {
-    ```
-
-1. Create an instance of your ICqListener and insert it into a CQ attributes object:
-
-    ```
-    var cqListener = new MyCqListener<string, Order>();
-    var cqAttributesFactory = new CqAttributesFactory<string, Order>();
-    cqAttributesFactory.AddCqListener(cqListener);
-    var cqAttributes = cqAttributesFactory.Create();
-    ```
-
-1. Create a Continuous Query using the query service and the CQ attributes:
-
-    ```
-    var query = queryService.NewCq("MyCq", "SELECT * FROM /example_orderobject WHERE quantity > 30", cqAttributes, false);
-    ```
-
-1. Execute the query:
-
-    ```
-    query.Execute();
-    ```
-
-1. Wait for events and do something with them.
-
-    ```
-	/* Excerpt from the CqListener */
-
-	/* Determine Operation Type */
-           switch (ev.getQueryOperation())
-            {
-                case CqOperation.OP_TYPE_CREATE:
-                    operationType = "CREATE";
-                    break;
-                case CqOperation.OP_TYPE_UPDATE:
-                    operationType = "UPDATE";
-                    break;
-                case CqOperation.OP_TYPE_DESTROY:
-                    operationType = "DESTROY";
-                    break;
-                default:
-                    break;
-            }
-
-	...
-
-	/* Take action based on OP Type */
-
-    ```
-
-1. When finished, close up shop.
-
-    ```
-    query.Execute();
-    ... (respond to events as they arrive)
-
-    query.Stop();
-    query.Close();
-
-    cache.Close();
-    ```
-
 ### <a id="CppCQExample"></a>C++ Continuous Query Example
 
 These C++ code excerpts are from the `examples/cpp/continuousquery` example included in your client
diff --git a/docs/geode-native-docs/function-execution.html.md.erb b/docs/geode-native-docs-cpp/function-execution.html.md.erb
similarity index 73%
copy from docs/geode-native-docs/function-execution.html.md.erb
copy to docs/geode-native-docs-cpp/function-execution.html.md.erb
index df1d98d..00cc262 100644
--- a/docs/geode-native-docs/function-execution.html.md.erb
+++ b/docs/geode-native-docs-cpp/function-execution.html.md.erb
@@ -75,15 +75,11 @@ To handle the results in a custom manner:
     -  `clearResults` is called to clear partial results from the results collector. This is used only for highly available `onRegion` functions where the calling application waits for the results. If the call fails, before <%=vars.product_name%> retries the execution, it calls `clearResults` to ready the instance for a clean set of results.
 2.  Use the `Execution` object in your executing member to call `withCollector`, passing your custom collector.
 
-## <a id="nc-fe-examples"></a>Function Execution Examples
+## <a id="nc-fe-examples"></a>Function Execution Example
 
-The native client release contains examples of function execution written for .NET and
-C++. The examples are located in `../examples/dotnet/functionexecution` and
-`../examples/cpp/functionexecution`, respectively.
+The native client release contains examples of function execution in `../examples/cpp/functionexecution`.
 
-The two examples share some common elements:
-
-- They begin with a server-side script that runs `gfsh` commands to create a region, simply called "partition_region".
+- The example begins with a server-side script that runs `gfsh` commands to create a region, simply called "partition_region".
 - The function is preloaded with a JAR file containing the server-side Java function code. 
 - The function, called "ExampleMultiGetFunction", is defined in the
 `examples/utilities` directory of your distribution. As its input parameter, the function takes an array of keys,
@@ -103,91 +99,7 @@ The client:
 If the client expects results, it must create a result object.
 The .NET example uses a built-in result collector (`IResultCollector.getResults()`) to retrieve the function results.
 
-The C++ example creates a result variable to hold the results from the collector.
-
-### <a id="nc-fe-dotnet_example"></a>.NET Example
-This section contains code snippets showing highlights of the .NET function execution example. They are not intended for cut-and-paste execution.
-For the complete source, see the example source directory.
-
-The .NET example creates a cache, then uses it to create a connection pool.
-
-```csharp
-   var cacheFactory = new CacheFactory()
-       .Set("log-level", "none");
-   var cache = cacheFactory.Create();
-
-   var poolFactory = cache.GetPoolFactory()
-       .AddLocator("localhost", 10334);
-   var pool = poolFactory.Create("pool");
-```
-
-The example uses the connection pool to create a region, with the same characteristics and name as the server-side region (`partition_region`).
-
-```csharp
-   var regionFactory = cache.CreateRegionFactory(RegionShortcut.PROXY)
-       .SetPoolName("pool");
-   var region = regionFactory.Create<object, object>("partition_region");
-```
-
-The sample client populates the server's datastore with values, using the API and some sample key-value pairs.
-
-```csharp
-   string rtimmonsKey = "rtimmons";
-   string rtimmonsValue = "Robert Timmons";
-   string scharlesKey = "scharles";
-   string scharlesValue = "Sylvia Charles";
-   region.Put(rtimmonsKey, rtimmonsValue, null);
-   region.Put(scharlesKey, scharlesValue, null);
-```
-
-To confirm that the data has been stored, the client uses the API to retrieve the values and write them to the console.
-This is done without reference to the server-side example function.
-
-```csharp
-   var user1 = region.Get(rtimmonsKey, null);
-   var user2 = region.Get(scharlesKey, null);
-
-   Console.WriteLine(rtimmonsKey + " = " + user1);
-   Console.WriteLine(scharlesKey + " = " + user2);
-```
-
-Next, the client retrieves those same values using the server-side example function.
-The client code creates the input parameter, an array of keys whose values are to be retrieved.
-
-```csharp
-   ArrayList keyArgs = new ArrayList();
-   keyArgs.Add(rtimmonsKey);
-   keyArgs.Add(scharlesKey);
-```
-
-The client creates an execution object using `Client.FunctionService.OnRegion` and specifying the region.
-
-```csharp
-   var exc = Client.FunctionService<object>.OnRegion<object, object>(region);
-```
-
-The client then calls the server side function with its input arguments and stores the results in a Client.IResultCollector.
-
-```csharp
-   Client.IResultCollector<object> rc = exc.WithArgs<object>(keyArgs).Execute("ExampleMultiGetFunction");
-```
-
-It then loops through the results and prints the retrieved values.
-
-```csharp
-   ICollection<object> res = rc.GetResult();
-
-   Console.WriteLine("Function Execution Results:");
-   Console.WriteLine("   Count = {0}", res.Count);
-
-   foreach (List<object> item in res)
-   {
-     foreach (object item2 in item)
-     {
-       Console.WriteLine("   value = {0}", item2.ToString());
-     }
-   }
-```
+The example creates a result variable to hold the results from the collector.
 
 ### <a id="nc-fe-cpp_example"></a>C++ Example
 This section contains code snippets showing highlights of the C++ function execution example. They are not intended for cut-and-paste execution.
diff --git a/docs/geode-native-docs/getting-started/app-dev-walkthrough-cpp.html.md.erb b/docs/geode-native-docs-cpp/getting-started/app-dev-walkthrough-cpp.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/getting-started/app-dev-walkthrough-cpp.html.md.erb
copy to docs/geode-native-docs-cpp/getting-started/app-dev-walkthrough-cpp.html.md.erb
diff --git a/docs/geode-native-docs/getting-started/app-dev-walkthrough-dotnet.html.md.erb b/docs/geode-native-docs-cpp/getting-started/app-dev-walkthrough-dotnet.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/getting-started/app-dev-walkthrough-dotnet.html.md.erb
copy to docs/geode-native-docs-cpp/getting-started/app-dev-walkthrough-dotnet.html.md.erb
diff --git a/docs/geode-native-docs/getting-started/getting-started-nc-client.html.md.erb b/docs/geode-native-docs-cpp/getting-started/getting-started-nc-client.html.md.erb
similarity index 76%
copy from docs/geode-native-docs/getting-started/getting-started-nc-client.html.md.erb
copy to docs/geode-native-docs-cpp/getting-started/getting-started-nc-client.html.md.erb
index 647612c..a192d84 100644
--- a/docs/geode-native-docs/getting-started/getting-started-nc-client.html.md.erb
+++ b/docs/geode-native-docs-cpp/getting-started/getting-started-nc-client.html.md.erb
@@ -11,7 +11,7 @@ To use the <%=vars.product_name%> Native Library for developing <%=vars.product_
 
 ## <a id="set_up_dev_environment"></a>Set Up Your Development Environment
 
-Whether you are developing a C++ or .NET application, you will need some essential tools, such as a compiler and a linker.
+You will need some essential tools, such as a compiler and a linker.
 Your compiler must have access to the Native Client header files, and the linker must have access to the Native Client libraries.
 The header files and libraries are located in the Native Client installation directory.
 
@@ -69,46 +69,12 @@ Create a named pool of network connections, and instantiate a region of the desi
   auto region = regionFactory.setPoolName("pool").create("example_userinfo"); // create a connection to the region "example_userinfo" on the server
 ```
 
-**Server Connection: .NET Example**
-
-This example of connecting to the server is taken from the .NET `PutGetRemove` example.
-
-Instantiate a `CacheFactory` and set its characteristics:
-
-``` csharp
-    var cacheFactory = new CacheFactory()     // instantiate cache factory
-        .Set("log-level", "none");            // set cache log-level characteristics
-```
-
-Create a cache and use it to instantiate a `PoolFactory`:
-
-``` csharp
-    var cache = cacheFactory.Create();        // create cache
-
-    var poolFactory = cache.GetPoolFactory()  // instantiate pool factory
-        .AddLocator("localhost", 10334);      // add locator to pool factory
-```
-
-Create a named pool of network connections, and instantiate a region of the desired type:
-
-``` csharp
-    poolFactory.Create("pool");               // create a pool called "pool" that knows where the server is
-
-    var regionFactory = cache.CreateRegionFactory(RegionShortcut.PROXY) // instantiate region factory with PROXY characteristics
-        .SetPoolName("pool");
-    var region = regionFactory.Create<string, string>("example_userinfo"); // create a connection to the region "example_userinfo" on the server
-```
-
 See the _<%=vars.product_name%> User Guide_ section [Configuring a Client/Server System](serverman/topologies_and_comm/cs_configuration/setting_up_a_client_server_system.html)
 for more details.
 
+### <a id="app_dev_walkthroughs"></a>Application Development Walkthrough
 
-### <a id="app_dev_walkthroughs"></a>Application Development Walkthroughs
-
-The application development walkthroughs describe how to set up a native client development environment using CMake.
-
-- [C++ App Development Walkthrough](app-dev-walkthrough-cpp.html)
-- [.NET App Development Walkthrough](app-dev-walkthrough-dotnet.html)
+The [C++ App Development Walkthrough](app-dev-walkthrough-cpp.html) describes how to set up a native client development environment using CMake.
 
 ## <a id="programming_examples"></a>Programming Examples
 
@@ -156,5 +122,5 @@ MyProject/
 See the `BUILD-EXAMPLES.md` file for detailed instructions on building and executing the examples,
 and read the source code to understand how the examples are constructed.
 
-See [Put/Get/Remove Examples](put-get-example.html) for sample code showing the basics of how a client application
+See [Put/Get/Remove Example](put-get-example.html) for sample code showing the basics of how a client application
 connects to a <%=vars.product_name%> cluster and performs basic operations on a remote server.
diff --git a/docs/geode-native-docs/getting-started/put-get-example.html.md.erb b/docs/geode-native-docs-cpp/getting-started/put-get-example.html.md.erb
similarity index 58%
copy from docs/geode-native-docs/getting-started/put-get-example.html.md.erb
copy to docs/geode-native-docs-cpp/getting-started/put-get-example.html.md.erb
index 586fd29..e292ec5 100644
--- a/docs/geode-native-docs/getting-started/put-get-example.html.md.erb
+++ b/docs/geode-native-docs-cpp/getting-started/put-get-example.html.md.erb
@@ -1,5 +1,5 @@
 ---
-title:  Put/Get/Remove Examples
+title:  Put/Get/Remove Example
 ---
 
 <!--
@@ -19,13 +19,14 @@ See the License for the specific language governing permissions and
 limitations under the License.
 -->
 
-The native client release contains examples, written for .NET and C++, showing how a client application
+The native client release contains an example written for C++ showing how a client application
 can establish a connection to a cluster and then use that connection to perform basic operations on a remote server. 
-The examples are located in `../examples/dotnet/putgetremove` and `../examples/cpp/putgetremove`, respectively. 
+The examples are located in `examples/cpp/putgetremove`.
 
-Both examples perform the same sequence of operations, displaying simple log entries as they run.
+The example performs a sequence of operations, displaying simple log entries as they run.
+
+- To run the example, follow the instructions in the `README.md` file in the example directory.
 
-- To run an example, follow the instructions in the `README.md` file in the example directory.
 - Review the source code in the example directory to see exactly how it operates.
 
 - Begin by running a script that sets up the server-side environment by invoking `gfsh` commands to create a region, simply called "example_userinfo."
@@ -37,55 +38,7 @@ Both examples perform the same sequence of operations, displaying simple log ent
   - Uses region get to retrieve the values
   - Uses region remove to remove the values
 
-### .NET Example
-
-This section contains code snippets showing highlights of the .NET put/get/remove example. They are not intended for cut-and-paste execution.
-For the complete source, see the example source directory.
-
-The .NET example creates a cache, then uses it to create a connection pool and a region object (of class `IRegion`).
-
-```csharp
-   var cacheFactory = new CacheFactory()
-       .Set("log-level", "none");
-   var cache = cacheFactory.Create();
-
-   var poolFactory = cache.GetPoolFactory()
-       .AddLocator("localhost", 10334);
-   poolFactory.Create("pool");
-
-   var regionFactory = cache.CreateRegionFactory(RegionShortcut.PROXY)
-       .SetPoolName("pool");
-   var region = regionFactory.Create<string, string("example_userinfo");
-```
-
-After declaring some keys and values, the client then populates the data store with two key/value pairs. 
-
-```csharp
-      region.Put(rtimmonsKey, rtimmonsValue);
-      region.Put(scharlesKey, scharlesValue);
-```
-
-Next, the application retrieves the stored values using `Get` operations.
-
-```csharp
-      var user1 = region.Get(rtimmonsKey, null);
-      var user2 = region.Get(scharlesKey, null);
-```
-
-Finally, the application deletes one of the stored values using the `Remove` method.
-
-```csharp
-      if (region.Remove(rtimmonsKey))
-      {
-        Console.WriteLine("Info for " + rtimmonsKey + " has been deleted");
-      }
-      else
-      {
-        Console.WriteLine("Info for " + rtimmonsKey + " has not been deleted");
-      }
-```
-
-### C++ Example
+## <a id="put-get-remove-example-code"></a>Put/Get/Remove Example Code
 
 This section contains code snippets showing highlights of the C++ put/get/remove example. They are not intended for cut-and-paste execution.
 For the complete source, see the example source directory.
diff --git a/docs/geode-native-docs/images/SQLite_Persistence_Mgr.png b/docs/geode-native-docs-cpp/images/SQLite_Persistence_Mgr.png
similarity index 100%
copy from docs/geode-native-docs/images/SQLite_Persistence_Mgr.png
copy to docs/geode-native-docs-cpp/images/SQLite_Persistence_Mgr.png
diff --git a/docs/geode-native-docs/images/client-cache-plugins-run.png b/docs/geode-native-docs-cpp/images/client-cache-plugins-run.png
similarity index 100%
copy from docs/geode-native-docs/images/client-cache-plugins-run.png
copy to docs/geode-native-docs-cpp/images/client-cache-plugins-run.png
diff --git a/docs/geode-native-docs/images/delta-propagation.png b/docs/geode-native-docs-cpp/images/delta-propagation.png
similarity index 100%
copy from docs/geode-native-docs/images/delta-propagation.png
copy to docs/geode-native-docs-cpp/images/delta-propagation.png
diff --git a/docs/geode-native-docs/preserving-data/app-ops-during-int-reg.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/app-ops-during-int-reg.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/app-ops-during-int-reg.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/app-ops-during-int-reg.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/client-side-config.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/client-side-config.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/client-side-config.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/client-side-config.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/config-durable-interest-keys.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/config-durable-interest-keys.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/config-durable-interest-keys.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/config-durable-interest-keys.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/config-durable-reconnect.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/config-durable-reconnect.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/config-durable-reconnect.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/config-durable-reconnect.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/configuring-durable-nc.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/configuring-durable-nc.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/configuring-durable-nc.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/configuring-durable-nc.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/configuring-nc-ha.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/configuring-nc-ha.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/configuring-nc-ha.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/configuring-nc-ha.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/disconnecting-from-server.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/disconnecting-from-server.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/disconnecting-from-server.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/disconnecting-from-server.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/disconnection.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/disconnection.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/disconnection.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/disconnection.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/durable-client-life-cycle.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/durable-client-life-cycle.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/durable-client-life-cycle.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/durable-client-life-cycle.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/durable-client-messaging-req.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/durable-client-messaging-req.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/durable-client-messaging-req.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/durable-client-messaging-req.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/durable-client-messaging.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/durable-client-messaging.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/durable-client-messaging.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/durable-client-messaging.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/durable-message-replay.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/durable-message-replay.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/durable-message-replay.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/durable-message-replay.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/high-availability-client-server.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/high-availability-client-server.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/high-availability-client-server.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/high-availability-client-server.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/impl-cache-listeners-durable-clients.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/impl-cache-listeners-durable-clients.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/impl-cache-listeners-durable-clients.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/impl-cache-listeners-durable-clients.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/initial-operation.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/initial-operation.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/initial-operation.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/initial-operation.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/preserving-data.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/preserving-data.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/preserving-data.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/preserving-data.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/reconnection.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/reconnection.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/reconnection.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/reconnection.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/sending-cache-ready-message.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/sending-cache-ready-message.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/sending-cache-ready-message.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/sending-cache-ready-message.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/sending-periodic-ack.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/sending-periodic-ack.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/sending-periodic-ack.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/sending-periodic-ack.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/using-queue-conflation.html.md.erb b/docs/geode-native-docs-cpp/preserving-data/using-queue-conflation.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/preserving-data/using-queue-conflation.html.md.erb
copy to docs/geode-native-docs-cpp/preserving-data/using-queue-conflation.html.md.erb
diff --git a/docs/geode-native-docs/regions/consistency-checking-in-regions.html.md.erb b/docs/geode-native-docs-cpp/regions/consistency-checking-in-regions.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/regions/consistency-checking-in-regions.html.md.erb
copy to docs/geode-native-docs-cpp/regions/consistency-checking-in-regions.html.md.erb
diff --git a/docs/geode-native-docs/regions/region-attributes.html.md.erb b/docs/geode-native-docs-cpp/regions/region-attributes.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/regions/region-attributes.html.md.erb
copy to docs/geode-native-docs-cpp/regions/region-attributes.html.md.erb
diff --git a/docs/geode-native-docs/regions/regions.html.md.erb b/docs/geode-native-docs-cpp/regions/regions.html.md.erb
similarity index 90%
copy from docs/geode-native-docs/regions/regions.html.md.erb
copy to docs/geode-native-docs-cpp/regions/regions.html.md.erb
index 6940bb4..4b6b0bb 100644
--- a/docs/geode-native-docs/regions/regions.html.md.erb
+++ b/docs/geode-native-docs-cpp/regions/regions.html.md.erb
@@ -60,24 +60,6 @@ auto clientRegion1 = cache.createRegionFactory(RegionShortcut::PROXY)
   .create("clientRegion1");
 ```
 
-### .NET C# Region Creation Example
-
-This example illustrates how to create a pair of regions using C#:
-
-``` csharp
-var cache = new CacheFactory().Create();
-
-var examplePool = cache.GetPoolManager()
-    .CreateFactory()
-    .AddLocator("localhost", 40404)
-    .SetSubscriptionEnabled(true)
-    .Create("examplePool");
-
-var clientRegion1 = cache.CreateRegionFactory(RegionShortcut.PROXY)
-  .SetPoolName("examplePool")
-  .Create("clientRegion1");
-```
-
 ## <a id="declarative-region-creation"></a>Declarative Region Creation
 
 Declarative region creation involves placing the region's XML declaration, with the appropriate
@@ -121,9 +103,7 @@ removes the region and all of its contents from the cache.
 <a id="invalidating-region__section_6F7E304D1D5743F1B53FCBD4F82651D0"></a>
 You can execute these operations explicitly in the local cache in the following ways:
 
--   Through direct API calls from the client.
-  - .NET : Apache::Geode::Client::IRegion<TKey, TValue >::InvalidateRegion()
-  - C++ : apache::geode::client::Region:invalidateRegion()
+-   Through direct API calls from the client using `apache::geode::client::Region:invalidateRegion()`
 -   Through expiration activities based on the region's statistics and attribute settings.
 
 In either case, you can perform invalidation and destruction as a local or a distributed operation.
@@ -161,6 +141,6 @@ A region name *cannot* contain these characters:
 
 ## <a id="getting-region-size"></a>Getting the Region Size
 
-The `Region` API provides a `size` method (`Size` property for .NET) that gets the size of a region.
+The `Region` API provides a `size` method that gets the size of a region.
 For client regions, this gives the number of entries in the local cache, not on the servers.
 See the `Region` API documentation for details.
diff --git a/docs/geode-native-docs/regions/registering-interest-for-entries.html.md.erb b/docs/geode-native-docs-cpp/regions/registering-interest-for-entries.html.md.erb
similarity index 93%
copy from docs/geode-native-docs/regions/registering-interest-for-entries.html.md.erb
copy to docs/geode-native-docs-cpp/regions/registering-interest-for-entries.html.md.erb
index dfc570b..2fe0de3 100644
--- a/docs/geode-native-docs/regions/registering-interest-for-entries.html.md.erb
+++ b/docs/geode-native-docs-cpp/regions/registering-interest-for-entries.html.md.erb
@@ -28,7 +28,7 @@ You can register interest for specific entry keys or for all keys. Regular expre
 
 ## <a id="registering-interest-for-entries__section_C9A3D7F193B24ACD83B2D67813E596A0" class="no-quick-link"></a>Client API for Registering Interest
 
-You register client interest through the C++ or NET API. The C++ API provides the `registerKeys`, `registerAllKeys`, and `registerRegex` methods, with corresponding unregistration accomplished using the `unregisterKeys`, `unregisterAllKeys`, and `unregisterRegex` methods. The .NET API provides the `RegisterKeys`, `RegisterAllKeys`, and `RegisterRegex` methods, with corresponding unregistration accomplished using the `UnregisterKeys`, `UnregisterAllKeys`, and `UnregisterRegex` methods.
+You register client interest through the C++ API. The C++ API provides the `registerKeys`, `registerAllKeys`, and `registerRegex` methods, with corresponding unregistration accomplished using the `unregisterKeys`, `unregisterAllKeys`, and `unregisterRegex` methods.
 
 The `registerKeys`, `registerRegex` and `registerAllKeys` methods have the option to populate the cache with the registration results from the server. The `registerRegex` and `registerAllKeys` methods can also optionally return the current list of keys registered on the server.
 
diff --git a/docs/geode-native-docs/remote-queries.html.md.erb b/docs/geode-native-docs-cpp/remote-queries.html.md.erb
similarity index 77%
copy from docs/geode-native-docs/remote-queries.html.md.erb
copy to docs/geode-native-docs-cpp/remote-queries.html.md.erb
index 60d064f..b46f9fd 100644
--- a/docs/geode-native-docs/remote-queries.html.md.erb
+++ b/docs/geode-native-docs-cpp/remote-queries.html.md.erb
@@ -59,13 +59,9 @@ managing the compilation and execution of queries, and for retrieving an existin
 
 A `Query` is obtained from a `QueryService`, which is obtained from one of two sources:
 
-- To create a `Query` that operates on the <%=vars.product_name%> server, start with a `QueryService` obtained from a `Pool`.
-  - For .NET, use `Apache::Geode::Client::Pool::GetQueryService()`.
-  - For C++, use ` apache::geode::client::Pool::getQueryService()`.
+- To create a `Query` that operates on the <%=vars.product_name%> server, use `apache::geode::client::Pool::getQueryService()` to instantiate a `QueryService` obtained from a `Pool`.
 
-- To create a `Query` that operates on your application's local cache, start with a `QueryService` obtained from a `Cache`.
-  - For .NET, use `Apache::Geode::Client::Cache::GetQueryService()`.
-  - For C++, use ` apache::geode::client::Cache::getQueryService()`.
+- To create a `Query` that operates on your application's local cache, use `apache::geode::client::Cache::getQueryService()` to instantiate a `QueryService` obtained from a `Cache`.
 
 ### <a id="ExecutingAQuery"></a>Executing a Query from the Client
 
@@ -77,36 +73,6 @@ The essential steps to create and execute a query are:
    remotely evaluates the query string and returns the results to the client.
 1.  Iterate through the returned objects.
 
-### <a id="DotNetQueryExample"></a>.NET Query Example
-
-These C# code excerpts are from the `examples\dotnet\remotequery` example included in your client
-distribution. See the example for full context.
-
-Following the steps listed above,
-
-  1. Obtain a `QueryService` object from the connection pool:
-
-    ```
-    var queryService = pool.GetQueryService();
-    ```
-
-  1. Create a `Query` object by calling `QueryService.NewQuery()`, specifying your OQL query as a string parameter:
-
-    ```
-    var query = queryService.NewQuery<Order>("SELECT * FROM /custom_orders WHERE quantity > 30");
-    ```
-
-  1. Execute the query. Collect the query output, returned as either a `ResultSet` or a `StructSet`, and iterate through the results:
-
-    ```
-    var queryResults = query.Execute();
-
-    foreach (Order value in queryResults)
-    {
-      Console.WriteLine(value.ToString());
-    }
-    ```
-
 ### <a id="CppQueryExample"></a>C++ Query Example
 
 These C++ code excerpts are from the `examples/cpp/remotequery` example included in your client
diff --git a/docs/geode-native-docs/security/SampleAuth.cpp b/docs/geode-native-docs-cpp/security/SampleAuth.cpp
similarity index 100%
copy from docs/geode-native-docs/security/SampleAuth.cpp
copy to docs/geode-native-docs-cpp/security/SampleAuth.cpp
diff --git a/docs/geode-native-docs/security/SampleAuth.cs b/docs/geode-native-docs-cpp/security/SampleAuth.cs
similarity index 100%
copy from docs/geode-native-docs/security/SampleAuth.cs
copy to docs/geode-native-docs-cpp/security/SampleAuth.cs
diff --git a/docs/geode-native-docs/security/authentication.html.md.erb b/docs/geode-native-docs-cpp/security/authentication.html.md.erb
similarity index 66%
copy from docs/geode-native-docs/security/authentication.html.md.erb
copy to docs/geode-native-docs-cpp/security/authentication.html.md.erb
index ac774c5..483e566 100644
--- a/docs/geode-native-docs/security/authentication.html.md.erb
+++ b/docs/geode-native-docs-cpp/security/authentication.html.md.erb
@@ -25,49 +25,6 @@ For details on the server's role in authentication and what it expects from the
 In your application, authentication credentials must be set when creating the cache. In practice,
 this means setting the authentication credentials when you create the CacheFactory.
 
-### .NET Authentication Example
-
-The following excerpt is taken from the .NET example provided with your Native Client distribution in the `../examples/dotnet/authinitialize` directory.
-
-In this C# authentication example, the `CacheFactory` creation process sets the authentication callback:
-
-```cs
-  var cacheFactory = new CacheFactory()
-    .Set("log-level", "none")
-    .SetAuthInitialize(new ExampleAuthInitialize());
-```
-
-Credentials are implemented in the `GetCredentials` member function of the `ExampleAuthInitialize` class, which implements the `IAuthInitialize` interface:
-
-```cs
-  class ExampleAuthInitialize : IAuthInitialize
-  {
-    public ExampleAuthInitialize()
-    {
-      // TODO initialize your resources here
-      Console.Out.WriteLine("ExampleAuthInitialize::ExampleAuthInitialize called");
-    }
-
-    public void Close()
-    {
-      // TODO close your resources here
-      Console.Out.WriteLine("ExampleAuthInitialize::Close called");
-    }
-
-    public Properties<string, object> GetCredentials(Properties<string, string> props, string server)
-    {
-      // TODO get your username and password
-      Console.Out.WriteLine("ExampleAuthInitialize::GetCredentials called");
-
-      var credentials = new Properties<string, object>();
-      credentials.Insert("security-username", "root");
-      credentials.Insert("security-password", "root");
-      return credentials;
-    }
-  }
-
-```
-
 ### C++ Authentication Example
 
 In this C++ authentication example, the `CacheFactory` creation process sets the authentication callback:
diff --git a/docs/geode-native-docs/security/security-systemprops.html.md.erb b/docs/geode-native-docs-cpp/security/security-systemprops.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/security/security-systemprops.html.md.erb
copy to docs/geode-native-docs-cpp/security/security-systemprops.html.md.erb
diff --git a/docs/geode-native-docs/security/security.html.md.erb b/docs/geode-native-docs-cpp/security/security.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/security/security.html.md.erb
copy to docs/geode-native-docs-cpp/security/security.html.md.erb
diff --git a/docs/geode-native-docs/security/sslclientserver.html.md.erb b/docs/geode-native-docs-cpp/security/sslclientserver.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/security/sslclientserver.html.md.erb
copy to docs/geode-native-docs-cpp/security/sslclientserver.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/data-as-blob.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/data-as-blob.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/data-as-blob.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/data-as-blob.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/object-graphs.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/object-graphs.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/object-graphs.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/object-graphs.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/pdx-ignore-unread-fields.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-ignore-unread-fields.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/pdx-ignore-unread-fields.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-ignore-unread-fields.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/pdx-serialization.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-serialization.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/pdx-serialization.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-serialization.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/pdx-with-delta-propagation.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-with-delta-propagation.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/pdx-with-delta-propagation.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/pdx-with-delta-propagation.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/pdxserializable-example.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdxserializable-example.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/pdxserializable-example.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/pdxserializable-example.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/pdxserializable-interface.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/pdxserializable-interface.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/pdxserializable-interface.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/pdxserializable-interface.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/performing-ops-with-pdx-object.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/performing-ops-with-pdx-object.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/performing-ops-with-pdx-object.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/performing-ops-with-pdx-object.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/serialization-options.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/serialization-options.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/serialization-options.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/serialization-options.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/serialization-overview.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/serialization-overview.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/serialization-overview.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/serialization-overview.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/serialization-using-serializable.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/serialization-using-serializable.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/serialization-using-serializable.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/serialization-using-serializable.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/using-enum-type-with-pdx.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/using-enum-type-with-pdx.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/using-enum-type-with-pdx.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/using-enum-type-with-pdx.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/using-pdxinstance.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxinstance.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/using-pdxinstance.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxinstance.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/using-pdxinstancefactory.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxinstancefactory.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/using-pdxinstancefactory.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxinstancefactory.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/using-pdxserialization.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxserialization.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/using-pdxserialization.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxserialization.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/using-pdxserializer.html.md.erb b/docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxserializer.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/cpp-serialization/using-pdxserializer.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/cpp-serialization/using-pdxserializer.html.md.erb
diff --git a/docs/geode-native-docs/serialization/data-serialization.html.md.erb b/docs/geode-native-docs-cpp/serialization/data-serialization.html.md.erb
similarity index 63%
copy from docs/geode-native-docs/serialization/data-serialization.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/data-serialization.html.md.erb
index 41643f7..8a7f443 100644
--- a/docs/geode-native-docs/serialization/data-serialization.html.md.erb
+++ b/docs/geode-native-docs-cpp/serialization/data-serialization.html.md.erb
@@ -30,7 +30,7 @@ To learn more about other serialization options, see the [Data Serialization sec
 <a id="implementing_pdxsbl_class"></a>
 ## Implementing a PdxSerializable Custom Class
 
-PdxSerializable provides custom serialization to an individual class. Fields within an object can be serialized separately from the rest of the class.
+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.
@@ -38,16 +38,15 @@ application, with no need to create corresponding code on the <%=product_name%>
 <a id="setup_pdxsbl_class"></a>
 ### Setup
 
-PdxSerializable provides custom serialization to an individual class. Fields within an object can be serialized separately from the rest of the class.
+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 or the C++ PdxSerializable interface.
+- The custom class must inherit from the C++ PdxSerializable interface.
 
 - You must provide serialization instructions for objects of the custom class. Specifically:
 
-  -  You must implement the `ToData()` and `FromData()` methods for .NET applications, or the `toData()` and
-  `fromData()` methods in C++ applications.
+  -  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
@@ -57,10 +56,10 @@ Setting up a custom class for PdxSerializable treatment requires some preparator
 <a id="pdxsbl_examples"></a>
 ## PdxSerializable Examples
 
-The native client release contains examples, written for .NET and C++, showing how a client application
-can register for serialization of custom objects using the .NET IPdxSerializable interface or the C++ PdxSerializable interface.
+The native client release contains examples showing how a client application
+can register for serialization of custom objects using the C++ PdxSerializable interface.
 
-The examples are located in `examples\dotnet\pdxserializable` and `examples/cpp/pdxserializable`, respectively. 
+The examples are located in `examples/cpp/pdxserializable`.
 
 The examples define the serializable class, `Orders`, including its serialization and deserialization methods and its factory method.
 Once these pieces are in place, execution is simple: the main routine of the example registers the serializable class then performs some put and get operations.
@@ -68,7 +67,7 @@ Once these pieces are in place, execution is simple: the main routine of the exa
 <a id="pdxsbl_execution"></a>
 ### Execution
 
-Both examples perform the same sequence of operations, displaying simple log entries as they run.
+The example performs a sequence of operations, displaying simple log entries as they run.
 
 - To run an example, follow the instructions in the README.md file in the example directory.
 - Review the source code in the example directory to see exactly how it operates.
@@ -83,106 +82,6 @@ Both examples perform the same sequence of operations, displaying simple log ent
   - Stores orders
   - Retrieves orders
 
-
-<a id="pdsxbl_dotnet_example"></a>
-### .NET Example
-
-This section contains code snippets showing highlights of the .NET PdxSerializable example. They are not intended for cut-and-paste execution.
-For the complete source, see the example source directory.
-
-The .NET example defines a PdxSerializable class called `Order` that inherits from the `IPdxSerializable` interface.
-An `Order` object contains three fields:
-
-- an integer `order_id`
-- a string `name`
-- a short-int `quantity`
-
-From Order.cs:
-
-```csharp
-  public class Order : IPdxSerializable
-  {
-    ...
-    public long OrderId { get; set; }
-    public string Name { get; set; }
-    public short Quantity { get; set; }
-```
-
-Using the `IPdxSerializable` read and write methods, the `Order` class defines `ToData()` and `FromData()`
-methods that perform the serialization and deserialization operations, respectively, and the `CreateDeserializable()` factory method:
-
-From Order.cs:
-
-```csharp
-    public void ToData(IPdxWriter output)
-    {
-      output.WriteLong(ORDER_ID_KEY_, OrderId);
-      output.MarkIdentityField(ORDER_ID_KEY_);
-
-      output.WriteString(NAME_KEY_, Name);
-      output.MarkIdentityField(NAME_KEY_);
-
-      output.WriteInt(QUANTITY_KEY_, Quantity);
-      output.MarkIdentityField(QUANTITY_KEY_);
-    }
-
-    public void FromData(IPdxReader input)
-    {
-      OrderId = input.ReadLong(ORDER_ID_KEY_);
-      Name = input.ReadString(NAME_KEY_);
-      Quantity = (short)input.ReadInt(QUANTITY_KEY_);
-    }
-
-    public static IPdxSerializable CreateDeserializable()
-    {
-      return new Order();
-    }
-```
-
-The .NET example mainline creates a cache, then uses it to register the PdxSerializable class that was created in Orders.cs:
-
-```csharp
-   var cacheFactory = new CacheFactory()
-       .Set("log-level", "none");
-   var cache = cacheFactory.Create();
-
-   cache.TypeRegistry.RegisterPdxType(Order.CreateDeserializable);
-```
-
-The client creates a connection pool and a region named "example_orderobject":
-
-```csharp
-   var poolFactory = cache.GetPoolFactory()
-       .AddLocator("localhost", 10334);
-   poolFactory.Create("pool");
-
-   var regionFactory = cache.CreateRegionFactory(RegionShortcut.PROXY)
-        .SetPoolName("pool");
-   var orderRegion = regionFactory.Create<int, Order>("example_orderobject");
-```
-
-After declaring some keys and values, the client then stores and retrieves an `Order` object:
-
-```csharp
-    const int orderKey = 65;
-
-    var order = new Order(orderKey, "Donuts", 12);
-
-    Console.WriteLine("order to put is " + order);
-    orderRegion.Put(orderKey, order, null);
-
-    Console.WriteLine("Successfully put order, getting now...");
-    var orderRetrieved = orderRegion.Get(orderKey, null);
-
-    Console.WriteLine("Order key: " + orderKey + " = " + orderRetrieved);
-```
-
-Finally, the application closes the cache:
-
-```csharp
-    cache.Close();
-```
-
 <a id="pdxsbl_cpp_example"></a>
 ### C++ Example
 
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/custom-class-igfserializable.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/custom-class-igfserializable.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/custom-class-igfserializable.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/custom-class-igfserializable.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/dotnet-data-serialization-options.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/dotnet-data-serialization-options.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/dotnet-data-serialization-options.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/dotnet-data-serialization-options.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/dotnet-data-serialization.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/dotnet-data-serialization.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/dotnet-data-serialization.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/dotnet-data-serialization.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/dotnet-pdx-autoserializer.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/dotnet-pdx-autoserializer.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/dotnet-pdx-autoserializer.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/dotnet-pdx-autoserializer.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/dotnet-pdx-serialization-features.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/dotnet-pdx-serialization-features.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/dotnet-pdx-serialization-features.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/dotnet-pdx-serialization-features.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/extending-pdx-autoserializer.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/extending-pdx-autoserializer.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/extending-pdx-autoserializer.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/extending-pdx-autoserializer.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/how-igfserializable-works.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/how-igfserializable-works.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/how-igfserializable-works.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/how-igfserializable-works.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/implementing-igfserializable.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/implementing-igfserializable.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/implementing-igfserializable.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/implementing-igfserializable.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/mapping-dotnet-domain-type-names.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/mapping-dotnet-domain-type-names.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/mapping-dotnet-domain-type-names.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/mapping-dotnet-domain-type-names.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/programming-ipdxinstance.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/programming-ipdxinstance.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/programming-ipdxinstance.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/programming-ipdxinstance.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/registering-the-type.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/registering-the-type.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/registering-the-type.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/registering-the-type.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/serializable-types.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/serializable-types.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/serializable-types.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/serializable-types.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/serialize-using-igfserializable.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/serialize-using-igfserializable.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/serialize-using-igfserializable.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/serialize-using-igfserializable.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/serialize-using-ipdxserializable.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/serialize-using-ipdxserializable.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/serialize-using-ipdxserializable.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/serialize-using-ipdxserializable.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/serializing-domain-objects.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/serializing-domain-objects.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/serializing-domain-objects.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/serializing-domain-objects.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/using-ipdxinstancefactory.html.md.erb b/docs/geode-native-docs-cpp/serialization/dotnet-serialization/using-ipdxinstancefactory.html.md.erb
similarity index 100%
copy from docs/geode-native-docs/serialization/dotnet-serialization/using-ipdxinstancefactory.html.md.erb
copy to docs/geode-native-docs-cpp/serialization/dotnet-serialization/using-ipdxinstancefactory.html.md.erb
diff --git a/docs/geode-native-docs/transactions.html.md.erb b/docs/geode-native-docs-cpp/transactions.html.md.erb
similarity index 72%
copy from docs/geode-native-docs/transactions.html.md.erb
copy to docs/geode-native-docs-cpp/transactions.html.md.erb
index 9ae445b..b1950a9 100644
--- a/docs/geode-native-docs/transactions.html.md.erb
+++ b/docs/geode-native-docs-cpp/transactions.html.md.erb
@@ -29,11 +29,6 @@ For complete information about how transactions are conducted on the <%=vars.pro
 The API for distributed transactions has the familiar relational database methods, `begin`,
 `commit`, and `rollback`. There are also APIs available to suspend and resume transactions.
 
-The .NET classes for executing transactions are:
-
--   `Apache.Geode.Client.CacheTransactionManager`
--   `Apache.Geode.Client.TransactionId`
-
 The C++ classes for executing transactions are:
 
 -   `apache.geode.client.CacheTransactionManager`
@@ -61,10 +56,9 @@ code throws a `TransactionException`.
 
 ## <a id="nc-transaction-examples"></a>Client Transaction Examples
 
-The native client release contains transaction examples written for .NET and C++. The examples are
-located in `../examples/dotnet/transaction` and `../examples/cpp/transaction`, respectively. 
+The native client release contains a transaction example in `../examples/cpp/transaction`.
 
-Both examples perform the same sequence of operations, displaying simple log entries as they run.
+The example performs a sequence of operations, displaying simple log entries as they run.
 
 - To run an example, follow the instructions in the `README.md` file in the example directory.
 - Review the source code in the example directory to see exactly how it operates.
@@ -86,63 +80,6 @@ treated as unsuccessful. The transaction is retried until it succeeds.
   - In case the transaction repeatedly fails, the retry loop uses a counter to set a limit of 5 retries.
 
 
-### <a id="dotnet-example"></a>.NET Example
-
-This section contains code snippets showing highlights of the .NET transaction example. They are not intended for cut-and-paste execution.
-For the complete source, see the example source directory.
-
-The .NET example creates a cache, then uses it to create a connection pool.
-
-```csharp
-   var cache = new CacheFactory()
-       .Set("log-level", "none").Create();
-
-   var poolFactory = cache.GetPoolFactory()
-       .AddLocator("localhost", 10334);
-      
-   poolFactory.Create("pool");
-
-   var regionFactory = cache.CreateRegionFactory(RegionShortcut.PROXY)
-       .SetPoolName("pool");
-   var region = regionFactory.Create<string, int>("exampleRegion");
-```
-
-The example application gets a transaction manager from the cache and begins a transaction.
-
-```csharp
-       cache.CacheTransactionManager.Begin();
-```
-
-Within the transaction, the client populates data store with 10 values associated with Key1 - Key10.
-
-```csharp
-       foreach(var key in keys)
-       {
-         var value = getValueFromExternalSystem();
-         region.Put(key, value);
-       }
-```
-
-If all `put` operations succeed, the application commits the transaction. Otherwise, it retries up to 5 times if necessary.
-
-```csharp
-   var retries = 5;
-   while(retries-- > 0)
-   {
-     try 
-     {
-       ... // PUT OPERATIONS ...
-       cache.CacheTransactionManager.Commit();
-       Console.WriteLine("Committed transaction - exiting");
-       break;
-     } catch
-     {
-       cache.CacheTransactionManager.Rollback();
-       Console.WriteLine("Rolled back transaction - retrying({0})", retries);
-     }
-   }
-```
-
 ### <a id="cpp-example"></a>C++ Example
 
 This section contains code snippets showing highlights of the C++ transaction example. They are not intended for cut-and-paste execution.
diff --git a/docs/geode-native-docs/about-client-users-guide.html.md.erb b/docs/geode-native-docs-dotnet/about-client-users-guide.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/about-client-users-guide.html.md.erb
rename to docs/geode-native-docs-dotnet/about-client-users-guide.html.md.erb
diff --git a/docs/geode-native-docs/client-cache-ref.html.md.erb b/docs/geode-native-docs-dotnet/client-cache-ref.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/client-cache-ref.html.md.erb
rename to docs/geode-native-docs-dotnet/client-cache-ref.html.md.erb
diff --git a/docs/geode-native-docs/common/images/10-Continuous_Querying-1.gif b/docs/geode-native-docs-dotnet/common/images/10-Continuous_Querying-1.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/10-Continuous_Querying-1.gif
rename to docs/geode-native-docs-dotnet/common/images/10-Continuous_Querying-1.gif
diff --git a/docs/geode-native-docs/common/images/10-Continuous_Querying-3.gif b/docs/geode-native-docs-dotnet/common/images/10-Continuous_Querying-3.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/10-Continuous_Querying-3.gif
rename to docs/geode-native-docs-dotnet/common/images/10-Continuous_Querying-3.gif
diff --git a/docs/geode-native-docs/common/images/6-DotNet_API-1.gif b/docs/geode-native-docs-dotnet/common/images/6-DotNet_API-1.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/6-DotNet_API-1.gif
rename to docs/geode-native-docs-dotnet/common/images/6-DotNet_API-1.gif
diff --git a/docs/geode-native-docs/common/images/7-Preserving_Data-2.gif b/docs/geode-native-docs-dotnet/common/images/7-Preserving_Data-2.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/7-Preserving_Data-2.gif
rename to docs/geode-native-docs-dotnet/common/images/7-Preserving_Data-2.gif
diff --git a/docs/geode-native-docs/common/images/client-cache-data-flow.gif b/docs/geode-native-docs-dotnet/common/images/client-cache-data-flow.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/client-cache-data-flow.gif
rename to docs/geode-native-docs-dotnet/common/images/client-cache-data-flow.gif
diff --git a/docs/geode-native-docs/common/images/client-cache-plugins-run.gif b/docs/geode-native-docs-dotnet/common/images/client-cache-plugins-run.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/client-cache-plugins-run.gif
rename to docs/geode-native-docs-dotnet/common/images/client-cache-plugins-run.gif
diff --git a/docs/geode-native-docs/common/images/client-overview.gif b/docs/geode-native-docs-dotnet/common/images/client-overview.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/client-overview.gif
rename to docs/geode-native-docs-dotnet/common/images/client-overview.gif
diff --git a/docs/geode-native-docs/common/images/client-server-arch.gif b/docs/geode-native-docs-dotnet/common/images/client-server-arch.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/client-server-arch.gif
rename to docs/geode-native-docs-dotnet/common/images/client-server-arch.gif
diff --git a/docs/geode-native-docs/common/images/data-dep-func-from-client.gif b/docs/geode-native-docs-dotnet/common/images/data-dep-func-from-client.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/data-dep-func-from-client.gif
rename to docs/geode-native-docs-dotnet/common/images/data-dep-func-from-client.gif
diff --git a/docs/geode-native-docs/common/images/data-dep-func-with-filter.gif b/docs/geode-native-docs-dotnet/common/images/data-dep-func-with-filter.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/data-dep-func-with-filter.gif
rename to docs/geode-native-docs-dotnet/common/images/data-dep-func-with-filter.gif
diff --git a/docs/geode-native-docs/common/images/data-indep-func-from-client.gif b/docs/geode-native-docs-dotnet/common/images/data-indep-func-from-client.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/data-indep-func-from-client.gif
rename to docs/geode-native-docs-dotnet/common/images/data-indep-func-from-client.gif
diff --git a/docs/geode-native-docs/common/images/delta-propagation-in-client-server.gif b/docs/geode-native-docs-dotnet/common/images/delta-propagation-in-client-server.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/delta-propagation-in-client-server.gif
rename to docs/geode-native-docs-dotnet/common/images/delta-propagation-in-client-server.gif
diff --git a/docs/geode-native-docs/common/images/ha-data-dep-func.gif b/docs/geode-native-docs-dotnet/common/images/ha-data-dep-func.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/ha-data-dep-func.gif
rename to docs/geode-native-docs-dotnet/common/images/ha-data-dep-func.gif
diff --git a/docs/geode-native-docs/common/images/security-client-connections.gif b/docs/geode-native-docs-dotnet/common/images/security-client-connections.gif
similarity index 100%
rename from docs/geode-native-docs/common/images/security-client-connections.gif
rename to docs/geode-native-docs-dotnet/common/images/security-client-connections.gif
diff --git a/docs/geode-native-docs/configuring/config-client-cache.html.md.erb b/docs/geode-native-docs-dotnet/configuring/config-client-cache.html.md.erb
similarity index 97%
rename from docs/geode-native-docs/configuring/config-client-cache.html.md.erb
rename to docs/geode-native-docs-dotnet/configuring/config-client-cache.html.md.erb
index c63539d..c111dfc 100644
--- a/docs/geode-native-docs/configuring/config-client-cache.html.md.erb
+++ b/docs/geode-native-docs-dotnet/configuring/config-client-cache.html.md.erb
@@ -32,6 +32,5 @@ Regions are created from `Cache` instances. Regions provide the entry points to
 instances of `Region` and `RegionEntry`.
 
 For more information specific to your client programming language, see the
-[C++ Client API](cppdocs) or the
 [.NET Client API](dotnetdocs).
 
diff --git a/docs/geode-native-docs/configuring/configuration.html.md.erb b/docs/geode-native-docs-dotnet/configuring/configuration.html.md.erb
similarity index 77%
rename from docs/geode-native-docs/configuring/configuration.html.md.erb
rename to docs/geode-native-docs-dotnet/configuring/configuration.html.md.erb
index 7db11a1..176cbea 100644
--- a/docs/geode-native-docs/configuring/configuration.html.md.erb
+++ b/docs/geode-native-docs-dotnet/configuring/configuration.html.md.erb
@@ -35,31 +35,6 @@ Programmatic configuration enables your client application to dynamically adapt
 In contrast, XML configuration externalizes properties, such as locator addresses and pool
 connection details, so they can be changed without requiring that you recompile your application.
 
-**C++ RegionFactory Example**
-
-The following examples illustrate how to set a region's expiration timeout attribute programmatically and through XML.
-
-Setting a property programmatically:
-
-``` cpp
-    auto regionFactory = cache.createRegionFactory(RegionShortcut::CACHING_PROXY);
-    auto region = regionFactory.setRegionTimeToLive(ExpirationAction::INVALIDATE,
-                    std::chrono::seconds(120))
-         .create("exampleRegion0");
-```
-
-XML equivalent:
-
-``` xml
-  <region name="exampleRegion0" refid="CACHING_PROXY">
-    <region-attributes pool-name="default">
-      <region-time-to-live>
-        <expiration-attributes timeout="120s" action="invalidate"/>
-      </region-time-to-live>
-    </region-attributes>
-  </region>
-```
-
 ## Tables of properties
 
 See [System Properties](sysprops.html) for a list of system properties that can be configured
diff --git a/docs/geode-native-docs/configuring/sysprops.html.md.erb b/docs/geode-native-docs-dotnet/configuring/sysprops.html.md.erb
similarity index 98%
rename from docs/geode-native-docs/configuring/sysprops.html.md.erb
rename to docs/geode-native-docs-dotnet/configuring/sysprops.html.md.erb
index 081ec6a..ae58777 100644
--- a/docs/geode-native-docs/configuring/sysprops.html.md.erb
+++ b/docs/geode-native-docs-dotnet/configuring/sysprops.html.md.erb
@@ -20,9 +20,7 @@ limitations under the License.
 -->
 
 A variety of system properties can be specified when a client connects to a distributed system, either programmatically or in a `geode.properties` file.
-
-- In the [.NET API docs](dotnetdocs), see `Apache::Geode::Client::SystemProperties`.
-- In the [C++ API docs](cppdocs), see `apache::geode::client::SystemProperties`.
+See `Apache::Geode::Client::SystemProperties` in the [.NET API docs](dotnetdocs).
 
 The following settings can be configured:
 
diff --git a/docs/geode-native-docs/configuring/system-level-configuration.html.md.erb b/docs/geode-native-docs-dotnet/configuring/system-level-configuration.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/configuring/system-level-configuration.html.md.erb
rename to docs/geode-native-docs-dotnet/configuring/system-level-configuration.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/about-connection-pools.html.md.erb b/docs/geode-native-docs-dotnet/connection-pools/about-connection-pools.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/connection-pools/about-connection-pools.html.md.erb
rename to docs/geode-native-docs-dotnet/connection-pools/about-connection-pools.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/about-server-locators.html.md.erb b/docs/geode-native-docs-dotnet/connection-pools/about-server-locators.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/connection-pools/about-server-locators.html.md.erb
rename to docs/geode-native-docs-dotnet/connection-pools/about-server-locators.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/client-load-balancing.html.md.erb b/docs/geode-native-docs-dotnet/connection-pools/client-load-balancing.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/connection-pools/client-load-balancing.html.md.erb
rename to docs/geode-native-docs-dotnet/connection-pools/client-load-balancing.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/client-pool-api.html.md.erb b/docs/geode-native-docs-dotnet/connection-pools/client-pool-api.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/connection-pools/client-pool-api.html.md.erb
rename to docs/geode-native-docs-dotnet/connection-pools/client-pool-api.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/configuring-pools-attributes-example.html.md.erb b/docs/geode-native-docs-dotnet/connection-pools/configuring-pools-attributes-example.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/connection-pools/configuring-pools-attributes-example.html.md.erb
rename to docs/geode-native-docs-dotnet/connection-pools/configuring-pools-attributes-example.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/configuring-pools.html.md.erb b/docs/geode-native-docs-dotnet/connection-pools/configuring-pools.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/connection-pools/configuring-pools.html.md.erb
rename to docs/geode-native-docs-dotnet/connection-pools/configuring-pools.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/connection-pools.html.md.erb b/docs/geode-native-docs-dotnet/connection-pools/connection-pools.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/connection-pools/connection-pools.html.md.erb
rename to docs/geode-native-docs-dotnet/connection-pools/connection-pools.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/discovering-locators-dynamically.html.md.erb b/docs/geode-native-docs-dotnet/connection-pools/discovering-locators-dynamically.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/connection-pools/discovering-locators-dynamically.html.md.erb
rename to docs/geode-native-docs-dotnet/connection-pools/discovering-locators-dynamically.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/running-connection-pool-code.html.md.erb b/docs/geode-native-docs-dotnet/connection-pools/running-connection-pool-code.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/connection-pools/running-connection-pool-code.html.md.erb
rename to docs/geode-native-docs-dotnet/connection-pools/running-connection-pool-code.html.md.erb
diff --git a/docs/geode-native-docs/connection-pools/subscription-properties.html.md.erb b/docs/geode-native-docs-dotnet/connection-pools/subscription-properties.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/connection-pools/subscription-properties.html.md.erb
rename to docs/geode-native-docs-dotnet/connection-pools/subscription-properties.html.md.erb
diff --git a/docs/geode-native-docs/continuous-queries.html.md.erb b/docs/geode-native-docs-dotnet/continuous-queries.html.md.erb
similarity index 77%
rename from docs/geode-native-docs/continuous-queries.html.md.erb
rename to docs/geode-native-docs-dotnet/continuous-queries.html.md.erb
index dc787f5..44dd74e 100644
--- a/docs/geode-native-docs/continuous-queries.html.md.erb
+++ b/docs/geode-native-docs-dotnet/continuous-queries.html.md.erb
@@ -49,8 +49,8 @@ Compare this to register interest by reviewing [Registering Interest for Entries
 
 1.  The client creates the CQ. This sets up everything for running the query and provides the client with a `CqQuery` object, but does not execute the CQ. At this point, the query is in a `STOPPED `state, ready to be closed or run.
 2.  The client initiates the CQ with an API call to one of the `CqQuery execute*` methods. This puts the query into a `RUNNING` state on the client and on the server.  The server remotely evaluates the query string, and optionally returns the results to the client. `CqQuery execute*` methods include:
-  - .NET: `CqQuery.Execute()` and `CqQuery.ExecuteWithInitialResults()`
-  - C++: `CqQuery.execute()` and `CqQuery.executeWithInitialResults()`
+  - `CqQuery.Execute()`
+  - `CqQuery.ExecuteWithInitialResults()`
 
 1.  A CQ Listener waits for events. When it receives events, it takes action accordingly with the data in the CqEvent.
 3.  The CQ is closed by a client call to `CqQuery.close`. This de-allocates all resources in use for the CQ on the client and server. At this point, the cycle could begin again with the creation of a new `CqQuery` instance.
@@ -60,7 +60,7 @@ Compare this to register interest by reviewing [Registering Interest for Entries
 The essential steps to create and execute a continuous query are:
 
 1.  Create an instance of the `QueryService` class. If you are using the pool API (recommended), you should obtain the `QueryService` from the pool.
-1.  Define a CQ Listener (in .NET, an `ICqListener`, in C++, a `CqListener`) to field events sent from the server.
+1.  Define a CQ Listener (an `ICqListener`) to field events sent from the server.
 1.  Use one of the `CqQuery execute*` methods to submit the query string to the cache server.
 1.  The server remotely evaluates the query string, then monitors those results and notifies the client if they change.
 1.  The client listens for changes that match the query predicate.
@@ -147,85 +147,3 @@ Following the steps listed above,
     cache.Close();
     ```
 
-### <a id="CppCQExample"></a>C++ Continuous Query Example
-
-These C++ code excerpts are from the `examples/cpp/continuousquery` example included in your client
-distribution. See the example for full context.
-
-Following the steps listed above,
-
-1. Create a query service:
-
-    ```
-    auto queryService = pool->getQueryService();
-    ```
-
-1. Define a CqListener:
-
-    ```
-    class MyCqListener : public CqListener {
-    ```
-
-1. Create an instance of your CqListener and insert it into a CQ attributes object:
-
-    ```
-    CqAttributesFactory cqFactory;
-
-    auto cqListener = std::make_shared<MyCqListener>();
-
-    cqFactory.addCqListener(cqListener);
-    auto cqAttributes = cqFactory.create();
-    ```
-
-1. Create a Continuous Query using the query service and the CQ attributes:
-
-    ```
-      auto query = queryService->newCq(
-	  "MyCq", "SELECT * FROM /custom_orders c WHERE c.quantity > 30",
-	  cqAttributes);
-    ```
-
-1. Execute the query:
-
-    ```
-    query->execute();
-    ```
-
-1. Wait for events and do something with them.
-
-    ```
-	/* Excerpt from the CqListener */
-
-	/* Determine Operation Type */
-	switch (cqEvent.getQueryOperation()) {
-	case CqOperation::OP_TYPE_CREATE:
-	  opStr = "CREATE";
-	  break;
-	case CqOperation::OP_TYPE_UPDATE:
-	  opStr = "UPDATE";
-	  break;
-	case CqOperation::OP_TYPE_DESTROY:
-	  opStr = "DESTROY";
-	  break;
-	default:
-	  break;
-	}
-
-	...
-
-	/* Take action based on OP Type */
-
-    ```
-
-1. When finished, close up shop.
-
-    ```
-    query->execute();
-
-    ... (respond to events as they arrive)
-
-    query->stop();
-    query->close();
-
-    cache.close();
-    ```
diff --git a/docs/geode-native-docs/function-execution.html.md.erb b/docs/geode-native-docs-dotnet/function-execution.html.md.erb
similarity index 70%
rename from docs/geode-native-docs/function-execution.html.md.erb
rename to docs/geode-native-docs-dotnet/function-execution.html.md.erb
index df1d98d..0f10d55 100644
--- a/docs/geode-native-docs/function-execution.html.md.erb
+++ b/docs/geode-native-docs-dotnet/function-execution.html.md.erb
@@ -75,15 +75,11 @@ To handle the results in a custom manner:
     -  `clearResults` is called to clear partial results from the results collector. This is used only for highly available `onRegion` functions where the calling application waits for the results. If the call fails, before <%=vars.product_name%> retries the execution, it calls `clearResults` to ready the instance for a clean set of results.
 2.  Use the `Execution` object in your executing member to call `withCollector`, passing your custom collector.
 
-## <a id="nc-fe-examples"></a>Function Execution Examples
+## <a id="nc-fe-examples"></a>Function Execution Example
 
-The native client release contains examples of function execution written for .NET and
-C++. The examples are located in `../examples/dotnet/functionexecution` and
-`../examples/cpp/functionexecution`, respectively.
+The native client release contains an example of function execution in `../examples/dotnet/functionexecution`.
 
-The two examples share some common elements:
-
-- They begin with a server-side script that runs `gfsh` commands to create a region, simply called "partition_region".
+- The example begins with a server-side script that runs `gfsh` commands to create a region, simply called "partition_region".
 - The function is preloaded with a JAR file containing the server-side Java function code. 
 - The function, called "ExampleMultiGetFunction", is defined in the
 `examples/utilities` directory of your distribution. As its input parameter, the function takes an array of keys,
@@ -103,8 +99,6 @@ The client:
 If the client expects results, it must create a result object.
 The .NET example uses a built-in result collector (`IResultCollector.getResults()`) to retrieve the function results.
 
-The C++ example creates a result variable to hold the results from the collector.
-
 ### <a id="nc-fe-dotnet_example"></a>.NET Example
 This section contains code snippets showing highlights of the .NET function execution example. They are not intended for cut-and-paste execution.
 For the complete source, see the example source directory.
@@ -189,106 +183,3 @@ It then loops through the results and prints the retrieved values.
    }
 ```
 
-### <a id="nc-fe-cpp_example"></a>C++ Example
-This section contains code snippets showing highlights of the C++ function execution example. They are not intended for cut-and-paste execution.
-For the complete source, see the example source directory.
-
-The C++ example creates a cache.
-
-```cpp
-Cache setupCache() {
-  return CacheFactory()
-      .set("log-level", "none")
-      .create();
-}
-```
-
-The example client uses the cache to create a connection pool, 
-
-```cpp
-void createPool(const Cache& cache) {
-  auto pool = cache.getPoolManager()
-      .createFactory()
-      .addServer("localhost", EXAMPLE_SERVER_PORT)
-      .create("pool");
-}
-```
-
-Then, using that pool, the client creates a region with the same characteristics and name as the server-side region (`partition_region`).
-
-```cpp
-std::shared_ptr<Region> createRegion(Cache& cache) {
-  auto regionFactory = cache.createRegionFactory(RegionShortcut::PROXY);
-  auto region = regionFactory.setPoolName("pool").create("partition_region");
-
-  return region;
-}
-```
-
-The sample client populates the server's datastore with values, using the API and some sample key-value pairs.
-
-```cpp
-void populateRegion(const std::shared_ptr<Region>& region) {
-  for (int i = 0; i < keys.size(); i++) {
-    region->put(keys[i], values[i]);
-  }
-}
-```
-
-As confirmation that the data has been stored, the sample client uses the API to retrieve the values and write them to the console.
-This is done without reference to the server-side example function.
-
-```cpp
-std::shared_ptr<CacheableVector> populateArguments() {
-  auto arguments = CacheableVector::create();
-  for (int i = 0; i < keys.size(); i++) {
-    arguments->push_back(CacheableKey::create(keys[i]));
-  }
-  return arguments;
-}
-```
-
-Next, the client retrieves those same values using the server-side example function.
-The client code creates the input parameter, an array of keys whose values are to be retrieved.
-
-```cpp
-std::vector<std::string> executeFunctionOnServer(const std::shared_ptr<Region> region,
-    const std::shared_ptr<CacheableVector> arguments) {
-  std::vector<std::string> resultList;
-```
-
-The client creates an execution object using `Client.FunctionService.OnRegion` and specifying the region.
-
-```cpp
-  auto functionService = FunctionService::onServer(region->getRegionService());
-```
-
-The client then calls the server side function with its input arguments and stores the results in a vector.
-
-```cpp
-  if(auto executeFunctionResult = functionService.withArgs(arguments).execute(getFuncIName)->getResult()) {
-    for (auto &arrayList: *executeFunctionResult) {
-      for (auto &cachedString: *std::dynamic_pointer_cast<CacheableArrayList>(arrayList)) {
-        resultList.push_back(std::dynamic_pointer_cast<CacheableString>(cachedString)->value());
-      }
-    }
-  } else {
-    std::cout << "get executeFunctionResult is NULL\n";
-  }
-
-  return resultList;
-}
-```
-
-It then loops through the results vector and prints the retrieved values.
-
-```cpp
-void printResults(const std::vector<std::string>& resultList) {
-  std::cout << "Result count = " << resultList.size() << std::endl << std::endl;
-  int i = 0;
-  for (auto &cachedString: resultList) {
-    std::cout << "\tResult[" << i << "]=" << cachedString << std::endl;
-    ++i;
-  }
-```
-
diff --git a/docs/geode-native-docs/getting-started/app-dev-walkthrough-cpp.html.md.erb b/docs/geode-native-docs-dotnet/getting-started/app-dev-walkthrough-cpp.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/getting-started/app-dev-walkthrough-cpp.html.md.erb
rename to docs/geode-native-docs-dotnet/getting-started/app-dev-walkthrough-cpp.html.md.erb
diff --git a/docs/geode-native-docs/getting-started/app-dev-walkthrough-dotnet.html.md.erb b/docs/geode-native-docs-dotnet/getting-started/app-dev-walkthrough-dotnet.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/getting-started/app-dev-walkthrough-dotnet.html.md.erb
rename to docs/geode-native-docs-dotnet/getting-started/app-dev-walkthrough-dotnet.html.md.erb
diff --git a/docs/geode-native-docs/getting-started/getting-started-nc-client.html.md.erb b/docs/geode-native-docs-dotnet/getting-started/getting-started-nc-client.html.md.erb
similarity index 75%
rename from docs/geode-native-docs/getting-started/getting-started-nc-client.html.md.erb
rename to docs/geode-native-docs-dotnet/getting-started/getting-started-nc-client.html.md.erb
index 647612c..270b655 100644
--- a/docs/geode-native-docs/getting-started/getting-started-nc-client.html.md.erb
+++ b/docs/geode-native-docs-dotnet/getting-started/getting-started-nc-client.html.md.erb
@@ -11,7 +11,7 @@ To use the <%=vars.product_name%> Native Library for developing <%=vars.product_
 
 ## <a id="set_up_dev_environment"></a>Set Up Your Development Environment
 
-Whether you are developing a C++ or .NET application, you will need some essential tools, such as a compiler and a linker.
+You will need some essential tools, such as a compiler and a linker.
 Your compiler must have access to the Native Client header files, and the linker must have access to the Native Client libraries.
 The header files and libraries are located in the Native Client installation directory.
 
@@ -41,34 +41,6 @@ To connect to a server, your application must follow these steps:
 
 Once the connection pool and the shared region are in place, your client application is ready to share data with the server.
 
-**Server Connection: C++ Example**
-
-This example of connecting to the server is taken from the C++ `put-get-remove` example.
-
-Instantiate a `CacheFactory` and set its characteristics:
-
-``` cpp
-  auto cacheFactory = CacheFactory();             // instantiate cache factory
-  cacheFactory.set("log-level", "none");          // set cache log-level characteristics
-```
-
-Create a cache and use it to instantiate a `PoolFactory`:
-
-``` cpp
-  auto cache = cacheFactory.create();                         // create cache
-  auto poolFactory = cache.getPoolManager().createFactory();  // instantiate pool factory
-
-  poolFactory.addLocator("localhost", 10334);                 // add locator to pool factory
-```
-
-Create a named pool of network connections, and instantiate a region of the desired type:
-
-``` cpp
-  auto pool = poolFactory.create("pool");                     // create a pool called "pool" that knows where the server is
-  auto regionFactory = cache.createRegionFactory(RegionShortcut::PROXY); // instantiate region factory with PROXY characteristics
-  auto region = regionFactory.setPoolName("pool").create("example_userinfo"); // create a connection to the region "example_userinfo" on the server
-```
-
 **Server Connection: .NET Example**
 
 This example of connecting to the server is taken from the .NET `PutGetRemove` example.
@@ -103,12 +75,9 @@ See the _<%=vars.product_name%> User Guide_ section [Configuring a Client/Server
 for more details.
 
 
-### <a id="app_dev_walkthroughs"></a>Application Development Walkthroughs
-
-The application development walkthroughs describe how to set up a native client development environment using CMake.
+### <a id="app_dev_walkthroughs"></a>Application Development Walkthrough
 
-- [C++ App Development Walkthrough](app-dev-walkthrough-cpp.html)
-- [.NET App Development Walkthrough](app-dev-walkthrough-dotnet.html)
+The [.NET App Development Walkthrough](app-dev-walkthrough-dotnet.html) describes how to set up a native client development environment using CMake.
 
 ## <a id="programming_examples"></a>Programming Examples
 
@@ -156,5 +125,5 @@ MyProject/
 See the `BUILD-EXAMPLES.md` file for detailed instructions on building and executing the examples,
 and read the source code to understand how the examples are constructed.
 
-See [Put/Get/Remove Examples](put-get-example.html) for sample code showing the basics of how a client application
+See [Put/Get/Remove Example](put-get-example.html) for sample code showing the basics of how a client application
 connects to a <%=vars.product_name%> cluster and performs basic operations on a remote server.
diff --git a/docs/geode-native-docs/getting-started/put-get-example.html.md.erb b/docs/geode-native-docs-dotnet/getting-started/put-get-example.html.md.erb
similarity index 60%
rename from docs/geode-native-docs/getting-started/put-get-example.html.md.erb
rename to docs/geode-native-docs-dotnet/getting-started/put-get-example.html.md.erb
index 586fd29..6aa61bb 100644
--- a/docs/geode-native-docs/getting-started/put-get-example.html.md.erb
+++ b/docs/geode-native-docs-dotnet/getting-started/put-get-example.html.md.erb
@@ -1,5 +1,5 @@
 ---
-title:  Put/Get/Remove Examples
+title:  Put/Get/Remove Example
 ---
 
 <!--
@@ -19,13 +19,13 @@ See the License for the specific language governing permissions and
 limitations under the License.
 -->
 
-The native client release contains examples, written for .NET and C++, showing how a client application
+The native client release contains an example written for .NET showing how a client application
 can establish a connection to a cluster and then use that connection to perform basic operations on a remote server. 
-The examples are located in `../examples/dotnet/putgetremove` and `../examples/cpp/putgetremove`, respectively. 
+The example is located in `../examples/dotnet/putgetremove`. 
 
-Both examples perform the same sequence of operations, displaying simple log entries as they run.
+The example performs a sequence of operations, displaying simple log entries as they run.
 
-- To run an example, follow the instructions in the `README.md` file in the example directory.
+- To run the example, follow the instructions in the `README.md` file in the example directory.
 - Review the source code in the example directory to see exactly how it operates.
 
 - Begin by running a script that sets up the server-side environment by invoking `gfsh` commands to create a region, simply called "example_userinfo."
@@ -37,7 +37,7 @@ Both examples perform the same sequence of operations, displaying simple log ent
   - Uses region get to retrieve the values
   - Uses region remove to remove the values
 
-### .NET Example
+## <a id="put-get-remove-example-code"></a>Put/Get/Remove Example Code
 
 This section contains code snippets showing highlights of the .NET put/get/remove example. They are not intended for cut-and-paste execution.
 For the complete source, see the example source directory.
@@ -84,46 +84,3 @@ Finally, the application deletes one of the stored values using the `Remove` met
         Console.WriteLine("Info for " + rtimmonsKey + " has not been deleted");
       }
 ```
-
-### C++ Example
-
-This section contains code snippets showing highlights of the C++ put/get/remove example. They are not intended for cut-and-paste execution.
-For the complete source, see the example source directory.
-
-The C++ example creates a cache, then uses it to create a connection pool and a region object (of class `Region`).
-
-```cpp
-  auto cacheFactory = CacheFactory();
-  cacheFactory.set("log-level", "none");
-  auto cache = cacheFactory.create();
-  auto poolFactory = cache.getPoolManager().createFactory();
-
-  poolFactory.addLocator("localhost", 10334);
-  auto pool = poolFactory.create("pool");
-  auto regionFactory = cache.createRegionFactory(RegionShortcut::PROXY);
-  auto region = regionFactory.setPoolName("pool").create("example_userinfo");
-```
-
-The client then populates the data store with two key/value pairs. 
-
-```cpp
-  region->put("rtimmons", "Robert Timmons");
-  region->put("scharles", "Sylvia Charles");
-```
-
-Next, the application retrieves the stored values using `Get` operations.
-
-```cpp
-  auto user1 = region->get("rtimmons");
-  auto user2 = region->get("scharles");
-```
-
-Finally, the application deletes one of the stored values using the `Remove` method.
-
-```cpp
-  if (region->existsValue("rtimmons")) {
-    std::cout << "rtimmons's info not deleted" << std::endl;
-  } else {
-    std::cout << "rtimmons's info successfully deleted" << std::endl;
-  }
-```
diff --git a/docs/geode-native-docs/images/SQLite_Persistence_Mgr.png b/docs/geode-native-docs-dotnet/images/SQLite_Persistence_Mgr.png
similarity index 100%
rename from docs/geode-native-docs/images/SQLite_Persistence_Mgr.png
rename to docs/geode-native-docs-dotnet/images/SQLite_Persistence_Mgr.png
diff --git a/docs/geode-native-docs/images/client-cache-plugins-run.png b/docs/geode-native-docs-dotnet/images/client-cache-plugins-run.png
similarity index 100%
rename from docs/geode-native-docs/images/client-cache-plugins-run.png
rename to docs/geode-native-docs-dotnet/images/client-cache-plugins-run.png
diff --git a/docs/geode-native-docs/images/delta-propagation.png b/docs/geode-native-docs-dotnet/images/delta-propagation.png
similarity index 100%
rename from docs/geode-native-docs/images/delta-propagation.png
rename to docs/geode-native-docs-dotnet/images/delta-propagation.png
diff --git a/docs/geode-native-docs/preserving-data/app-ops-during-int-reg.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/app-ops-during-int-reg.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/app-ops-during-int-reg.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/app-ops-during-int-reg.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/client-side-config.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/client-side-config.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/client-side-config.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/client-side-config.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/config-durable-interest-keys.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/config-durable-interest-keys.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/config-durable-interest-keys.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/config-durable-interest-keys.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/config-durable-reconnect.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/config-durable-reconnect.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/config-durable-reconnect.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/config-durable-reconnect.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/configuring-durable-nc.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/configuring-durable-nc.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/configuring-durable-nc.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/configuring-durable-nc.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/configuring-nc-ha.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/configuring-nc-ha.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/configuring-nc-ha.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/configuring-nc-ha.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/disconnecting-from-server.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/disconnecting-from-server.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/disconnecting-from-server.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/disconnecting-from-server.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/disconnection.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/disconnection.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/disconnection.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/disconnection.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/durable-client-life-cycle.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/durable-client-life-cycle.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/durable-client-life-cycle.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/durable-client-life-cycle.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/durable-client-messaging-req.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/durable-client-messaging-req.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/durable-client-messaging-req.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/durable-client-messaging-req.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/durable-client-messaging.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/durable-client-messaging.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/durable-client-messaging.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/durable-client-messaging.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/durable-message-replay.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/durable-message-replay.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/durable-message-replay.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/durable-message-replay.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/high-availability-client-server.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/high-availability-client-server.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/high-availability-client-server.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/high-availability-client-server.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/impl-cache-listeners-durable-clients.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/impl-cache-listeners-durable-clients.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/impl-cache-listeners-durable-clients.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/impl-cache-listeners-durable-clients.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/initial-operation.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/initial-operation.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/initial-operation.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/initial-operation.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/preserving-data.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/preserving-data.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/preserving-data.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/preserving-data.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/reconnection.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/reconnection.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/reconnection.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/reconnection.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/sending-cache-ready-message.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/sending-cache-ready-message.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/sending-cache-ready-message.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/sending-cache-ready-message.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/sending-periodic-ack.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/sending-periodic-ack.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/sending-periodic-ack.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/sending-periodic-ack.html.md.erb
diff --git a/docs/geode-native-docs/preserving-data/using-queue-conflation.html.md.erb b/docs/geode-native-docs-dotnet/preserving-data/using-queue-conflation.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/preserving-data/using-queue-conflation.html.md.erb
rename to docs/geode-native-docs-dotnet/preserving-data/using-queue-conflation.html.md.erb
diff --git a/docs/geode-native-docs/regions/consistency-checking-in-regions.html.md.erb b/docs/geode-native-docs-dotnet/regions/consistency-checking-in-regions.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/regions/consistency-checking-in-regions.html.md.erb
rename to docs/geode-native-docs-dotnet/regions/consistency-checking-in-regions.html.md.erb
diff --git a/docs/geode-native-docs/regions/region-attributes.html.md.erb b/docs/geode-native-docs-dotnet/regions/region-attributes.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/regions/region-attributes.html.md.erb
rename to docs/geode-native-docs-dotnet/regions/region-attributes.html.md.erb
diff --git a/docs/geode-native-docs/regions/regions.html.md.erb b/docs/geode-native-docs-dotnet/regions/regions.html.md.erb
similarity index 90%
rename from docs/geode-native-docs/regions/regions.html.md.erb
rename to docs/geode-native-docs-dotnet/regions/regions.html.md.erb
index 6940bb4..5700a16 100644
--- a/docs/geode-native-docs/regions/regions.html.md.erb
+++ b/docs/geode-native-docs-dotnet/regions/regions.html.md.erb
@@ -42,24 +42,6 @@ To create a region:
 1. Use cache to instantiate a `RegionFactory` and use it to create a region, specifying any desired attributes
 and an association with the connection pool.
 
-### C++ Region Creation Example
-
-The following example illustrates how to create two regions using C++.
-
-``` cpp
-auto cache = CacheFactory().create();
-
-auto examplePool = cache.getPoolManager()
-    .createFactory()
-    .addLocator("localhost", 40404)
-    .setSubscriptionEnabled(true)
-    .create("examplePool");
-
-auto clientRegion1 = cache.createRegionFactory(RegionShortcut::PROXY)
-  .setPoolName("examplePool")
-  .create("clientRegion1");
-```
-
 ### .NET C# Region Creation Example
 
 This example illustrates how to create a pair of regions using C#:
@@ -121,9 +103,7 @@ removes the region and all of its contents from the cache.
 <a id="invalidating-region__section_6F7E304D1D5743F1B53FCBD4F82651D0"></a>
 You can execute these operations explicitly in the local cache in the following ways:
 
--   Through direct API calls from the client.
-  - .NET : Apache::Geode::Client::IRegion<TKey, TValue >::InvalidateRegion()
-  - C++ : apache::geode::client::Region:invalidateRegion()
+-   Through direct API calls from the client using `Apache::Geode::Client::IRegion<TKey, TValue >::InvalidateRegion()`.
 -   Through expiration activities based on the region's statistics and attribute settings.
 
 In either case, you can perform invalidation and destruction as a local or a distributed operation.
@@ -161,6 +141,6 @@ A region name *cannot* contain these characters:
 
 ## <a id="getting-region-size"></a>Getting the Region Size
 
-The `Region` API provides a `size` method (`Size` property for .NET) that gets the size of a region.
+The `Region` API provides a `Size` property that gets the size of a region.
 For client regions, this gives the number of entries in the local cache, not on the servers.
 See the `Region` API documentation for details.
diff --git a/docs/geode-native-docs/regions/registering-interest-for-entries.html.md.erb b/docs/geode-native-docs-dotnet/regions/registering-interest-for-entries.html.md.erb
similarity index 93%
rename from docs/geode-native-docs/regions/registering-interest-for-entries.html.md.erb
rename to docs/geode-native-docs-dotnet/regions/registering-interest-for-entries.html.md.erb
index dfc570b..a7cb1b0 100644
--- a/docs/geode-native-docs/regions/registering-interest-for-entries.html.md.erb
+++ b/docs/geode-native-docs-dotnet/regions/registering-interest-for-entries.html.md.erb
@@ -28,7 +28,7 @@ You can register interest for specific entry keys or for all keys. Regular expre
 
 ## <a id="registering-interest-for-entries__section_C9A3D7F193B24ACD83B2D67813E596A0" class="no-quick-link"></a>Client API for Registering Interest
 
-You register client interest through the C++ or NET API. The C++ API provides the `registerKeys`, `registerAllKeys`, and `registerRegex` methods, with corresponding unregistration accomplished using the `unregisterKeys`, `unregisterAllKeys`, and `unregisterRegex` methods. The .NET API provides the `RegisterKeys`, `RegisterAllKeys`, and `RegisterRegex` methods, with corresponding unregistration accomplished using the `UnregisterKeys`, `UnregisterAllKeys`, and `UnregisterRegex` methods.
+You register client interest through the .NET API. The .NET API provides the `RegisterKeys`, `RegisterAllKeys`, and `RegisterRegex` methods, with corresponding unregistration accomplished using the `UnregisterKeys`, `UnregisterAllKeys`, and `UnregisterRegex` methods.
 
 The `registerKeys`, `registerRegex` and `registerAllKeys` methods have the option to populate the cache with the registration results from the server. The `registerRegex` and `registerAllKeys` methods can also optionally return the current list of keys registered on the server.
 
diff --git a/docs/geode-native-docs/remote-queries.html.md.erb b/docs/geode-native-docs-dotnet/remote-queries.html.md.erb
similarity index 75%
rename from docs/geode-native-docs/remote-queries.html.md.erb
rename to docs/geode-native-docs-dotnet/remote-queries.html.md.erb
index 60d064f..1851482 100644
--- a/docs/geode-native-docs/remote-queries.html.md.erb
+++ b/docs/geode-native-docs-dotnet/remote-queries.html.md.erb
@@ -59,13 +59,9 @@ managing the compilation and execution of queries, and for retrieving an existin
 
 A `Query` is obtained from a `QueryService`, which is obtained from one of two sources:
 
-- To create a `Query` that operates on the <%=vars.product_name%> server, start with a `QueryService` obtained from a `Pool`.
-  - For .NET, use `Apache::Geode::Client::Pool::GetQueryService()`.
-  - For C++, use ` apache::geode::client::Pool::getQueryService()`.
+- To create a `Query` that operates on the <%=vars.product_name%> server, use `Apache::Geode::Client::Pool::GetQueryService()` to instantiate a `QueryService` obtained from a `Pool`.
 
-- To create a `Query` that operates on your application's local cache, start with a `QueryService` obtained from a `Cache`.
-  - For .NET, use `Apache::Geode::Client::Cache::GetQueryService()`.
-  - For C++, use ` apache::geode::client::Cache::getQueryService()`.
+- To create a `Query` that operates on your application's local cache, use `Apache::Geode::Client::Cache::GetQueryService()` to instantiate a `QueryService` obtained from a `Cache`.
 
 ### <a id="ExecutingAQuery"></a>Executing a Query from the Client
 
@@ -107,34 +103,4 @@ Following the steps listed above,
     }
     ```
 
-### <a id="CppQueryExample"></a>C++ Query Example
-
-These C++ code excerpts are from the `examples/cpp/remotequery` example included in your client
-distribution. See the example for full context.
-
-Following the steps listed above,
-
-  1. Obtain a `QueryService` object from the connection pool:
-
-    ```
-    std::shared_ptr<QueryService> queryService = nullptr;
-    queryService = pool->getQueryService();
-    ```
-
-  1. Create a `Query` object by calling `QueryService.newQuery()`, specifying your OQL query as a string parameter:
-
-    ```
-    auto query = queryService->newQuery("SELECT * FROM /custom_orders WHERE quantity > 30");    
-    ```
-
-  1. Execute the query. Collect the query output, returned as either a `ResultSet` or a `StructSet`, and iterate through the results:
-
-    ```
-    auto queryResults = query->execute();
-
-    for (auto&& value : *queryResults) {
-      auto&& order = std::dynamic_pointer_cast<Order>(value);
-      std::cout << order->toString() << std::endl;
-    }
-    ```
 
diff --git a/docs/geode-native-docs/security/SampleAuth.cpp b/docs/geode-native-docs-dotnet/security/SampleAuth.cpp
similarity index 100%
rename from docs/geode-native-docs/security/SampleAuth.cpp
rename to docs/geode-native-docs-dotnet/security/SampleAuth.cpp
diff --git a/docs/geode-native-docs/security/SampleAuth.cs b/docs/geode-native-docs-dotnet/security/SampleAuth.cs
similarity index 100%
rename from docs/geode-native-docs/security/SampleAuth.cs
rename to docs/geode-native-docs-dotnet/security/SampleAuth.cs
diff --git a/docs/geode-native-docs/security/authentication.html.md.erb b/docs/geode-native-docs-dotnet/security/authentication.html.md.erb
similarity index 65%
rename from docs/geode-native-docs/security/authentication.html.md.erb
rename to docs/geode-native-docs-dotnet/security/authentication.html.md.erb
index ac774c5..b2ed353 100644
--- a/docs/geode-native-docs/security/authentication.html.md.erb
+++ b/docs/geode-native-docs-dotnet/security/authentication.html.md.erb
@@ -68,48 +68,3 @@ Credentials are implemented in the `GetCredentials` member function of the `Exam
 
 ```
 
-### C++ Authentication Example
-
-In this C++ authentication example, the `CacheFactory` creation process sets the authentication callback:
-
-```cpp
-  auto cacheFactory = CacheFactory(config);
-  auto authInitialize = std::make_shared<UserPasswordAuthInit>();
-  cacheFactory.set("log-level", "none");
-  cacheFactory.setAuthInitialize(authInitialize);
-```
-
-Credentials are implemented in the `getCredentials` member function of the `AuthInitialize` abstract class.
-
-```cpp
-class UserPasswordAuthInit : public AuthInitialize {
-public:
-  UserPasswordAuthInit() = default;
-  
-  ~UserPasswordAuthInit() noexcept override = default;
-  
-  std::shared_ptr<Properties> getCredentials(
-    const std::shared_ptr<Properties> &securityprops,
-    const std::string &) override {
-    std::shared_ptr<Cacheable> userName;
-    if (securityprops == nullptr ||
-      (userName = securityprops->find(SECURITY_USERNAME)) == nullptr) {
-      throw AuthenticationFailedException(
-      "UserPasswordAuthInit: user name "
-      "property [SECURITY_USERNAME] not set.");
-    }
-  
-    auto credentials = Properties::create();
-    credentials->insert(SECURITY_USERNAME, userName->toString().c_str());
-    auto passwd = securityprops->find(SECURITY_PASSWORD);
-    if (passwd == nullptr) {
-      passwd = CacheableString::create("");
-    }
-    credentials->insert(SECURITY_PASSWORD, passwd->value().c_str());
-    return credentials;
-  }
-
-  void close() override { return; }
-};
-
-```
diff --git a/docs/geode-native-docs/security/security-systemprops.html.md.erb b/docs/geode-native-docs-dotnet/security/security-systemprops.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/security/security-systemprops.html.md.erb
rename to docs/geode-native-docs-dotnet/security/security-systemprops.html.md.erb
diff --git a/docs/geode-native-docs/security/security.html.md.erb b/docs/geode-native-docs-dotnet/security/security.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/security/security.html.md.erb
rename to docs/geode-native-docs-dotnet/security/security.html.md.erb
diff --git a/docs/geode-native-docs/security/sslclientserver.html.md.erb b/docs/geode-native-docs-dotnet/security/sslclientserver.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/security/sslclientserver.html.md.erb
rename to docs/geode-native-docs-dotnet/security/sslclientserver.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/data-as-blob.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/data-as-blob.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/data-as-blob.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/data-as-blob.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/object-graphs.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/object-graphs.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/object-graphs.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/object-graphs.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/pdx-ignore-unread-fields.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/pdx-ignore-unread-fields.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/pdx-ignore-unread-fields.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/pdx-ignore-unread-fields.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/pdx-serialization.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/pdx-serialization.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/pdx-serialization.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/pdx-serialization.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/pdx-with-delta-propagation.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/pdx-with-delta-propagation.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/pdx-with-delta-propagation.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/pdx-with-delta-propagation.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/pdxserializable-example.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/pdxserializable-example.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/pdxserializable-example.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/pdxserializable-example.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/pdxserializable-interface.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/pdxserializable-interface.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/pdxserializable-interface.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/pdxserializable-interface.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/performing-ops-with-pdx-object.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/performing-ops-with-pdx-object.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/performing-ops-with-pdx-object.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/performing-ops-with-pdx-object.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/serialization-options.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/serialization-options.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/serialization-options.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/serialization-options.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/serialization-overview.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/serialization-overview.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/serialization-overview.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/serialization-overview.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/serialization-using-serializable.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/serialization-using-serializable.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/serialization-using-serializable.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/serialization-using-serializable.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/using-enum-type-with-pdx.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/using-enum-type-with-pdx.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/using-enum-type-with-pdx.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/using-enum-type-with-pdx.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/using-pdxinstance.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/using-pdxinstance.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/using-pdxinstance.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/using-pdxinstance.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/using-pdxinstancefactory.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/using-pdxinstancefactory.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/using-pdxinstancefactory.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/using-pdxinstancefactory.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/using-pdxserialization.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/using-pdxserialization.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/using-pdxserialization.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/using-pdxserialization.html.md.erb
diff --git a/docs/geode-native-docs/serialization/cpp-serialization/using-pdxserializer.html.md.erb b/docs/geode-native-docs-dotnet/serialization/cpp-serialization/using-pdxserializer.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/cpp-serialization/using-pdxserializer.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/cpp-serialization/using-pdxserializer.html.md.erb
diff --git a/docs/geode-native-docs/serialization/data-serialization.html.md.erb b/docs/geode-native-docs-dotnet/serialization/data-serialization.html.md.erb
similarity index 59%
rename from docs/geode-native-docs/serialization/data-serialization.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/data-serialization.html.md.erb
index 41643f7..9e8c5ad 100644
--- a/docs/geode-native-docs/serialization/data-serialization.html.md.erb
+++ b/docs/geode-native-docs-dotnet/serialization/data-serialization.html.md.erb
@@ -30,7 +30,7 @@ To learn more about other serialization options, see the [Data Serialization sec
 <a id="implementing_pdxsbl_class"></a>
 ## Implementing a PdxSerializable Custom Class
 
-PdxSerializable provides custom serialization to an individual class. Fields within an object can be serialized separately from the rest of the class.
+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.
@@ -38,16 +38,15 @@ application, with no need to create corresponding code on the <%=product_name%>
 <a id="setup_pdxsbl_class"></a>
 ### Setup
 
-PdxSerializable provides custom serialization to an individual class. Fields within an object can be serialized separately from the rest of the class.
+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 or the C++ PdxSerializable interface.
+- 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 for .NET applications, or the `toData()` and
-  `fromData()` methods in C++ applications.
+  -  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
@@ -57,10 +56,10 @@ Setting up a custom class for PdxSerializable treatment requires some preparator
 <a id="pdxsbl_examples"></a>
 ## PdxSerializable Examples
 
-The native client release contains examples, written for .NET and C++, showing how a client application
-can register for serialization of custom objects using the .NET IPdxSerializable interface or the C++ PdxSerializable interface.
+The native client release contains examples showing how a client application
+can register for serialization of custom objects using the .NET IPdxSerializable interface.
 
-The examples are located in `examples\dotnet\pdxserializable` and `examples/cpp/pdxserializable`, respectively. 
+The examples are located in `examples\dotnet\pdxserializable`.
 
 The examples define the serializable class, `Orders`, including its serialization and deserialization methods and its factory method.
 Once these pieces are in place, execution is simple: the main routine of the example registers the serializable class then performs some put and get operations.
@@ -68,7 +67,7 @@ Once these pieces are in place, execution is simple: the main routine of the exa
 <a id="pdxsbl_execution"></a>
 ### Execution
 
-Both examples perform the same sequence of operations, displaying simple log entries as they run.
+The example performs a sequence of operations, displaying simple log entries as they run.
 
 - To run an example, follow the instructions in the README.md file in the example directory.
 - Review the source code in the example directory to see exactly how it operates.
@@ -183,121 +182,4 @@ Finally, the application closes the cache:
     cache.Close();
 ```
 
-<a id="pdxsbl_cpp_example"></a>
-### C++ Example
 
-This section contains code snippets showing highlights of the C++ PdxSerialiable example. They are not intended for cut-and-paste execution.
-For the complete source, see the example source directory.
-
-The C++ example defines a PdxSerializable class called `Order` that inherits from the `PdxSerializable` interface.
-An `Order` object contains three fields:
-
-- an integer `order_id`
-- a string `name`
-- a short-int `quantity`
-
-From Order.hpp:
-
-```cpp
-class Order : public PdxSerializable {
- public:
- ...
-
- private:
-  int32_t order_id_;
-  std::string name_;
-  int16_t quantity_;
-};
-
-```
-
-Using the PdxSerializable read and write methods, the `Order` class defines `fromData()` and `toData()`
-methods that perform the deserialization and serialization operations, respectively, and the
-`createDeserializable()` factory method:
-
-From Order.cpp:
-
-```cpp
-void Order::fromData(PdxReader& pdxReader) {
-  order_id_ = pdxReader.readInt(ORDER_ID_KEY_);
-  name_ = pdxReader.readString(NAME_KEY_);
-  quantity_ = pdxReader.readShort(QUANTITY_KEY_);
-}
-
-void Order::toData(PdxWriter& pdxWriter) const {
-  pdxWriter.writeInt(ORDER_ID_KEY_, order_id_);
-  pdxWriter.markIdentityField(ORDER_ID_KEY_);
-
-  pdxWriter.writeString(NAME_KEY_, name_);
-  pdxWriter.markIdentityField(NAME_KEY_);
-
-  pdxWriter.writeShort(QUANTITY_KEY_, quantity_);
-  pdxWriter.markIdentityField(QUANTITY_KEY_);
-}
-
-...
-
-std::shared_ptr<PdxSerializable> Order::createDeserializable() {
-  return std::make_shared<Order>();
-}
-```
-
-The C++ example mainline creates a cache, then uses it to create a connection pool and a region object (of class `Region`).
-
-```cpp
-  auto cacheFactory = CacheFactory();
-  cacheFactory.set("log-level", "none");
-  auto cache = cacheFactory.create();
-  auto poolFactory = cache.getPoolManager().createFactory();
-
-  poolFactory.addLocator("localhost", 10334);
-  auto pool = poolFactory.create("pool");
-  auto regionFactory = cache.createRegionFactory(RegionShortcut::PROXY);
-  auto region = regionFactory.setPoolName("pool").create("custom_orders");
-```
-
-The client registers the PdxSerializable class that was created in Orders.cpp:
-
-```cpp
-  cache.getTypeRegistry().registerPdxType(Order::createDeserializable);
-```
-
-The client then instantiates and stores two `Order` objects:
-
-```cpp
-  auto order1 = std::make_shared<Order>(1, "product x", 23);
-  auto order2 = std::make_shared<Order>(2, "product y", 37);
-
-  region->put("Customer1", order1);
-  region->put("Customer2", order2);
-```
-
-Next, the application retrieves the stored values, in one case extracting the fields defined in
-the serialization code:
-
-```cpp
-  if (auto order1retrieved =
-          std::dynamic_pointer_cast<Order>(region->get("Customer1"))) {
-    std::cout << "OrderID: " << order1retrieved->getOrderId() << std::endl;
-    std::cout << "Product Name: " << order1retrieved->getName() << std::endl;
-    std::cout << "Quantity: " << order1retrieved->getQuantity() << std::endl;
-  } else {
-    std::cout << "Order 1 not found." << std::endl;
-  }
-```
-
-The application retrieves the second object and displays it without extracting the separate fields:
-
-```cpp
-  if (region->existsValue("rtimmons")) {
-    std::cout << "rtimmons's info not deleted" << std::endl;
-  } else {
-    std::cout << "rtimmons's info successfully deleted" << std::endl;
-  }
-```
-
-Finally, the application closes the cache:
-
-```cpp
-  cache.close();
-```
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/custom-class-igfserializable.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/custom-class-igfserializable.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/custom-class-igfserializable.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/custom-class-igfserializable.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/dotnet-data-serialization-options.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-data-serialization-options.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/dotnet-data-serialization-options.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-data-serialization-options.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/dotnet-data-serialization.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-data-serialization.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/dotnet-data-serialization.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-data-serialization.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/dotnet-pdx-autoserializer.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-autoserializer.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/dotnet-pdx-autoserializer.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-autoserializer.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/dotnet-pdx-serialization-features.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-serialization-features.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/dotnet-pdx-serialization-features.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-serialization-features.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/dotnet-pdx-serialization.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/extending-pdx-autoserializer.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/extending-pdx-autoserializer.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/extending-pdx-autoserializer.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/extending-pdx-autoserializer.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/how-igfserializable-works.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/how-igfserializable-works.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/how-igfserializable-works.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/how-igfserializable-works.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/implementing-igfserializable.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/implementing-igfserializable.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/implementing-igfserializable.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/implementing-igfserializable.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/mapping-dotnet-domain-type-names.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/mapping-dotnet-domain-type-names.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/mapping-dotnet-domain-type-names.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/mapping-dotnet-domain-type-names.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/programming-ipdxinstance.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/programming-ipdxinstance.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/programming-ipdxinstance.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/programming-ipdxinstance.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/registering-the-type.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/registering-the-type.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/registering-the-type.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/registering-the-type.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/serializable-types.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/serializable-types.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/serializable-types.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/serializable-types.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/serialize-using-igfserializable.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/serialize-using-igfserializable.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/serialize-using-igfserializable.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/serialize-using-igfserializable.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/serialize-using-ipdxserializable.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/serialize-using-ipdxserializable.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/serialize-using-ipdxserializable.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/serialize-using-ipdxserializable.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/serializing-domain-objects.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/serializing-domain-objects.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/serializing-domain-objects.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/serializing-domain-objects.html.md.erb
diff --git a/docs/geode-native-docs/serialization/dotnet-serialization/using-ipdxinstancefactory.html.md.erb b/docs/geode-native-docs-dotnet/serialization/dotnet-serialization/using-ipdxinstancefactory.html.md.erb
similarity index 100%
rename from docs/geode-native-docs/serialization/dotnet-serialization/using-ipdxinstancefactory.html.md.erb
rename to docs/geode-native-docs-dotnet/serialization/dotnet-serialization/using-ipdxinstancefactory.html.md.erb
diff --git a/docs/geode-native-docs/transactions.html.md.erb b/docs/geode-native-docs-dotnet/transactions.html.md.erb
similarity index 71%
rename from docs/geode-native-docs/transactions.html.md.erb
rename to docs/geode-native-docs-dotnet/transactions.html.md.erb
index 9ae445b..367d70e 100644
--- a/docs/geode-native-docs/transactions.html.md.erb
+++ b/docs/geode-native-docs-dotnet/transactions.html.md.erb
@@ -34,11 +34,6 @@ The .NET classes for executing transactions are:
 -   `Apache.Geode.Client.CacheTransactionManager`
 -   `Apache.Geode.Client.TransactionId`
 
-The C++ classes for executing transactions are:
-
--   `apache.geode.client.CacheTransactionManager`
--   `apache.geode.client.TransactionId`
-
 ## <a id="running-nc-transactions"></a>Running Native Client Transactions
 
 The syntax for writing client transactions is the same as with server or peer transactions, but when
@@ -61,10 +56,9 @@ code throws a `TransactionException`.
 
 ## <a id="nc-transaction-examples"></a>Client Transaction Examples
 
-The native client release contains transaction examples written for .NET and C++. The examples are
-located in `../examples/dotnet/transaction` and `../examples/cpp/transaction`, respectively. 
+The native client release contains a transaction example in `../examples/dotnet/transaction`.
 
-Both examples perform the same sequence of operations, displaying simple log entries as they run.
+The example performs a sequence of operations, displaying simple log entries as they run.
 
 - To run an example, follow the instructions in the `README.md` file in the example directory.
 - Review the source code in the example directory to see exactly how it operates.
@@ -143,54 +137,3 @@ If all `put` operations succeed, the application commits the transaction. Otherw
    }
 ```
 
-### <a id="cpp-example"></a>C++ Example
-
-This section contains code snippets showing highlights of the C++ transaction example. They are not intended for cut-and-paste execution.
-For the complete source, see the example source directory.
-
-The C++ example creates a cache, then uses it to create a connection pool.
-
-```cpp
-  auto cache = CacheFactory().set("log-level", "none").create();
-  auto poolFactory = cache.getPoolManager().createFactory();
-
-  poolFactory.addLocator("localhost", 10334);
-  auto pool = poolFactory.create("pool");
-  auto regionFactory = cache.createRegionFactory(RegionShortcut::PROXY);
-  auto region = regionFactory.setPoolName("pool").create("exampleRegion");
-```
-
-The example application gets a transaction manager from the cache and begins a transaction.
-
-```cpp
-  auto transactionManager = cache.getCacheTransactionManager();
-
-  transactionManager->begin();
-```
-
-Within the transaction, the client populates data store with 10 values associated with Key1 - Key10.
-
-```cpp
-      for (auto& key : keys) {
-        auto value = getValueFromExternalSystem();
-        region->put(key, value);
-      }
-```
-
-If all `put` operations succeed, the application commits the transaction. Otherwise, it retries up to 5 times if necessary.
-
-```cpp
-  auto retries = 5;
-  while (retries--) {
-    try {
-      transactionManager->begin();
-       ... // PUT OPERATIONS ...
-      transactionManager->commit();
-      std::cout << "Committed transaction - exiting" << std::endl;
-      break;
-    } catch ( ... ) {
-      transactionManager->rollback();
-      std::cout << "Rolled back transaction - retrying(" << retries << ")" << std::endl;
-    }
-  }
-```