Fix OpenBMC OEMManager

The OpenBMC OEM schemas have had many things wrong since their creation,
to the point where nobody could be using them to generate values.  This
commit fixes the issues, namely.
OemManager schema and namespace are renamed to OpenBMCManager, in line
with the Redfish specification around OEM naming conventions.
OpenBMCManager now includes versions, which is a partial fix for #184.
json-schemas are regenerated from the CSDL to json script in
Redfish-Tools, rather than being handmade.  This also introduces
versions in the json-schema.

Tested:
Redfish service validator passes.

Change-Id: I18f7d0445105a361775c04ae614d6ae2e297bbf6
Signed-off-by: Ed Tanous <ed@tanous.net>
diff --git a/redfish-core/lib/managers.hpp b/redfish-core/lib/managers.hpp
index f0a4e0a..c9ac95c 100644
--- a/redfish-core/lib/managers.hpp
+++ b/redfish-core/lib/managers.hpp
@@ -334,19 +334,20 @@
         nlohmann::json& configRoot =
             asyncResp->res.jsonValue["Oem"]["OpenBmc"]["Fan"];
         nlohmann::json& fans = configRoot["FanControllers"];
-        fans["@odata.type"] = "#OemManager.FanControllers";
+        fans["@odata.type"] = "#OpenBMCManager.v1_0_0.Manager.FanControllers";
         fans["@odata.id"] = boost::urls::format(
             "/redfish/v1/Managers/{}#/Oem/OpenBmc/Fan/FanControllers",
             BMCWEB_REDFISH_MANAGER_URI_NAME);
 
         nlohmann::json& pids = configRoot["PidControllers"];
-        pids["@odata.type"] = "#OemManager.PidControllers";
+        pids["@odata.type"] = "#OpenBMCManager.v1_0_0.Manager.PidControllers";
         pids["@odata.id"] = boost::urls::format(
             "/redfish/v1/Managers/{}#/Oem/OpenBmc/Fan/PidControllers",
             BMCWEB_REDFISH_MANAGER_URI_NAME);
 
         nlohmann::json& stepwise = configRoot["StepwiseControllers"];
-        stepwise["@odata.type"] = "#OemManager.StepwiseControllers";
+        stepwise["@odata.type"] =
+            "#OpenBMCManager.v1_0_0.Manager.StepwiseControllers";
         stepwise["@odata.id"] = boost::urls::format(
             "/redfish/v1/Managers/{}#/Oem/OpenBmc/Fan/StepwiseControllers",
             BMCWEB_REDFISH_MANAGER_URI_NAME);
@@ -355,11 +356,11 @@
         zones["@odata.id"] = boost::urls::format(
             "/redfish/v1/Managers/{}#/Oem/OpenBmc/Fan/FanZones",
             BMCWEB_REDFISH_MANAGER_URI_NAME);
-        zones["@odata.type"] = "#OemManager.FanZones";
+        zones["@odata.type"] = "#OpenBMCManager.v1_0_0.Manager.FanZones";
         configRoot["@odata.id"] =
             boost::urls::format("/redfish/v1/Managers/{}#/Oem/OpenBmc/Fan",
                                 BMCWEB_REDFISH_MANAGER_URI_NAME);
-        configRoot["@odata.type"] = "#OemManager.Fan";
+        configRoot["@odata.type"] = "#OpenBMCManager.v1_0_0.Manager.Fan";
         configRoot["Profile@Redfish.AllowableValues"] = supportedProfiles;
 
         if (!currentProfile.empty())
@@ -449,7 +450,8 @@
                         ("/Oem/OpenBmc/Fan/FanZones"_json_pointer / name)
                             .to_string());
                     zone["@odata.id"] = std::move(url);
-                    zone["@odata.type"] = "#OemManager.FanZone";
+                    zone["@odata.type"] =
+                        "#OpenBMCManager.v1_0_0.Manager.FanZone";
                     config = &zone;
                 }
 
@@ -470,7 +472,7 @@
                             .to_string());
                     controller["@odata.id"] = std::move(url);
                     controller["@odata.type"] =
-                        "#OemManager.StepwiseController";
+                        "#OpenBMCManager.v1_0_0.Manager.StepwiseController";
 
                     controller["Direction"] = *classPtr;
                 }
@@ -494,7 +496,8 @@
                              name)
                                 .to_string());
                         element["@odata.id"] = std::move(url);
-                        element["@odata.type"] = "#OemManager.FanController";
+                        element["@odata.type"] =
+                            "#OpenBMCManager.v1_0_0.Manager.FanController";
                     }
                     else
                     {
@@ -503,7 +506,8 @@
                              name)
                                 .to_string());
                         element["@odata.id"] = std::move(url);
-                        element["@odata.type"] = "#OemManager.PidController";
+                        element["@odata.type"] =
+                            "#OpenBMCManager.v1_0_0.Manager.PidController";
                     }
                 }
                 else
@@ -1999,10 +2003,9 @@
         // default oem data
         nlohmann::json& oem = asyncResp->res.jsonValue["Oem"];
         nlohmann::json& oemOpenbmc = oem["OpenBmc"];
-        oem["@odata.type"] = "#OemManager.Oem";
         oem["@odata.id"] = boost::urls::format("/redfish/v1/Managers/{}#/Oem",
                                                BMCWEB_REDFISH_MANAGER_URI_NAME);
-        oemOpenbmc["@odata.type"] = "#OemManager.OpenBmc";
+        oemOpenbmc["@odata.type"] = "#OpenBMCManager.v1_0_0.Manager";
         oemOpenbmc["@odata.id"] =
             boost::urls::format("/redfish/v1/Managers/{}#/Oem/OpenBmc",
                                 BMCWEB_REDFISH_MANAGER_URI_NAME);
diff --git a/redfish-core/schema/dmtf/installed/OemManager_v1.xml b/redfish-core/schema/dmtf/installed/OemManager_v1.xml
deleted file mode 120000
index cce8142..0000000
--- a/redfish-core/schema/dmtf/installed/OemManager_v1.xml
+++ /dev/null
@@ -1 +0,0 @@
-../../../../redfish-core/schema/oem/openbmc/csdl/OemManager_v1.xml
\ No newline at end of file
diff --git a/redfish-core/schema/dmtf/installed/OpenBMCManager_v1.xml b/redfish-core/schema/dmtf/installed/OpenBMCManager_v1.xml
new file mode 120000
index 0000000..9cba5cc
--- /dev/null
+++ b/redfish-core/schema/dmtf/installed/OpenBMCManager_v1.xml
@@ -0,0 +1 @@
+../../../../redfish-core/schema/oem/openbmc/csdl/OpenBMCManager_v1.xml
\ No newline at end of file
diff --git a/redfish-core/schema/oem/openbmc/csdl/OemManager_v1.xml b/redfish-core/schema/oem/openbmc/csdl/OpenBMCManager_v1.xml
similarity index 67%
rename from redfish-core/schema/oem/openbmc/csdl/OemManager_v1.xml
rename to redfish-core/schema/oem/openbmc/csdl/OpenBMCManager_v1.xml
index eb2bf34..a170899 100644
--- a/redfish-core/schema/oem/openbmc/csdl/OemManager_v1.xml
+++ b/redfish-core/schema/oem/openbmc/csdl/OpenBMCManager_v1.xml
@@ -20,266 +20,325 @@
   </edmx:Reference>
 
   <edmx:DataServices>
-    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="OemManager">
-      <ComplexType Name="Oem" BaseType="Resource.OemObject">
-        <Annotation Term="OData.AdditionalProperties" Bool="true" />
-        <Annotation Term="OData.Description" String="OemManager Oem properties." />
-        <Annotation Term="OData.AutoExpand"/>
-        <Property Name="OpenBmc" Type="OemManager.OpenBmc"/>
+
+    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="OpenBMCManager">
+      <Annotation Term="Redfish.OwningEntity" String="OpenBMC"/>
+      <Annotation Term="OData.Description" String="OpenBMC extensions to the standard manager."/>
+      <Annotation Term="OData.LongDescription" String="OpenBMC extensions to that standard manager."/>
+      <Annotation Term="Redfish.Uris">
+        <Collection>
+          <String>/redfish/v1/Managers#/OpenBMC</String>
+        </Collection>
+      </Annotation>
+    </Schema>
+
+    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="OpenBMCManager.v1_0_0">
+      <Annotation Term="Redfish.OwningEntity" String="OpenBMC"/>
+
+      <ComplexType Name="Manager" BaseType="Resource.OemObject">
+        <Annotation Term="OData.AdditionalProperties" Bool="false" />
+        <Annotation Term="OData.Description" String="OpenBMCManager Oem properties." />
+        <Property Name="Fan" Type="OpenBMCManager.v1_0_0.Fan">
+          <Annotation Term="OData.Description" String="OpenBMC fan configuration."/>
+          <Annotation Term="OData.LongDescription" String="OpenBMC fan configuration."/>
+        </Property>
       </ComplexType>
 
-      <ComplexType Name="OpenBmc" BaseType="Resource.OemObject">
-        <Annotation Term="OData.AdditionalProperties" Bool="true" />
-        <Annotation Term="OData.Description" String="Oem properties for OpenBmc." />
-        <Annotation Term="OData.AutoExpand"/>
-        <Property Name="Fan" Type="OemManager.Fan"/>
-      </ComplexType>
-
-      <ComplexType Name="Fan" BaseType="Resource.OemObject">
-        <Annotation Term="OData.AdditionalProperties" Bool="true" />
+      <ComplexType Name="Fan">
+        <Annotation Term="OData.AdditionalProperties" Bool="false" />
         <Annotation Term="OData.Description" String="OpenBmc oem fan properties." />
+        <Annotation Term="OData.LongDescription" String="OpenBMC oem fan properties."/>
         <Annotation Term="OData.AutoExpand"/>
-        <Property Name="FanControllers" Type="OemManager.FanControllers"/>
-        <Property Name="PidControllers" Type="OemManager.PidControllers"/>
-        <Property Name="StepwiseControllers" Type="OemManager.StepwiseControllers"/>
-        <Property Name="FanZones" Type="OemManager.FanZones"/>
+        <Property Name="FanControllers" Type="OpenBMCManager.v1_0_0.FanControllers">
+          <Annotation Term="OData.Description" String="Current OpenBMC fan controllers."/>
+          <Annotation Term="OData.LongDescription" String="Current OpenBMC fan controllers."/>
+        </Property>
+        <Property Name="PidControllers" Type="OpenBMCManager.v1_0_0.PidControllers">
+          <Annotation Term="OData.Description" String="Current OpenBMC pid controllers."/>
+          <Annotation Term="OData.LongDescription" String="Current OpenBMC pid controllers."/>
+        </Property>
+        <Property Name="StepwiseControllers" Type="OpenBMCManager.v1_0_0.StepwiseControllers">
+          <Annotation Term="OData.Description" String="Current OpenBMC stepwise controllers."/>
+          <Annotation Term="OData.LongDescription" String="Current OpenBMC stepwise controllers."/>
+        </Property>
+        <Property Name="FanZones" Type="OpenBMCManager.v1_0_0.FanZones">
+          <Annotation Term="OData.Description" String="Current OpenBMC fan zones."/>
+          <Annotation Term="OData.LongDescription" String="Current OpenBMC fan zones."/>
+        </Property>
         <Property Name="Profile" Type="Edm.String">
           <Annotation Term="OData.Description" String="Current thermal profile."/>
           <Annotation Term="OData.LongDescription" String="Current thermal profile."/>
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
-
       </ComplexType>
 
-      <ComplexType Name="FanControllers" BaseType="Resource.OemObject">
+      <ComplexType Name="FanControllers">
         <Annotation Term="OData.AdditionalProperties" Bool="true" />
         <Annotation Term="OData.Description" String="OpenBmc FanControllers." />
         <Annotation Term="OData.LongDescription" String="Container for OpenBmc fan controllers." />
         <Annotation Term="Redfish.DynamicPropertyPatterns">
           <Collection>
-            <NavigationProperty Type="OemManager.FanController">
-              <Annotation Term="OData.AutoExpand"/>
+            <Record>
               <PropertyValue Property="Pattern" String="[A-Za-z0-9_.:]+" />
-              <PropertyValue Property="Type" String="OemManager.FanController" />
-            </NavigationProperty>
+              <PropertyValue Property="Type" String="OpenBMCManager.v1_0_0.FanController" />
+            </Record>
           </Collection>
         </Annotation>
       </ComplexType>
 
-      <ComplexType Name="PidControllers" BaseType="Resource.OemObject">
+      <ComplexType Name="PidControllers">
         <Annotation Term="OData.AdditionalProperties" Bool="true" />
         <Annotation Term="OData.Description" String="OpenBmc PidControllers." />
         <Annotation Term="OData.LongDescription" String="Container for OpenBmc pid controllers." />
         <Annotation Term="Redfish.DynamicPropertyPatterns">
           <Collection>
-            <NavigationProperty>
-              <Annotation Term="OData.AutoExpand"/>
+            <Record>
               <PropertyValue Property="Pattern" String="[A-Za-z0-9_.:]+" />
-              <PropertyValue Property="Type" String="OemManager.PidController" />
-            </NavigationProperty>
+              <PropertyValue Property="Type" String="OpenBMCManager.v1_0_0.PidController" />
+            </Record>
           </Collection>
         </Annotation>
       </ComplexType>
 
-      <ComplexType Name="StepwiseControllers" BaseType="Resource.OemObject">
+      <ComplexType Name="StepwiseControllers">
         <Annotation Term="OData.AdditionalProperties" Bool="true" />
         <Annotation Term="OData.Description" String="OpenBmc StepwiseControllers." />
         <Annotation Term="OData.LongDescription" String="Container for OpenBmc Stepwise controllers." />
         <Annotation Term="Redfish.DynamicPropertyPatterns">
           <Collection>
-            <NavigationProperty>
-              <Annotation Term="OData.AutoExpand"/>
+            <Record>
               <PropertyValue Property="Pattern" String="[A-Za-z0-9_.:]+" />
-              <PropertyValue Property="Type" String="OemManager.StepwiseController" />
-            </NavigationProperty>
+              <PropertyValue Property="Type" String="OpenBMCManager.v1_0_0.StepwiseController" />
+            </Record>
           </Collection>
         </Annotation>
       </ComplexType>
 
-      <ComplexType Name="FanZones" BaseType="Resource.OemObject">
+      <ComplexType Name="FanZones">
         <Annotation Term="OData.AdditionalProperties" Bool="true" />
         <Annotation Term="OData.Description" String="OpenBmc FanZones." />
         <Annotation Term="OData.LongDescription" String="Container for OpenBmc fan zones." />
         <Annotation Term="Redfish.DynamicPropertyPatterns">
           <Collection>
-            <NavigationProperty>
-              <Annotation Term="OData.AutoExpand"/>
+            <Record>
               <PropertyValue Property="Pattern" String="[A-Za-z0-9_.:]+" />
-              <PropertyValue Property="Type" String="OemManager.FanZone" />
-            </NavigationProperty>
+              <PropertyValue Property="Type" String="OpenBMCManager.v1_0_0.FanZone" />
+            </Record>
           </Collection>
         </Annotation>
       </ComplexType>
 
-      <ComplexType Name="FanController" BaseType="Resource.OemObject">
+      <ComplexType Name="FanController">
         <Annotation Term="OData.AdditionalProperties" Bool="false" />
         <Annotation Term="OData.Description" String="Configuration data for Fan Controllers." />
+        <Annotation Term="OData.LongDescription" String="Configuration data for Fan Controllers." />
         <Property Name="FFGainCoefficient" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Feed forward gain coefficient for the PID." />
           <Annotation Term="OData.LongDescription" String="Feed forward gain coefficient for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="FFOffCoefficient" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Feed forward offset coefficient for the PID." />
           <Annotation Term="OData.LongDescription" String="Feed forward offset coefficient for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="ICoefficient" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Integral Coefficient for the PID." />
           <Annotation Term="OData.LongDescription" String="Integral Coefficient for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="ILimitMax" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Integral limit maximum for the PID." />
           <Annotation Term="OData.LongDescription" String="Integral limit maximum for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="ILimitMin" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Integral limit minimum for the PID." />
           <Annotation Term="OData.LongDescription" String="Integral limit minimum for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="Inputs" Type="Collection(Edm.String)">
           <Annotation Term="OData.Description" String="Input sensors to the PID controller."/>
           <Annotation Term="OData.LongDescription" String="Input sensors to the PID controller."/>
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="OutLimitMax" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Output limit maximum for the pwm." />
           <Annotation Term="OData.LongDescription" String="Output limit maximum for the pwm." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="OutLimitMin" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Output limit minimum for the pwm." />
           <Annotation Term="OData.LongDescription" String="Output limit minimum for the pwm." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="NegativeHysteresis" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Negative hysteresis for the controller." />
           <Annotation Term="OData.LongDescription" String="Negative hysteresis for the controller." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
          </Property>
         <Property Name="PositiveHysteresis" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Positive hysteresis for the controller." />
           <Annotation Term="OData.LongDescription" String="Positive hysteresis for the controller." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
          </Property>
         <Property Name="Outputs" Type="Collection(Edm.String)">
           <Annotation Term="OData.Description" String="Output sensors to the PID controller."/>
           <Annotation Term="OData.LongDescription" String="Output sensors to the PID controller."/>
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="PCoefficient" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Polynomial coefficient for the PID." />
           <Annotation Term="OData.LongDescription" String="Polynomial coefficient for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="SlewNeg" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Negative slew rate for the PID." />
           <Annotation Term="OData.LongDescription" String="Negative slew rate for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="SlewPos" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Positive slew rate for the PID." />
           <Annotation Term="OData.LongDescription" String="Positive slew rate for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
-        <NavigationProperty Name="Zones" Type="Collection(OemManager.FanZone)">
+        <NavigationProperty Name="Zones" Type="Collection(OpenBMCManager.v1_0_0.FanZone)">
           <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read" />
           <Annotation Term="OData.Description" String="Contains the Zones that this PID contributes to." />
+          <Annotation Term="OData.LongDescription" String="Contains the Zones that this PID contributes to." />
           <Annotation Term="OData.AutoExpandReferences"/>
         </NavigationProperty>
       </ComplexType>
 
-      <ComplexType Name="FanZone" BaseType="Resource.OemObject">
+      <ComplexType Name="FanZone">
         <Annotation Term="OData.AdditionalProperties" Bool="false" />
         <Annotation Term="OData.Description" String="Configuration data for Fan Controllers." />
+        <Annotation Term="OData.LongDescription" String="Configuration data for Fan Controllers." />
         <Property Name="FailSafePercent" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="If the sensors are in fail-safe mode, this is the percentage to use." />
           <Annotation Term="OData.LongDescription" String="If the sensors are in fail-safe mode, this is the percentage to use." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="MinThermalOutput" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Minimum thermal RPM that can be set in this Zone." />
           <Annotation Term="OData.LongDescription" String="Minimum thermal RPM that can be set in this Zone." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <NavigationProperty Name="Chassis" Type="Chassis.Chassis">
           <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
           <Annotation Term="OData.Description" String="The Chassis that enables this Zone."/>
+          <Annotation Term="OData.LongDescription" String="The Chassis that enables this Zone."/>
           <Annotation Term="OData.AutoExpandReferences"/>
         </NavigationProperty>
       </ComplexType>
 
-      <ComplexType Name="PidController" BaseType="Resource.OemObject">
+      <ComplexType Name="PidController">
         <Annotation Term="OData.AdditionalProperties" Bool="false" />
         <Annotation Term="OData.Description" String="Configuration data for Fan Controllers." />
+        <Annotation Term="OData.LongDescription" String="Configuration data for Fan Controllers." />
         <Property Name="FFGainCoefficient" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Feed forward gain coefficient for the PID." />
           <Annotation Term="OData.LongDescription" String="Feed forward gain coefficient for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="FFOffCoefficient" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Feed forward offset coefficient for the PID." />
           <Annotation Term="OData.LongDescription" String="Feed forward offset coefficient for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="ICoefficient" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Integral Coefficient for the PID." />
           <Annotation Term="OData.LongDescription" String="Integral Coefficient for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="ILimitMax" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Integral limit maximum for the PID." />
           <Annotation Term="OData.LongDescription" String="Integral limit maximum for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="ILimitMin" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Integral limit minimum for the PID." />
           <Annotation Term="OData.LongDescription" String="Integral limit minimum for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="Inputs" Type="Collection(Edm.String)">
           <Annotation Term="OData.Description" String="Input sensors to the PID controller."/>
           <Annotation Term="OData.LongDescription" String="Input sensors to the PID controller."/>
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="OutLimitMax" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Output limit maximum for the pwm." />
           <Annotation Term="OData.LongDescription" String="Output limit maximum for the pwm." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="OutLimitMin" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Output limit minimum for the pwm." />
           <Annotation Term="OData.LongDescription" String="Output limit minimum for the pwm." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="NegativeHysteresis" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Negative hysteresis for the controller." />
           <Annotation Term="OData.LongDescription" String="Negative hysteresis for the controller." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
          </Property>
         <Property Name="PositiveHysteresis" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Positive hysteresis for the controller." />
           <Annotation Term="OData.LongDescription" String="Positive hysteresis for the controller." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
          </Property>
         <Property Name="PCoefficient" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Polynomial coefficient for the PID." />
           <Annotation Term="OData.LongDescription" String="Polynomial coefficient for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
          <Property Name="SetPoint" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Setpoint for the PID." />
           <Annotation Term="OData.LongDescription" String="Setpoint for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="SetPointOffset" Type="Edm.String" Nullable="false">
           <Annotation Term="OData.Description" String="Threshold to take value from and apply to setpoint." />
           <Annotation Term="OData.LongDescription" String="Threshold to take value from and apply to setpoint. Valid threshold names are supported." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="SlewNeg" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Negative slew rate for the PID." />
           <Annotation Term="OData.LongDescription" String="Negative slew rate for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="SlewPos" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Positive slew rate for the PID." />
           <Annotation Term="OData.LongDescription" String="Positive slew rate for the PID." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
-        <NavigationProperty Name="Zones" Type="Collection(OemManager.FanZone)">
+        <NavigationProperty Name="Zones" Type="Collection(OpenBMCManager.v1_0_0.FanZone)">
           <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read" />
           <Annotation Term="OData.Description" String="Contains the Zones that this PID contributes to." />
+          <Annotation Term="OData.LongDescription" String="Contains the Zones that this PID contributes to." />
           <Annotation Term="OData.AutoExpandReferences"/>
         </NavigationProperty>
       </ComplexType>
 
-      <ComplexType Name="StepwiseController" BaseType="Resource.OemObject">
+      <ComplexType Name="StepwiseController">
         <Annotation Term="OData.AdditionalProperties" Bool="false" />
         <Annotation Term="OData.Description" String="Configuration data for Stepwise Controllers." />
+        <Annotation Term="OData.LongDescription" String="Configuration data for Stepwise Controllers." />
         <Property Name="Inputs" Type="Collection(Edm.String)">
           <Annotation Term="OData.Description" String="Input sensors to the Stepwise controller."/>
           <Annotation Term="OData.LongDescription" String="Input sensors to the Stepwise controller."/>
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="NegativeHysteresis" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Negative Hysteresis for the stepwise controller." />
           <Annotation Term="OData.LongDescription" String="Negative Hysteresis for the stepwise controller." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="PositiveHysteresis" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Positive Hysteresis for the stepwise controller." />
           <Annotation Term="OData.LongDescription" String="Positive Hysteresis for the stepwise controller." />
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
-        <Property Name="Steps" Type="Collection(OemManager.StepwiseSteps)">
+        <Property Name="Steps" Type="Collection(OpenBMCManager.v1_0_0.StepwiseSteps)">
           <Annotation Term="OData.Description" String="Temperature vs RPM steps for the stepwise controller." />
           <Annotation Term="OData.LongDescription" String="Temperature vs RPM steps for the stepwise controller." />
           <Annotation Term="OData.AutoExpand"/>
@@ -287,22 +346,29 @@
         <Property Name="Direction" Type="Edm.String">
           <Annotation Term="OData.Description" String="Direction that the stepwise controller applies."/>
           <Annotation Term="OData.LongDescription" String="Direction that the stepwise controller applies. Options include Ceiling and Floor."/>
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
-        <NavigationProperty Name="Zones" Type="Collection(OemManager.FanZone)">
+        <NavigationProperty Name="Zones" Type="Collection(OpenBMCManager.v1_0_0.FanZone)">
           <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read" />
           <Annotation Term="OData.Description" String="Contains the Zones that this controller contributes to." />
+          <Annotation Term="OData.LongDescription" String="Contains the Zones that this controller contributes to." />
           <Annotation Term="OData.AutoExpandReferences"/>
         </NavigationProperty>
       </ComplexType>
 
-      <ComplexType Name="StepwiseSteps" BaseType="Resource.OemObject">
+      <ComplexType Name="StepwiseSteps">
+        <Annotation Term="OData.AdditionalProperties" Bool="false" />
+        <Annotation Term="OData.Description" String="Single stepwise step pair." />
+        <Annotation Term="OData.LongDescription" String="Single stepwise step pair." />
         <Property Name="Target" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Input sensor reading for step."/>
           <Annotation Term="OData.LongDescription" String="Input sensor reading for step."/>
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
         <Property Name="Output" Type="Edm.Decimal" Nullable="false">
           <Annotation Term="OData.Description" String="Fan speed setting for step."/>
           <Annotation Term="OData.LongDescription" String="Fan speed setting for step."/>
+          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite" />
         </Property>
       </ComplexType>
     </Schema>
diff --git a/redfish-core/schema/oem/openbmc/json-schema/OpenBMCManager.json b/redfish-core/schema/oem/openbmc/json-schema/OpenBMCManager.json
new file mode 100644
index 0000000..d3b2f7e
--- /dev/null
+++ b/redfish-core/schema/oem/openbmc/json-schema/OpenBMCManager.json
@@ -0,0 +1,8 @@
+{
+    "$id": "https://github.com/openbmc/bmcweb/tree/master/static/redfish/v1/JsonSchemasOpenBMCManager.json",
+    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema-v1.json",
+    "copyright": "Copyright 2023 OpenBMC.",
+    "definitions": {},
+    "owningEntity": "OpenBMC",
+    "title": "#OpenBMCManager"
+}
diff --git a/redfish-core/schema/oem/openbmc/json-schema/OemManager.json b/redfish-core/schema/oem/openbmc/json-schema/OpenBMCManager.v1_0_0.json
similarity index 81%
rename from redfish-core/schema/oem/openbmc/json-schema/OemManager.json
rename to redfish-core/schema/oem/openbmc/json-schema/OpenBMCManager.v1_0_0.json
index 6771a3c..3fad426 100644
--- a/redfish-core/schema/oem/openbmc/json-schema/OemManager.json
+++ b/redfish-core/schema/oem/openbmc/json-schema/OpenBMCManager.v1_0_0.json
@@ -1,16 +1,19 @@
 {
-    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema.v1_4_0.json",
-    "copyright": "Copyright 2014-2018 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright",
+    "$id": "https://github.com/openbmc/bmcweb/tree/master/static/redfish/v1/JsonSchemasOpenBMCManager.v1_0_0.json",
+    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema-v1.json",
+    "copyright": "Copyright 2023 OpenBMC.",
     "definitions": {
         "Fan": {
-            "additionalProperties": true,
+            "additionalProperties": false,
             "description": "OpenBmc oem fan properties.",
+            "longDescription": "OpenBMC oem fan properties.",
             "patternProperties": {
-                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
+                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                     "description": "This property shall specify a valid odata or Redfish property.",
                     "type": [
                         "array",
                         "boolean",
+                        "integer",
                         "number",
                         "null",
                         "object",
@@ -27,7 +30,9 @@
                         {
                             "type": "null"
                         }
-                    ]
+                    ],
+                    "description": "Current OpenBMC fan controllers.",
+                    "longDescription": "Current OpenBMC fan controllers."
                 },
                 "FanZones": {
                     "anyOf": [
@@ -37,7 +42,9 @@
                         {
                             "type": "null"
                         }
-                    ]
+                    ],
+                    "description": "Current OpenBMC fan zones.",
+                    "longDescription": "Current OpenBMC fan zones."
                 },
                 "PidControllers": {
                     "anyOf": [
@@ -47,11 +54,14 @@
                         {
                             "type": "null"
                         }
-                    ]
+                    ],
+                    "description": "Current OpenBMC pid controllers.",
+                    "longDescription": "Current OpenBMC pid controllers."
                 },
                 "Profile": {
                     "description": "Current thermal profile.",
                     "longDescription": "Current thermal profile.",
+                    "readonly": false,
                     "type": ["string", "null"]
                 },
                 "StepwiseControllers": {
@@ -62,7 +72,9 @@
                         {
                             "type": "null"
                         }
-                    ]
+                    ],
+                    "description": "Current OpenBMC stepwise controllers.",
+                    "longDescription": "Current OpenBMC stepwise controllers."
                 }
             },
             "type": "object"
@@ -70,12 +82,14 @@
         "FanController": {
             "additionalProperties": false,
             "description": "Configuration data for Fan Controllers.",
+            "longDescription": "Configuration data for Fan Controllers.",
             "patternProperties": {
-                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
+                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                     "description": "This property shall specify a valid odata or Redfish property.",
                     "type": [
                         "array",
                         "boolean",
+                        "integer",
                         "number",
                         "null",
                         "object",
@@ -87,26 +101,31 @@
                 "FFGainCoefficient": {
                     "description": "Feed forward gain coefficient for the PID.",
                     "longDescription": "Feed forward gain coefficient for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "FFOffCoefficient": {
                     "description": "Feed forward offset coefficient for the PID.",
                     "longDescription": "Feed forward offset coefficient for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "ICoefficient": {
                     "description": "Integral Coefficient for the PID.",
                     "longDescription": "Integral Coefficient for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "ILimitMax": {
                     "description": "Integral limit maximum for the PID.",
                     "longDescription": "Integral limit maximum for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "ILimitMin": {
                     "description": "Integral limit minimum for the PID.",
                     "longDescription": "Integral limit minimum for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "Inputs": {
@@ -115,21 +134,25 @@
                         "type": ["string", "null"]
                     },
                     "longDescription": "Input sensors to the PID controller.",
+                    "readonly": false,
                     "type": "array"
                 },
                 "NegativeHysteresis": {
                     "description": "Negative hysteresis for the controller.",
                     "longDescription": "Negative hysteresis for the controller.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "OutLimitMax": {
                     "description": "Output limit maximum for the pwm.",
                     "longDescription": "Output limit maximum for the pwm.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "OutLimitMin": {
                     "description": "Output limit minimum for the pwm.",
                     "longDescription": "Output limit minimum for the pwm.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "Outputs": {
@@ -138,26 +161,31 @@
                         "type": ["string", "null"]
                     },
                     "longDescription": "Output sensors to the PID controller.",
+                    "readonly": false,
                     "type": "array"
                 },
                 "PCoefficient": {
                     "description": "Polynomial coefficient for the PID.",
                     "longDescription": "Polynomial coefficient for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "PositiveHysteresis": {
                     "description": "Positive hysteresis for the controller.",
                     "longDescription": "Positive hysteresis for the controller.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "SlewNeg": {
                     "description": "Negative slew rate for the PID.",
                     "longDescription": "Negative slew rate for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "SlewPos": {
                     "description": "Positive slew rate for the PID.",
                     "longDescription": "Positive slew rate for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "Zones": {
@@ -165,11 +193,12 @@
                     "items": {
                         "$ref": "#/definitions/FanZone"
                     },
+                    "longDescription": "Contains the Zones that this PID contributes to.",
                     "readonly": true,
                     "type": "array"
                 },
                 "Zones@odata.count": {
-                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata.v4_0_2.json#/definitions/count"
+                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
                 }
             },
             "type": "object"
@@ -179,11 +208,15 @@
             "description": "OpenBmc FanControllers.",
             "longDescription": "Container for OpenBmc fan controllers.",
             "patternProperties": {
-                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
+                "[A-Za-z0-9_.:]+": {
+                    "$ref": "#/definitions/FanController"
+                },
+                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                     "description": "This property shall specify a valid odata or Redfish property.",
                     "type": [
                         "array",
                         "boolean",
+                        "integer",
                         "number",
                         "null",
                         "object",
@@ -197,12 +230,14 @@
         "FanZone": {
             "additionalProperties": false,
             "description": "Configuration data for Fan Controllers.",
+            "longDescription": "Configuration data for Fan Controllers.",
             "patternProperties": {
-                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
+                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                     "description": "This property shall specify a valid odata or Redfish property.",
                     "type": [
                         "array",
                         "boolean",
+                        "integer",
                         "number",
                         "null",
                         "object",
@@ -221,16 +256,19 @@
                         }
                     ],
                     "description": "The Chassis that enables this Zone.",
+                    "longDescription": "The Chassis that enables this Zone.",
                     "readonly": true
                 },
                 "FailSafePercent": {
                     "description": "If the sensors are in fail-safe mode, this is the percentage to use.",
                     "longDescription": "If the sensors are in fail-safe mode, this is the percentage to use.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "MinThermalOutput": {
                     "description": "Minimum thermal RPM that can be set in this Zone.",
                     "longDescription": "Minimum thermal RPM that can be set in this Zone.",
+                    "readonly": false,
                     "type": "number"
                 }
             },
@@ -241,11 +279,15 @@
             "description": "OpenBmc FanZones.",
             "longDescription": "Container for OpenBmc fan zones.",
             "patternProperties": {
-                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
+                "[A-Za-z0-9_.:]+": {
+                    "$ref": "#/definitions/FanZone"
+                },
+                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                     "description": "This property shall specify a valid odata or Redfish property.",
                     "type": [
                         "array",
                         "boolean",
+                        "integer",
                         "number",
                         "null",
                         "object",
@@ -256,45 +298,16 @@
             "properties": {},
             "type": "object"
         },
-        "Oem": {
-            "additionalProperties": true,
-            "description": "OemManager Oem properties.",
+        "Manager": {
+            "additionalProperties": false,
+            "description": "OpenBMCManager Oem properties.",
             "patternProperties": {
-                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
+                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                     "description": "This property shall specify a valid odata or Redfish property.",
                     "type": [
                         "array",
                         "boolean",
-                        "number",
-                        "null",
-                        "object",
-                        "string"
-                    ]
-                }
-            },
-            "properties": {
-                "OpenBmc": {
-                    "anyOf": [
-                        {
-                            "$ref": "#/definitions/OpenBmc"
-                        },
-                        {
-                            "type": "null"
-                        }
-                    ]
-                }
-            },
-            "type": "object"
-        },
-        "OpenBmc": {
-            "additionalProperties": true,
-            "description": "Oem properties for OpenBmc.",
-            "patternProperties": {
-                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
-                    "description": "This property shall specify a valid odata or Redfish property.",
-                    "type": [
-                        "array",
-                        "boolean",
+                        "integer",
                         "number",
                         "null",
                         "object",
@@ -311,7 +324,9 @@
                         {
                             "type": "null"
                         }
-                    ]
+                    ],
+                    "description": "OpenBMC fan configuration.",
+                    "longDescription": "OpenBMC fan configuration."
                 }
             },
             "type": "object"
@@ -319,12 +334,14 @@
         "PidController": {
             "additionalProperties": false,
             "description": "Configuration data for Fan Controllers.",
+            "longDescription": "Configuration data for Fan Controllers.",
             "patternProperties": {
-                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
+                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                     "description": "This property shall specify a valid odata or Redfish property.",
                     "type": [
                         "array",
                         "boolean",
+                        "integer",
                         "number",
                         "null",
                         "object",
@@ -336,26 +353,31 @@
                 "FFGainCoefficient": {
                     "description": "Feed forward gain coefficient for the PID.",
                     "longDescription": "Feed forward gain coefficient for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "FFOffCoefficient": {
                     "description": "Feed forward offset coefficient for the PID.",
                     "longDescription": "Feed forward offset coefficient for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "ICoefficient": {
                     "description": "Integral Coefficient for the PID.",
                     "longDescription": "Integral Coefficient for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "ILimitMax": {
                     "description": "Integral limit maximum for the PID.",
                     "longDescription": "Integral limit maximum for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "ILimitMin": {
                     "description": "Integral limit minimum for the PID.",
                     "longDescription": "Integral limit minimum for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "Inputs": {
@@ -364,51 +386,61 @@
                         "type": ["string", "null"]
                     },
                     "longDescription": "Input sensors to the PID controller.",
+                    "readonly": false,
                     "type": "array"
                 },
                 "NegativeHysteresis": {
                     "description": "Negative hysteresis for the controller.",
                     "longDescription": "Negative hysteresis for the controller.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "OutLimitMax": {
                     "description": "Output limit maximum for the pwm.",
                     "longDescription": "Output limit maximum for the pwm.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "OutLimitMin": {
                     "description": "Output limit minimum for the pwm.",
                     "longDescription": "Output limit minimum for the pwm.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "PCoefficient": {
                     "description": "Polynomial coefficient for the PID.",
                     "longDescription": "Polynomial coefficient for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "PositiveHysteresis": {
                     "description": "Positive hysteresis for the controller.",
                     "longDescription": "Positive hysteresis for the controller.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "SetPoint": {
                     "description": "Setpoint for the PID.",
                     "longDescription": "Setpoint for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "SetPointOffset": {
                     "description": "Threshold to take value from and apply to setpoint.",
                     "longDescription": "Threshold to take value from and apply to setpoint. Valid threshold names are supported.",
+                    "readonly": false,
                     "type": "string"
                 },
                 "SlewNeg": {
                     "description": "Negative slew rate for the PID.",
                     "longDescription": "Negative slew rate for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "SlewPos": {
                     "description": "Positive slew rate for the PID.",
                     "longDescription": "Positive slew rate for the PID.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "Zones": {
@@ -416,11 +448,12 @@
                     "items": {
                         "$ref": "#/definitions/FanZone"
                     },
+                    "longDescription": "Contains the Zones that this PID contributes to.",
                     "readonly": true,
                     "type": "array"
                 },
                 "Zones@odata.count": {
-                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata.v4_0_2.json#/definitions/count"
+                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
                 }
             },
             "type": "object"
@@ -430,11 +463,15 @@
             "description": "OpenBmc PidControllers.",
             "longDescription": "Container for OpenBmc pid controllers.",
             "patternProperties": {
-                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
+                "[A-Za-z0-9_.:]+": {
+                    "$ref": "#/definitions/PidController"
+                },
+                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                     "description": "This property shall specify a valid odata or Redfish property.",
                     "type": [
                         "array",
                         "boolean",
+                        "integer",
                         "number",
                         "null",
                         "object",
@@ -448,12 +485,14 @@
         "StepwiseController": {
             "additionalProperties": false,
             "description": "Configuration data for Stepwise Controllers.",
+            "longDescription": "Configuration data for Stepwise Controllers.",
             "patternProperties": {
-                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
+                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                     "description": "This property shall specify a valid odata or Redfish property.",
                     "type": [
                         "array",
                         "boolean",
+                        "integer",
                         "number",
                         "null",
                         "object",
@@ -465,6 +504,7 @@
                 "Direction": {
                     "description": "Direction that the stepwise controller applies.",
                     "longDescription": "Direction that the stepwise controller applies. Options include Ceiling and Floor.",
+                    "readonly": false,
                     "type": ["string", "null"]
                 },
                 "Inputs": {
@@ -473,19 +513,23 @@
                         "type": ["string", "null"]
                     },
                     "longDescription": "Input sensors to the Stepwise controller.",
+                    "readonly": false,
                     "type": "array"
                 },
                 "NegativeHysteresis": {
                     "description": "Negative Hysteresis for the stepwise controller.",
                     "longDescription": "Negative Hysteresis for the stepwise controller.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "PositiveHysteresis": {
                     "description": "Positive Hysteresis for the stepwise controller.",
                     "longDescription": "Positive Hysteresis for the stepwise controller.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "Steps": {
+                    "autoExpand": true,
                     "description": "Temperature vs RPM steps for the stepwise controller.",
                     "items": {
                         "anyOf": [
@@ -505,11 +549,12 @@
                     "items": {
                         "$ref": "#/definitions/FanZone"
                     },
+                    "longDescription": "Contains the Zones that this controller contributes to.",
                     "readonly": true,
                     "type": "array"
                 },
                 "Zones@odata.count": {
-                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata.v4_0_2.json#/definitions/count"
+                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/count"
                 }
             },
             "type": "object"
@@ -519,11 +564,15 @@
             "description": "OpenBmc StepwiseControllers.",
             "longDescription": "Container for OpenBmc Stepwise controllers.",
             "patternProperties": {
-                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
+                "[A-Za-z0-9_.:]+": {
+                    "$ref": "#/definitions/StepwiseController"
+                },
+                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                     "description": "This property shall specify a valid odata or Redfish property.",
                     "type": [
                         "array",
                         "boolean",
+                        "integer",
                         "number",
                         "null",
                         "object",
@@ -536,12 +585,15 @@
         },
         "StepwiseSteps": {
             "additionalProperties": false,
+            "description": "Single stepwise step pair.",
+            "longDescription": "Single stepwise step pair.",
             "patternProperties": {
-                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_.]+$": {
+                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
                     "description": "This property shall specify a valid odata or Redfish property.",
                     "type": [
                         "array",
                         "boolean",
+                        "integer",
                         "number",
                         "null",
                         "object",
@@ -553,16 +605,19 @@
                 "Output": {
                     "description": "Fan speed setting for step.",
                     "longDescription": "Fan speed setting for step.",
+                    "readonly": false,
                     "type": "number"
                 },
                 "Target": {
                     "description": "Input sensor reading for step.",
                     "longDescription": "Input sensor reading for step.",
+                    "readonly": false,
                     "type": "number"
                 }
             },
             "type": "object"
         }
     },
-    "title": "#OemManager"
+    "owningEntity": "OpenBMC",
+    "title": "#OpenBMCManager.v1_0_0"
 }
diff --git a/redfish-core/schema/oem/openbmc/meson.build b/redfish-core/schema/oem/openbmc/meson.build
index 651aaaf..40d5b54 100644
--- a/redfish-core/schema/oem/openbmc/meson.build
+++ b/redfish-core/schema/oem/openbmc/meson.build
@@ -1,7 +1,7 @@
 # Mapping from option key name to schemas that should be installed if that option is enabled
 schemas = {
     'insecure-disable-auth': 'OpenBMCAccountService',
-    'redfish-oem-manager-fan-data': 'OemManager',
+    'redfish-oem-manager-fan-data': 'OpenBMCManager',
     'redfish-provisioning-feature': 'OemComputerSystem',
     #'vm-nbdproxy': 'OemVirtualMedia',
 }
@@ -18,4 +18,4 @@
             install_dir: '/var/www/redfish/v1/JsonSchema/@0@'.format(schema),
         )
     endif
-endforeach
\ No newline at end of file
+endforeach