diff --git a/BUILD b/BUILD
index 9c6fb1a3cbcab1234a58ee9ef117d19725e02064..9eb3d978efda0a653c8031f8bc87a1cf89716275 100644
--- a/BUILD
+++ b/BUILD
@@ -784,6 +784,7 @@ cc_library(
     "include/grpc++/grpc++.h",
     "include/grpc++/impl/call.h",
     "include/grpc++/impl/client_unary_call.h",
+    "include/grpc++/impl/codegen/server_interface.h include/grpc++/impl/codegen/channel_interface.h",
     "include/grpc++/impl/grpc_library.h",
     "include/grpc++/impl/method_handler_impl.h",
     "include/grpc++/impl/proto_utils.h",
@@ -878,6 +879,7 @@ cc_library(
     "include/grpc++/grpc++.h",
     "include/grpc++/impl/call.h",
     "include/grpc++/impl/client_unary_call.h",
+    "include/grpc++/impl/codegen/server_interface.h include/grpc++/impl/codegen/channel_interface.h",
     "include/grpc++/impl/grpc_library.h",
     "include/grpc++/impl/method_handler_impl.h",
     "include/grpc++/impl/proto_utils.h",
diff --git a/Makefile b/Makefile
index a591dcf0d142aa13393c67cb1c93d62b89273384..0e4847c44f3e384402d631013065f70143d7fba0 100644
--- a/Makefile
+++ b/Makefile
@@ -2990,6 +2990,7 @@ PUBLIC_HEADERS_CXX += \
     include/grpc++/grpc++.h \
     include/grpc++/impl/call.h \
     include/grpc++/impl/client_unary_call.h \
+    include/grpc++/impl/codegen/server_interface.h include/grpc++/impl/codegen/channel_interface.h \
     include/grpc++/impl/grpc_library.h \
     include/grpc++/impl/method_handler_impl.h \
     include/grpc++/impl/proto_utils.h \
@@ -3260,6 +3261,7 @@ PUBLIC_HEADERS_CXX += \
     include/grpc++/grpc++.h \
     include/grpc++/impl/call.h \
     include/grpc++/impl/client_unary_call.h \
+    include/grpc++/impl/codegen/server_interface.h include/grpc++/impl/codegen/channel_interface.h \
     include/grpc++/impl/grpc_library.h \
     include/grpc++/impl/method_handler_impl.h \
     include/grpc++/impl/proto_utils.h \
diff --git a/build.yaml b/build.yaml
index e378341d7702219333ef6b1c914cd029ba3f0a92..39ddf24a24429caa11a597b1d3a8eb624bf4b4c9 100644
--- a/build.yaml
+++ b/build.yaml
@@ -32,6 +32,8 @@ filegroups:
   - include/grpc++/grpc++.h
   - include/grpc++/impl/call.h
   - include/grpc++/impl/client_unary_call.h
+  - include/grpc++/impl/codegen/server_interface.h
+  - include/grpc++/impl/codegen/channel_interface.h
   - include/grpc++/impl/grpc_library.h
   - include/grpc++/impl/method_handler_impl.h
   - include/grpc++/impl/proto_utils.h
@@ -50,8 +52,6 @@ filegroups:
   - include/grpc++/security/auth_metadata_processor.h
   - include/grpc++/security/credentials.h
   - include/grpc++/security/server_credentials.h
-  - include/grpc++/impl/codegen/server_interface.h
-    include/grpc++/impl/codegen/channel_interface.h
   - include/grpc++/server.h
   - include/grpc++/server_builder.h
   - include/grpc++/server_context.h
diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++
index ebe8a564f8a13ed11a5e4c65cf96661dcffe1fcb..0f36810f150b31972d2335ab980ffd7ab119ab1d 100644
--- a/tools/doxygen/Doxyfile.c++
+++ b/tools/doxygen/Doxyfile.c++
@@ -769,6 +769,7 @@ include/grpc++/generic/generic_stub.h \
 include/grpc++/grpc++.h \
 include/grpc++/impl/call.h \
 include/grpc++/impl/client_unary_call.h \
+include/grpc++/impl/codegen/server_interface.h include/grpc++/impl/codegen/channel_interface.h \
 include/grpc++/impl/grpc_library.h \
 include/grpc++/impl/method_handler_impl.h \
 include/grpc++/impl/proto_utils.h \
diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal
index b9961c034cd4e852b76b07f48eebce652618401f..a0013708bab02866c1a1ae2db8f66622a728db02 100644
--- a/tools/doxygen/Doxyfile.c++.internal
+++ b/tools/doxygen/Doxyfile.c++.internal
@@ -769,6 +769,7 @@ include/grpc++/generic/generic_stub.h \
 include/grpc++/grpc++.h \
 include/grpc++/impl/call.h \
 include/grpc++/impl/client_unary_call.h \
+include/grpc++/impl/codegen/server_interface.h include/grpc++/impl/codegen/channel_interface.h \
 include/grpc++/impl/grpc_library.h \
 include/grpc++/impl/method_handler_impl.h \
 include/grpc++/impl/proto_utils.h \
diff --git a/tools/run_tests/sources_and_headers.json b/tools/run_tests/sources_and_headers.json
index 0b4ff0d6f73eccb2ebb66df337d870a17f42b701..a4784cf7f91af6e1986b49d374e3835aa606062a 100644
--- a/tools/run_tests/sources_and_headers.json
+++ b/tools/run_tests/sources_and_headers.json
@@ -3844,6 +3844,7 @@
       "include/grpc++/grpc++.h", 
       "include/grpc++/impl/call.h", 
       "include/grpc++/impl/client_unary_call.h", 
+      "include/grpc++/impl/codegen/server_interface.h include/grpc++/impl/codegen/channel_interface.h", 
       "include/grpc++/impl/grpc_library.h", 
       "include/grpc++/impl/method_handler_impl.h", 
       "include/grpc++/impl/proto_utils.h", 
@@ -3899,6 +3900,7 @@
       "include/grpc++/grpc++.h", 
       "include/grpc++/impl/call.h", 
       "include/grpc++/impl/client_unary_call.h", 
+      "include/grpc++/impl/codegen/server_interface.h include/grpc++/impl/codegen/channel_interface.h", 
       "include/grpc++/impl/grpc_library.h", 
       "include/grpc++/impl/method_handler_impl.h", 
       "include/grpc++/impl/proto_utils.h", 
@@ -4038,6 +4040,7 @@
       "include/grpc++/grpc++.h", 
       "include/grpc++/impl/call.h", 
       "include/grpc++/impl/client_unary_call.h", 
+      "include/grpc++/impl/codegen/server_interface.h include/grpc++/impl/codegen/channel_interface.h", 
       "include/grpc++/impl/grpc_library.h", 
       "include/grpc++/impl/method_handler_impl.h", 
       "include/grpc++/impl/proto_utils.h", 
@@ -4090,6 +4093,7 @@
       "include/grpc++/grpc++.h", 
       "include/grpc++/impl/call.h", 
       "include/grpc++/impl/client_unary_call.h", 
+      "include/grpc++/impl/codegen/server_interface.h include/grpc++/impl/codegen/channel_interface.h", 
       "include/grpc++/impl/grpc_library.h", 
       "include/grpc++/impl/method_handler_impl.h", 
       "include/grpc++/impl/proto_utils.h", 
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
index b9eea4be2f5d09c777dc6f0d65d6ba383d184119..c0ce85cd54bb747b9abb7c82ebd30deb70bf2d51 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj
@@ -267,6 +267,7 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\grpc++.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\call.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\client_unary_call.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\server_interface.h include\grpc++\impl\codegen\channel_interface.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\grpc_library.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\method_handler_impl.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\proto_utils.h" />
diff --git a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
index eb53819a01cb8e7d7ab73930b5f6dafbbb391868..c6846f2febec913ac536d541de694ac72d6cce1c 100644
--- a/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++/grpc++.vcxproj.filters
@@ -126,6 +126,9 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\client_unary_call.h">
       <Filter>include\grpc++\impl</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\server_interface.h include\grpc++\impl\codegen\channel_interface.h">
+      <Filter>include\grpc++\impl\codegen\server_interface.h include\grpc++\impl\codegen</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\grpc_library.h">
       <Filter>include\grpc++\impl</Filter>
     </ClInclude>
@@ -269,6 +272,21 @@
     <Filter Include="include\grpc++\impl">
       <UniqueIdentifier>{0da8cd95-314f-da1b-5ce7-7791a5be1f1a}</UniqueIdentifier>
     </Filter>
+    <Filter Include="include\grpc++\impl\codegen">
+      <UniqueIdentifier>{a3e7f28b-a7c7-7364-d402-edb1bfa414a4}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="include\grpc++\impl\codegen\server_interface.h include">
+      <UniqueIdentifier>{1bd5ab1d-9021-ccc8-6db4-faca13506a7e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="include\grpc++\impl\codegen\server_interface.h include\grpc++">
+      <UniqueIdentifier>{198172ca-33d7-4e74-2bc5-5b9413bcdf9a}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="include\grpc++\impl\codegen\server_interface.h include\grpc++\impl">
+      <UniqueIdentifier>{fd299734-d80f-7c64-d6fe-6575e43e1671}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="include\grpc++\impl\codegen\server_interface.h include\grpc++\impl\codegen">
+      <UniqueIdentifier>{d4f84f05-bc1e-4991-a484-ee9accf7d253}</UniqueIdentifier>
+    </Filter>
     <Filter Include="include\grpc++\security">
       <UniqueIdentifier>{a80eb32b-1be9-1187-5f40-30d92accecc8}</UniqueIdentifier>
     </Filter>
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
index dd1d1a85fe279dc9484ccff14241dbe53538897a..952d694ecf5131e716bc82eccf300cf07db7dd54 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj
@@ -267,6 +267,7 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\grpc++.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\call.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\client_unary_call.h" />
+    <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\server_interface.h include\grpc++\impl\codegen\channel_interface.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\grpc_library.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\method_handler_impl.h" />
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\proto_utils.h" />
diff --git a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
index 3d23dc4b447941936fda2a7544d9ae473f8433f7..400308412b9febcbb48fcb3a451d01e9231f7b31 100644
--- a/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
+++ b/vsprojects/vcxproj/grpc++_unsecure/grpc++_unsecure.vcxproj.filters
@@ -111,6 +111,9 @@
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\client_unary_call.h">
       <Filter>include\grpc++\impl</Filter>
     </ClInclude>
+    <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\codegen\server_interface.h include\grpc++\impl\codegen\channel_interface.h">
+      <Filter>include\grpc++\impl\codegen\server_interface.h include\grpc++\impl\codegen</Filter>
+    </ClInclude>
     <ClInclude Include="$(SolutionDir)\..\include\grpc++\impl\grpc_library.h">
       <Filter>include\grpc++\impl</Filter>
     </ClInclude>
@@ -245,6 +248,21 @@
     <Filter Include="include\grpc++\impl">
       <UniqueIdentifier>{dadc0002-f2ac-451b-a9b8-33b8de10b5fc}</UniqueIdentifier>
     </Filter>
+    <Filter Include="include\grpc++\impl\codegen">
+      <UniqueIdentifier>{ccc364e2-3f28-8bfc-c26e-800dd6f9a9af}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="include\grpc++\impl\codegen\server_interface.h include">
+      <UniqueIdentifier>{e3fe409b-c3cb-f341-789e-d96b9737d899}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="include\grpc++\impl\codegen\server_interface.h include\grpc++">
+      <UniqueIdentifier>{1c3328a6-193d-8846-6617-5bf6af920936}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="include\grpc++\impl\codegen\server_interface.h include\grpc++\impl">
+      <UniqueIdentifier>{a87212e6-4424-59a8-fccc-1939da7f2a3d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="include\grpc++\impl\codegen\server_interface.h include\grpc++\impl\codegen">
+      <UniqueIdentifier>{e2d46a3d-3f7b-316d-b1c7-5499922fa7ed}</UniqueIdentifier>
+    </Filter>
     <Filter Include="include\grpc++\security">
       <UniqueIdentifier>{64bf60ff-9192-bb59-dcc8-8a0021e1d016}</UniqueIdentifier>
     </Filter>