diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml
index 7e11f0658a..e1dc86f0e9 100644
--- a/ansible/group_vars/all.yml
+++ b/ansible/group_vars/all.yml
@@ -264,7 +264,7 @@ tunnel_interface_address: "{{ 'tunnel' | kolla_address }}"
 octavia_network_interface_address: "{{ 'octavia_network' | kolla_address }}"
 dpdk_tunnel_interface_address: "{{ 'dpdk_tunnel' | kolla_address }}"
 
-# Valid options are [ openvswitch, ovn, linuxbridge, vmware_nsxv, vmware_nsxv3, vmware_dvs ]
+# Valid options are [ openvswitch, ovn, linuxbridge, vmware_nsxv, vmware_nsxv3, vmware_nsxp, vmware_dvs ]
 neutron_plugin_agent: "openvswitch"
 
 # Valid options are [ internal, infoblox ]
diff --git a/ansible/roles/neutron/defaults/main.yml b/ansible/roles/neutron/defaults/main.yml
index a07fd4b23b..c3334f8346 100644
--- a/ansible/roles/neutron/defaults/main.yml
+++ b/ansible/roles/neutron/defaults/main.yml
@@ -71,7 +71,7 @@ neutron_services:
     container_name: "neutron_dhcp_agent"
     image: "{{ neutron_dhcp_agent_image_full }}"
     privileged: True
-    enabled: "{{ neutron_plugin_agent not in ['ovn', 'vmware_nsxv', 'vmware_nsxv3'] or neutron_ovn_dhcp_agent | bool }}"
+    enabled: "{{ neutron_plugin_agent not in ['ovn', 'vmware_nsxv', 'vmware_nsxv3', 'vmware_nsxp'] or neutron_ovn_dhcp_agent | bool }}"
     group: "neutron-dhcp-agent"
     host_in_groups: "{{ inventory_hostname in groups['neutron-dhcp-agent'] }}"
     volumes: "{{ neutron_dhcp_agent_default_volumes + neutron_dhcp_agent_extra_volumes }}"
@@ -81,7 +81,7 @@ neutron_services:
     container_name: "neutron_l3_agent"
     image: "{{ neutron_l3_agent_image_full }}"
     privileged: True
-    enabled: "{{ neutron_plugin_agent not in ['ovn', 'vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs'] }}"
+    enabled: "{{ neutron_plugin_agent not in ['ovn', 'vmware_nsxv', 'vmware_nsxv3', 'vmware_nsxp', 'vmware_dvs'] }}"
     environment:
       KOLLA_LEGACY_IPTABLES: "{{ neutron_legacy_iptables | bool | lower }}"
     host_in_groups: >-
@@ -96,7 +96,7 @@ neutron_services:
     container_name: "neutron_sriov_agent"
     image: "{{ neutron_sriov_agent_image_full }}"
     privileged: True
-    enabled: "{{ enable_neutron_sriov | bool and neutron_plugin_agent not in ['vmware_nsxv', 'vmware_nsxv3' ] }}"
+    enabled: "{{ enable_neutron_sriov | bool and neutron_plugin_agent not in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_nsxp' ] }}"
     host_in_groups: "{{ inventory_hostname in groups['compute'] }}"
     volumes: "{{ neutron_sriov_agent_default_volumes + neutron_sriov_agent_extra_volumes }}"
     dimensions: "{{ neutron_sriov_agent_dimensions }}"
@@ -104,7 +104,7 @@ neutron_services:
   neutron-mlnx-agent:
     container_name: "neutron_mlnx_agent"
     image: "{{ neutron_mlnx_agent_image_full }}"
-    enabled: "{{ enable_neutron_mlnx | bool and neutron_plugin_agent not in ['vmware_nsxv', 'vmware_nsxv3' ] }}"
+    enabled: "{{ enable_neutron_mlnx | bool and neutron_plugin_agent not in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_nsxp' ] }}"
     host_in_groups: "{{ inventory_hostname in groups['compute'] }}"
     volumes: "{{ neutron_mlnx_agent_default_volumes + neutron_mlnx_agent_extra_volumes }}"
     dimensions: "{{ neutron_mlnx_agent_dimensions }}"
@@ -112,7 +112,7 @@ neutron_services:
     container_name: "neutron_eswitchd"
     image: "{{ neutron_eswitchd_image_full }}"
     privileged: True
-    enabled: "{{ enable_neutron_mlnx | bool and neutron_plugin_agent not in ['vmware_nsxv', 'vmware_nsxv3' ] }}"
+    enabled: "{{ enable_neutron_mlnx | bool and neutron_plugin_agent not in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_nsxp' ] }}"
     host_in_groups: "{{ inventory_hostname in groups['compute'] }}"
     volumes: "{{ neutron_eswitchd_default_volumes + neutron_eswitchd_extra_volumes }}"
     dimensions: "{{ neutron_eswitchd_dimensions }}"
@@ -120,7 +120,7 @@ neutron_services:
     container_name: "neutron_metadata_agent"
     image: "{{ neutron_metadata_agent_image_full }}"
     privileged: True
-    enabled: "{{ neutron_plugin_agent not in [ 'ovn', 'vmware_nsxv', 'vmware_nsxv3' ] }}"
+    enabled: "{{ neutron_plugin_agent not in [ 'ovn', 'vmware_nsxv', 'vmware_nsxv3', 'vmware_nsxp' ] }}"
     host_in_groups: >-
       {{
       inventory_hostname in groups['neutron-metadata-agent']
@@ -142,7 +142,7 @@ neutron_services:
     container_name: "neutron_bgp_dragent"
     image: "{{ neutron_bgp_dragent_image_full }}"
     privileged: True
-    enabled: "{{ enable_neutron_bgp_dragent | bool and neutron_plugin_agent not in ['ovn', 'vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs'] }}"
+    enabled: "{{ enable_neutron_bgp_dragent | bool and neutron_plugin_agent not in ['ovn', 'vmware_nsxv', 'vmware_nsxv3', 'vmware_nsxp', 'vmware_dvs'] }}"
     group: "neutron-bgp-dragent"
     host_in_groups: "{{ inventory_hostname in groups['neutron-bgp-dragent'] }}"
     volumes: "{{ neutron_bgp_dragent_default_volumes + neutron_bgp_dragent_extra_volumes }}"
@@ -554,6 +554,8 @@ neutron_subprojects:
     enabled: "{{ enable_neutron_bgp_dragent | bool }}"
   - name: "neutron-vpnaas"
     enabled: "{{ enable_neutron_vpnaas | bool }}"
+  - name: "vmware-nsx"
+    enabled: "{{ neutron_plugin_agent in ['vmware_dvs', 'vmware_nsxv', 'vmware_nsxv3', 'vmware_nsxp'] }}"
 
 ####################
 # Mechanism drivers
@@ -699,6 +701,19 @@ nsxv3_default_tier0_router: "tier0 router uuid"
 nsxv3_default_vlan_tz: "vlan TZ uuid"
 nsxv3_default_overlay_tz: "overlay TZ uuid"
 
+####################
+# VMware NSXP
+####################
+vmware_nsxp_metadata_proxy: "metadata proxy uuid or name"
+vmware_nsxp_dhcp_profile: "dhcp service uuid or name"
+vmware_nsxp_native_dhcp_metadata: "true"
+vmware_nsxp_api_user: "admin"
+vmware_nsxp_insecure: "True"
+vmware_nsxp_api_managers: "127.0.0.1"
+vmware_nsxp_default_tier0_router: "tier0 router uuid or name"
+vmware_nsxp_default_vlan_tz: "vlan TZ uuid or name"
+vmware_nsxp_default_overlay_tz: "overlay TZ uuid or name"
+
 ####################
 # VMware DVS
 ####################
diff --git a/ansible/roles/neutron/tasks/config.yml b/ansible/roles/neutron/tasks/config.yml
index 115402242f..cfc4e74fc5 100644
--- a/ansible/roles/neutron/tasks/config.yml
+++ b/ansible/roles/neutron/tasks/config.yml
@@ -410,7 +410,7 @@
   when:
     - neutron_server.enabled | bool
     - neutron_server.host_in_groups | bool
-    - neutron_plugin_agent in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs']
+    - neutron_plugin_agent in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_nsxp', 'vmware_dvs']
   notify:
     - "Restart {{ service_name }} container"
 
diff --git a/ansible/roles/neutron/templates/neutron-server.json.j2 b/ansible/roles/neutron/templates/neutron-server.json.j2
index 30bb11f49c..f8f9e4a94b 100644
--- a/ansible/roles/neutron/templates/neutron-server.json.j2
+++ b/ansible/roles/neutron/templates/neutron-server.json.j2
@@ -1,5 +1,5 @@
 {
-    "command": "neutron-server --config-file /etc/neutron/neutron.conf {% if neutron_plugin_agent in ['openvswitch', 'linuxbridge', 'ovn'] %} --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-file /etc/neutron/neutron_vpnaas.conf {% elif neutron_plugin_agent in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs'] %} --config-file /etc/neutron/plugins/vmware/nsx.ini {% endif %}",
+    "command": "neutron-server --config-file /etc/neutron/neutron.conf {% if neutron_plugin_agent in ['openvswitch', 'linuxbridge', 'ovn'] %} --config-file /etc/neutron/plugins/ml2/ml2_conf.ini --config-file /etc/neutron/neutron_vpnaas.conf {% elif neutron_plugin_agent in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_nsxp', 'vmware_dvs'] %} --config-file /etc/neutron/plugins/vmware/nsx.ini {% endif %}",
     "config_files": [
         {
             "source": "{{ container_config_directory }}/neutron.conf",
@@ -19,12 +19,11 @@
             "owner": "neutron",
             "perm": "0600"
         },{% endif %}
-{% if neutron_plugin_agent in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs'] -%}
+{% if neutron_plugin_agent in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_nsxp', 'vmware_dvs'] -%}
         {
             "source": "{{ container_config_directory }}/nsx.ini",
             "dest": "/etc/neutron/plugins/vmware/nsx.ini",
             "owner": "neutron",
-            "optional": {{ (neutron_plugin_agent not in ['vmware_nsxv', 'vmware_nsxv3', 'vmware_dvs']) | string | lower }},
             "perm": "0600"
         },{% endif %}
 {% if check_extra_ml2_plugins is defined and check_extra_ml2_plugins.matched > 0 %}{% for plugin in check_extra_ml2_plugins.files %}
diff --git a/ansible/roles/neutron/templates/neutron.conf.j2 b/ansible/roles/neutron/templates/neutron.conf.j2
index 3e2aeaf61c..a77c84aada 100644
--- a/ansible/roles/neutron/templates/neutron.conf.j2
+++ b/ansible/roles/neutron/templates/neutron.conf.j2
@@ -45,6 +45,9 @@ core_plugin = vmware_nsx.plugin.NsxVPlugin
 {% elif neutron_plugin_agent == 'vmware_nsxv3' %}
 core_plugin = vmware_nsx.plugin.NsxV3Plugin
 dhcp_agent_notification = False
+{% elif neutron_plugin_agent == 'vmware_nsxp' %}
+core_plugin = vmware_nsx.plugin.NsxPolicyPlugin
+dhcp_agent_notification = False
 {% elif neutron_plugin_agent == 'vmware_dvs' %}
 core_plugin = vmware_nsx.plugin.NsxDvsPlugin
 {% else %}
@@ -71,6 +74,8 @@ external_dns_driver = designate
 nsx_extension_drivers = vmware_nsxv_dns
 {% elif neutron_plugin_agent == 'vmware_nsxv3' %}
 nsx_extension_drivers = vmware_nsxv3_dns
+{% elif neutron_plugin_agent == 'vmware_nsxp' %}
+nsx_extension_drivers = vmware_nsxp_dns
 {% elif neutron_plugin_agent == 'vmware_dvs' %}
 nsx_extension_drivers = vmware_dvs_dns
 {% endif %}
diff --git a/ansible/roles/neutron/templates/nsx.ini.j2 b/ansible/roles/neutron/templates/nsx.ini.j2
index 1129de424b..5c62c4d4ac 100644
--- a/ansible/roles/neutron/templates/nsx.ini.j2
+++ b/ansible/roles/neutron/templates/nsx.ini.j2
@@ -26,6 +26,17 @@ nsx_api_managers = {{ nsxv3_api_managers }}
 default_tier0_router = {{ nsxv3_default_tier0_router }}
 default_vlan_tz = {{ nsxv3_default_vlan_tz }}
 default_overlay_tz = {{ nsxv3_default_overlay_tz }}
+{% elif neutron_plugin_agent == 'vmware_nsxp' %}
+[nsx_p]
+metadata_proxy = {{ vmware_nsxp_metadata_proxy }}
+dhcp_profile = {{ vmware_nsxp_dhcp_profile }}
+native_dhcp_metadata = {{ vmware_nsxp_native_dhcp_metadata }}
+nsx_api_password = {{ vmware_nsxp_api_password }}
+nsx_api_user = {{ vmware_nsxp_api_user }}
+nsx_api_managers = {{ vmware_nsxp_api_managers }}
+default_tier0_router = {{ vmware_nsxp_default_tier0_router }}
+default_vlan_tz = {{ vmware_nsxp_default_vlan_tz }}
+default_overlay_tz = {{ vmware_nsxp_default_overlay_tz }}
 {% elif neutron_plugin_agent == 'vmware_dvs' %}
 [dvs]
 host_ip = {{ vmware_dvs_host_ip }}
diff --git a/ansible/roles/nova-cell/templates/nova.conf.j2 b/ansible/roles/nova-cell/templates/nova.conf.j2
index 8f29686f18..839f267f53 100644
--- a/ansible/roles/nova-cell/templates/nova.conf.j2
+++ b/ansible/roles/nova-cell/templates/nova.conf.j2
@@ -120,7 +120,7 @@ cafile = {{ openstack_cacert }}
 [neutron]
 metadata_proxy_shared_secret = {{ metadata_secret }}
 service_metadata_proxy = true
-{% if neutron_plugin_agent == 'vmware_nsxv3' %}
+{% if neutron_plugin_agent in ['vmware_nsxv3', 'vmware_nsxp'] %}
 ovs_bridge = {{ ovs_bridge }}
 {% endif %}
 auth_url = {{ keystone_admin_url }}
diff --git a/ansible/roles/nova/templates/nova.conf.j2 b/ansible/roles/nova/templates/nova.conf.j2
index c30409f2bb..4a1634102e 100644
--- a/ansible/roles/nova/templates/nova.conf.j2
+++ b/ansible/roles/nova/templates/nova.conf.j2
@@ -72,9 +72,6 @@ cafile = {{ openstack_cacert }}
 [neutron]
 metadata_proxy_shared_secret = {{ metadata_secret }}
 service_metadata_proxy = true
-{% if neutron_plugin_agent == 'vmware_nsxv3' %}
-ovs_bridge = {{ ovs_bridge }}
-{% endif %}
 auth_url = {{ keystone_admin_url }}
 auth_type = password
 project_domain_name = {{ default_project_domain_name }}
diff --git a/doc/source/reference/compute/vmware-guide.rst b/doc/source/reference/compute/vmware-guide.rst
index a205593b11..b03fd8f286 100644
--- a/doc/source/reference/compute/vmware-guide.rst
+++ b/doc/source/reference/compute/vmware-guide.rst
@@ -8,8 +8,13 @@ Overview
 ~~~~~~~~
 
 Kolla can deploy the Nova and Neutron Service(s) for VMware vSphere.
-Depending on the network architecture (NsxV or DVS) you choose, Kolla deploys
-the following OpenStack services for VMware vSphere:
+Depending on the network architecture (NsxT, NsxV or DVS) you choose,
+Kolla deploys the following OpenStack services for VMware vSphere:
+
+For VMware NsxT:
+
+* nova-compute
+* neutron-server
 
 For VMware NsxV:
 
@@ -35,6 +40,12 @@ into what vSphere/NSX Manager API can understand. Neutron does
 not directly takes control of the Open vSwitch inside the VMware
 environment but through the API exposed by vSphere/NSX Manager.
 
+.. note::
+
+   VMware NSX plugin is not in the kolla image by default.
+   VMware NSX plugin has to be added in the neutron image and
+   if you are using vmware_dvs also in neutron-dhcp-agent image.
+
 For VMware DVS, the Neutron DHCP agent does not attaches to Open vSwitch inside
 VMware environment, but attach to the Open vSwitch bridge called ``br-dvs`` on
 the OpenStack side and replies to/receives DHCP packets through VLAN. Similar
@@ -46,22 +57,34 @@ bridge and works through VLAN.
    VMware NSX-DVS plugin does not support tenant networks, so all VMs should
    attach to Provider VLAN/Flat networks.
 
-VMware NSX-V
+VMware NSX-T
 ~~~~~~~~~~~~
 
 Preparation
 -----------
 
-You should have a working NSX-V environment, this part is out of scope
-of Kolla.
-For more information, please see `VMware NSX-V documentation <https://docs.vmware.com/en/VMware-NSX-for-vSphere/>`__.
+You should have a working NSX-T environment, this part is out of scope
+of Kolla. For more information, please see
+`VMware NSX-T documentation <https://docs.vmware.com/en/VMware-NSX-T-Data-Center/index.html/>`__.
+The NSX Manager provides a web-based user interface where you can manage
+your NSX-T environment.
+It also hosts the API server that processes API calls.
+The NSX Manager interface provides two modes for configuring resources:
 
-.. note::
+- Policy mode
+- Manager mode
 
-   In addition, it is important to modify the firewall rule of vSphere to make
-   sure that VNC is accessible from outside VMware environment.
+In Kolla you will have the choice between both with neutron plugin
+vmware_nsxv3 for Manager mode and vmware_nsxp for Policy Mode.
+For more information, please see
+`documentation <https://docs.vmware.com/en/VMware-NSX-T-Data-Center/3.1/installation/GUID-BB26CDC8-2A90-4C7E-9331-643D13FEEC4A.html/>`__.
 
-   On every VMware host, edit ``/etc/vmware/firewall/vnc.xml`` as below:
+------------------------------------------------------------------------------
+
+In addition, it is important to modify the firewall rule of vSphere to make
+sure that VNC is accessible from outside VMware environment.
+
+On every VMware host, edit ``/etc/vmware/firewall/vnc.xml`` as below:
 
 .. code-block:: xml
 
@@ -104,6 +127,155 @@ Verify that the firewall config is applied:
 
    # esxcli network firewall ruleset list
 
+------------------------------------------------------------------------------
+
+Deployment
+----------
+
+The deployment below covers the Policy mode (vmware_nsxp)
+
+Enable VMware nova-compute plugin and NSX-T neutron-server plugin in
+``/etc/kolla/globals.yml``:
+
+.. code-block:: yaml
+
+   enable_openvswitch: no
+   nova_compute_virt_type: "vmware"
+   neutron_plugin_agent: "vmware_nsxp"
+
+If you want to set VMware datastore as cinder backend, enable it in
+``/etc/kolla/globals.yml``:
+
+.. code-block:: yaml
+
+   enable_cinder: "yes"
+   cinder_backend_vmwarevc_vmdk: "yes"
+   vmware_datastore_name: "TestDatastore"
+
+If you want to set VMware datastore as glance backend, enable it in
+``/etc/kolla/globals.yml``:
+
+.. code-block:: yaml
+
+   glance_backend_vmware: "yes"
+   vmware_vcenter_name: "TestDatacenter"
+   vmware_datastore_name: "TestDatastore"
+
+VMware options are required in ``/etc/kolla/globals.yml``, these options should
+be configured correctly according to your NSX-T environment.
+
+Options for ``nova-compute`` and ``ceilometer``:
+
+.. code-block:: yaml
+
+   vmware_vcenter_host_ip: "127.0.0.1"
+   vmware_vcenter_host_username: "admin"
+   vmware_vcenter_cluster_name: "cluster-1"
+   vmware_vcenter_insecure: "True"
+   vmware_vcenter_datastore_regex: ".*"
+
+.. note::
+
+   The VMware vCenter password has to be set in ``/etc/kolla/passwords.yml``.
+
+   .. code-block:: yaml
+
+      vmware_vcenter_host_password: "admin"
+
+Options for Neutron NSX-T support:
+
+.. code-block:: yaml
+
+   vmware_nsxp_api_user: "admin"
+   vmware_nsxp_insecure: true
+   vmware_nsxp_default_tier0_router: "T0-Example"
+   vmware_nsxp_dhcp_profile: "dhcp-profile-example"
+   vmware_nsxp_metadata_proxy: "metadata_proxy-example"
+   vmware_nsxp_api_managers: "nsx-manager.local"
+   vmware_nsxp_default_vlan_tz: "vlan-tz-example"
+   vmware_nsxp_default_overlay_tz: "overlay-tz-example"
+
+.. yaml
+
+.. note::
+
+   If you want to set secure connections to VMware, set ``vmware_vcenter_insecure``
+   to false.
+   Secure connections to vCenter requires a CA file, copy the vCenter CA file to
+   ``/etc/kolla/config/vmware_ca``.
+
+.. note::
+
+   The VMware NSX-T password has to be set in ``/etc/kolla/passwords.yml``.
+
+   .. code-block:: yaml
+
+      vmware_nsxp_api_password: "xxxxx"
+      vmware_nsxp_metadata_proxy_shared_secret: "xxxxx"
+
+Then you should start :command:`kolla-ansible` deployment normally as
+KVM/QEMU deployment.
+
+VMware NSX-V
+~~~~~~~~~~~~
+
+Preparation
+-----------
+
+You should have a working NSX-V environment, this part is out of scope
+of Kolla.
+For more information, please see
+`VMware NSX-V documentation <https://docs.vmware.com/en/VMware-NSX-for-vSphere/>`__.
+
+------------------------------------------------------------------------------
+
+In addition, it is important to modify the firewall rule of vSphere to make
+sure that VNC is accessible from outside VMware environment.
+
+On every VMware host, edit ``/etc/vmware/firewall/vnc.xml`` as below:
+
+.. code-block:: xml
+
+   <!-- FirewallRule for VNC Console -->
+   <ConfigRoot>
+   <service>
+   <id>VNC</id>
+   <rule id = '0000'>
+   <direction>inbound</direction>
+   <protocol>tcp</protocol>
+   <porttype>dst</porttype>
+   <port>
+   <begin>5900</begin>
+   <end>5999</end>
+   </port>
+   </rule>
+   <rule id = '0001'>
+   <direction>outbound</direction>
+   <protocol>tcp</protocol>
+   <porttype>dst</porttype>
+   <port>
+   <begin>0</begin>
+   <end>65535</end>
+   </port>
+   </rule>
+   <enabled>true</enabled>   <required>false</required>
+   </service>
+   </ConfigRoot>
+
+Then refresh the firewall config by:
+
+.. code-block:: console
+
+   # esxcli network firewall refresh
+
+Verify that the firewall config is applied:
+
+.. code-block:: console
+
+   # esxcli network firewall ruleset list
+
+------------------------------------------------------------------------------
+
 Deployment
 ----------
 
@@ -211,7 +383,8 @@ Before deployment, you should have a working VMware vSphere environment.
 Create a cluster and a vSphere Distributed Switch with all the host in the
 cluster attached to it.
 
-For more information, please see `Setting Up Networking with vSphere Distributed Switches <http://pubs.vmware.com/vsphere-51/index.jsp#com.vmware.vsphere.networking.doc/GUID-375B45C7-684C-4C51-BA3C-70E48DFABF04.html>`__.
+For more information, please see
+`Setting Up Networking with vSphere Distributed Switches <http://pubs.vmware.com/vsphere-51/index.jsp#com.vmware.vsphere.networking.doc/GUID-375B45C7-684C-4C51-BA3C-70E48DFABF04.html>`__.
 
 Deployment
 ----------
diff --git a/etc/kolla/globals.yml b/etc/kolla/globals.yml
index 74d8e67d86..59c74a745d 100644
--- a/etc/kolla/globals.yml
+++ b/etc/kolla/globals.yml
@@ -152,8 +152,8 @@
 # addresses for that reason.
 #neutron_external_interface: "eth1"
 
-# Valid options are [ openvswitch, ovn, linuxbridge, vmware_nsxv, vmware_nsxv3, vmware_dvs ]
-# if vmware_nsxv3 is selected, enable_openvswitch MUST be set to "no" (default is yes)
+# Valid options are [ openvswitch, ovn, linuxbridge, vmware_nsxv, vmware_nsxv3, vmware_nsxp, vmware_dvs ]
+# if vmware_nsxv3 or vmware_nsxp is selected, enable_openvswitch MUST be set to "no" (default is yes)
 #neutron_plugin_agent: "openvswitch"
 
 # Valid options are [ internal, infoblox ]
diff --git a/etc/kolla/passwords.yml b/etc/kolla/passwords.yml
index 684d313531..817f5b1408 100644
--- a/etc/kolla/passwords.yml
+++ b/etc/kolla/passwords.yml
@@ -29,6 +29,8 @@ vmware_dvs_host_password:
 vmware_nsxv_password:
 vmware_vcenter_host_password:
 nsxv3_api_password:
+vmware_nsxp_api_password:
+vmware_nsxp_metadata_proxy_shared_secret:
 
 #####################
 # Hitachi NAS support
diff --git a/releasenotes/notes/add-nsxp-support-10a750d077d51ac6.yaml b/releasenotes/notes/add-nsxp-support-10a750d077d51ac6.yaml
new file mode 100644
index 0000000000..65d1f29138
--- /dev/null
+++ b/releasenotes/notes/add-nsxp-support-10a750d077d51ac6.yaml
@@ -0,0 +1,4 @@
+---
+features:
+  - |
+    Add support for the VMware NSX Policy plugin