diff --git a/sdnr/wt/devicemanager-openroadm/provider/src/main/yang/org-openroadm-pm-types@2019-11-29.yang b/sdnr/wt/devicemanager-openroadm/provider/src/main/yang/org-openroadm-pm-types@2019-11-29.yang
deleted file mode 100644
index 78dd893..0000000
--- a/sdnr/wt/devicemanager-openroadm/provider/src/main/yang/org-openroadm-pm-types@2019-11-29.yang
+++ /dev/null
@@ -1,680 +0,0 @@
-module org-openroadm-pm-types {
-  namespace "http://org/openroadm/pm-types";
-  prefix org-openroadm-pm-types;
-
-  organization
-    "Open ROADM MSA";
-  contact
-    "OpenROADM.org";
-  description
-    "YANG definitions of performance management types.
-
-      Copyright of the Members of the Open ROADM MSA Agreement dated (c) 2016,
-      All other rights reserved.
-
-      Redistribution and use in source and binary forms, with or without modification,
-      are permitted provided that the following conditions are met:
-
-      * Redistributions of source code must retain the above copyright notice, this
-        list of conditions and the following disclaimer.
-      * Redistributions in binary form must reproduce the above copyright notice,
-        this list of conditions and the following disclaimer in the documentation and/or
-        other materials provided with the distribution.
-      * Neither the Members of the Open ROADM MSA Agreement nor the names of its
-        contributors may be used to endorse or promote products derived from this software
-        without specific prior written permission.
-
-      THIS SOFTWARE IS PROVIDED BY THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT ''AS IS''
-      AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-      WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-      IN NO EVENT THE MEMBERS OF THE OPEN ROADM MSA  AGREEMENT BE LIABLE FOR ANY DIRECT,
-      INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-      NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;  LOSS OF USE, DATA,
-      OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-      WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-      ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-      POSSIBILITY OF SUCH DAMAGE";
-
-  revision 2019-11-29 {
-    description
-      "Version 6.1.0";
-  }
-  revision 2019-03-29 {
-    description
-      "Version 5.0.0";
-  }
-  revision 2018-11-30 {
-    description
-      "Version 4.1.0";
-  }
-  revision 2017-12-15 {
-    description
-      "Version 2.2";
-  }
-  revision 2017-09-29 {
-    description
-      "Version 2.1";
-  }
-  revision 2017-06-26 {
-    description
-      "Version 2.0";
-  }
-  revision 2016-10-14 {
-    description
-      "Version 1.2";
-  }
-
-  typedef pm-granularity {
-    type enumeration {
-      enum notApplicable {
-        value 1;
-        description
-          "This is for total statistic counters on devices that support
-              them.";
-      }
-      enum 15min {
-        value 2;
-      }
-      enum 24Hour {
-        value 3;
-      }
-    }
-    description
-      "Granularity of PM bin";
-  }
-
-  typedef pm-data-type {
-    type union {
-      type uint64;
-      type int64;
-      type decimal64 {
-        fraction-digits 2;
-      }
-      type decimal64 {
-        fraction-digits 17;
-      }
-    }
-  }
-
-  typedef validity {
-    type enumeration {
-      enum complete {
-        value 1;
-      }
-      enum partial {
-        value 2;
-      }
-      enum suspect {
-        value 3;
-      }
-    }
-    description
-      "Validity of data";
-  }
-
-  typedef pm-names-enum {
-    type enumeration {
-      enum vendorExtension {
-        value 1;
-        description
-          "vendor extension";
-      }
-      enum bitErrorRate {
-        value 2;
-        description
-          "Bit error rate (BER)";
-      }
-      enum opticalPowerOutput {
-        value 3;
-        description
-          "Optical Power Output (OPOUT-OTS, OPOUT-OMS, OPT-OCH). Total optical power includes Variable Optical Attenuator (VOA) attenuation";
-      }
-      enum opticalReturnLoss {
-        value 4;
-        description
-          "Optical Return Loss (ORL-OTS) - at MW port(s) B";
-      }
-      enum opticalPowerInput {
-        value 5;
-        description
-          "Optical Power Input (OPIN-OTS, OPIN-OMS, OPR-OCH). Total optical power";
-      }
-      enum codeViolations {
-        value 8;
-        description
-          "Code Violations (CV)";
-      }
-      enum erroredSeconds {
-        value 9;
-        description
-          "Errored Seconds (ES)";
-      }
-      enum severelyErroredSeconds {
-        value 10;
-        description
-          "Severely Errored Seconds (SES)";
-      }
-      enum unavailableSeconds {
-        value 11;
-        description
-          "Unavailable Seconds (UAS)";
-      }
-      enum inFrames {
-        value 12;
-        description
-          "In frames (INFRAMES-E)";
-      }
-      enum inFramesErrored {
-        value 13;
-        description
-          "In frames errored (INFRAMESERR-E)";
-      }
-      enum outFrames {
-        value 14;
-        description
-          "Out frames (OUTFRAMES-E)";
-      }
-      enum erroredSecondsEthernet {
-        value 15;
-        description
-          "Errored Seconds Ethernet (ES-E)";
-      }
-      enum severelyErroredSecondsEthernet {
-        value 16;
-        description
-          "Severely Errored Seconds, Ethernet (SES-E)";
-      }
-      enum unavailableSecondsEthernet {
-        value 17;
-        description
-          "Unavailable Seconds, Ethernet (UAS-E)";
-      }
-      enum erroredBlockCount {
-        value 18;
-        description
-          "Errored block count";
-      }
-      enum delay {
-        value 19;
-        description
-          "Number of frames between a DMValue toggle event and the received DMp signal value toggle event";
-      }
-      enum defectSeconds {
-        value 20;
-        description
-          "Defect Seconds (DS)";
-      }
-      enum backwardIncomingAlignmentError {
-        value 21;
-        description
-          "Backward Incoming Alignment Error (BIAE)";
-      }
-      enum incomingAlignmentError {
-        value 22;
-        description
-          "Incoming Alignment Error (IAE)";
-      }
-      enum opticalPowerOutputMin {
-        value 23;
-        description
-          "Minimum Optical Power Output (OPOUT-OTS). Total optical power includes Variable Optical Attenuator (VOA) attenuation";
-      }
-      enum opticalPowerOutputMax {
-        value 24;
-        description
-          "Maximum Optical Power Output (OPOUT-OTS). Total optical power includes Variable Optical Attenuator (VOA) attenuation";
-      }
-      enum opticalPowerOutputAvg {
-        value 25;
-        description
-          "Average Optical Power Output (OPOUT-OTS). Total optical power includes Variable Optical Attenuator (VOA) attenuation";
-      }
-      enum opticalPowerInputMin {
-        value 26;
-        description
-          "Minimum Optical Power Input (OPIN-OTS). Total optical power";
-      }
-      enum opticalPowerInputMax {
-        value 27;
-        description
-          "Maximum Optical Power Input (OPIN-OTS). Total optical power";
-      }
-      enum opticalPowerInputAvg {
-        value 28;
-        description
-          "Average Optical Power Input (OPIN-OTS). Total optical power";
-      }
-      enum opticalPowerOutputOSC {
-        value 29;
-        description
-          "OSC Optical Power Output (OPT-OSC). OSC Transmit power on MW port";
-      }
-      enum opticalPowerOutputOSCMin {
-        value 30;
-        description
-          "Minimum OSC Optical Power Output (OPT-OSC). OSC Transmit power on MW port";
-      }
-      enum opticalPowerOutputOSCMax {
-        value 31;
-        description
-          "Maximum OSC Optical Power Output (OPT-OSC). OSC Transmit power on MW port";
-      }
-      enum opticalPowerOutputOSCAvg {
-        value 32;
-        description
-          "Average OSC Optical Power Output (OPT-OSC). OSC Transmit power on MW port";
-      }
-      enum opticalPowerInputOSC {
-        value 33;
-        description
-          "OSC Optical Power Input (OPR-OSC). OSC Receive power on MW port";
-      }
-      enum opticalPowerInputOSCMin {
-        value 34;
-        description
-          "Minimum OSC Optical Power Input (OPR-OSC). OSC Receive power on MW port";
-      }
-      enum opticalPowerInputOSCMax {
-        value 35;
-        description
-          "Maximum OSC Optical Power Input (OPR-OSC). OSC Receive power on MW port";
-      }
-      enum opticalPowerInputOSCAvg {
-        value 36;
-        description
-          "Average OSC Optical Power Input (OPR-OSC). OSC Receive power on MW port";
-      }
-      enum preFECCorrectedErrors {
-        value 37;
-        description
-          "pFEC corrected Errors";
-      }
-      enum totalOpticalPowerInput {
-        value 38;
-        description
-          "Total Optical Power Input.";
-      }
-      enum totalOpticalPowerInputMin {
-        value 39;
-        description
-          "Minimum Total Optical Power Input.";
-      }
-      enum totalOpticalPowerInputMax {
-        value 40;
-        description
-          "Maximum Total Optical Power Input.";
-      }
-      enum totalOpticalPowerInputAvg {
-        value 41;
-        description
-          "Average Total Optical Power Input.";
-      }
-      enum FECCorrectableBlocks {
-        value 42;
-        description
-          "FEC Correctable Blocks.";
-      }
-      enum FECUncorrectableBlocks {
-        value 43;
-        description
-          "FEC Uncorrectable Blocks.";
-      }
-      enum BIPErrorCounter {
-        value 56;
-        description
-          "BIP Error Counter";
-      }
-      enum protectionSwitchingCount {
-        value 57;
-        description
-          "Protection Switching Count (PSC)";
-      }
-      enum protectionSwitchingDuration {
-        value 58;
-        description
-          "Protection Switching Duration in seconds (PSD)";
-      }
-      enum erroredBlockCountTCM1-up {
-        value 59;
-        description
-          "errored Blocks Count on TCM1 up direction.";
-      }
-      enum erroredBlockCountTCM2-up {
-        value 60;
-        description
-          "errored Blocks Count on TCM2 up direction.";
-      }
-      enum erroredBlockCountTCM3-up {
-        value 61;
-        description
-          "errored Blocks Count on TCM3 up direction.";
-      }
-      enum erroredBlockCountTCM4-up {
-        value 62;
-        description
-          "errored Blocks Count on TCM4 up direction.";
-      }
-      enum erroredBlockCountTCM5-up {
-        value 63;
-        description
-          "errored Blocks Count on TCM5 up direction.";
-      }
-      enum erroredBlockCountTCM6-up {
-        value 64;
-        description
-          "errored Blocks Count on TCM6 up direction.";
-      }
-      enum delayTCM1-up {
-        value 65;
-        description
-          "Delay on TCM1 up direction.";
-      }
-      enum delayTCM2-up {
-        value 66;
-        description
-          "Delay on TCM2 up direction.";
-      }
-      enum delayTCM3-up {
-        value 67;
-        description
-          "Delay on TCM3 up direction.";
-      }
-      enum delayTCM4-up {
-        value 68;
-        description
-          "Delay on TCM4 up direction.";
-      }
-      enum delayTCM5-up {
-        value 69;
-        description
-          "Delay on TCM5 up direction.";
-      }
-      enum delayTCM6-up {
-        value 70;
-        description
-          "Delay on TCM6 up direction.";
-      }
-      enum erroredBlockCountTCM1-down {
-        value 71;
-        description
-          "errored Blocks Count on TCM1 down direction.";
-      }
-      enum erroredBlockCountTCM2-down {
-        value 72;
-        description
-          "errored Blocks Count on TCM2 down direction.";
-      }
-      enum erroredBlockCountTCM3-down {
-        value 73;
-        description
-          "errored Blocks Count on TCM3 down direction.";
-      }
-      enum erroredBlockCountTCM4-down {
-        value 74;
-        description
-          "errored Blocks Count on TCM4 down direction.";
-      }
-      enum erroredBlockCountTCM5-down {
-        value 75;
-        description
-          "errored Blocks Count on TCM5 down direction.";
-      }
-      enum erroredBlockCountTCM6-down {
-        value 76;
-        description
-          "errored Blocks Count on TCM6 down direction.";
-      }
-      enum delayTCM1-down {
-        value 77;
-        description
-          "Delay on TCM1 down direction.";
-      }
-      enum delayTCM2-down {
-        value 78;
-        description
-          "Delay on TCM2 down direction.";
-      }
-      enum delayTCM3-down {
-        value 79;
-        description
-          "Delay on TCM3 down direction.";
-      }
-      enum delayTCM4-down {
-        value 80;
-        description
-          "Delay on TCM4 down direction.";
-      }
-      enum delayTCM5-down {
-        value 81;
-        description
-          "Delay on TCM5 down direction.";
-      }
-      enum delayTCM6-down {
-        value 82;
-        description
-          "Delay on TCM6 down direction.";
-      }
-      enum partialRateDiscard {
-        value 83;
-        description
-          "Discarded packet as a result of policing or rate limiting for subrate ethernet.";
-      }
-      enum erroredSecondsTCM1-up {
-        value 84;
-        description
-          "errored Seconds Count on TCM1 up direction.";
-      }
-      enum erroredSecondsTCM2-up {
-        value 85;
-        description
-          "errored Seconds Count on TCM2 up direction.";
-      }
-      enum erroredSecondsTCM3-up {
-        value 86;
-        description
-          "errored Seconds Count on TCM3 up direction.";
-      }
-      enum erroredSecondsTCM4-up {
-        value 87;
-        description
-          "errored Seconds Count on TCM4 up direction.";
-      }
-      enum erroredSecondsTCM5-up {
-        value 88;
-        description
-          "errored Seconds Count on TCM5 up direction.";
-      }
-      enum erroredSecondsTCM6-up {
-        value 89;
-        description
-          "errored Seconds Count on TCM6 up direction.";
-      }
-      enum severelyErroredSecondsTCM1-up {
-        value 90;
-        description
-          "severely Errored Seconds Count on TCM1 up direction.";
-      }
-      enum severelyErroredSecondsTCM2-up {
-        value 91;
-        description
-          "severely Errored Seconds Count on TCM2 up direction.";
-      }
-      enum severelyErroredSecondsTCM3-up {
-        value 92;
-        description
-          "severely Errored Seconds Count on TCM3 up direction.";
-      }
-      enum severelyErroredSecondsTCM4-up {
-        value 93;
-        description
-          "severely Errored Seconds Count on TCM4 up direction.";
-      }
-      enum severelyErroredSecondsTCM5-up {
-        value 94;
-        description
-          "severely Errored Seconds Count on TCM5 up direction.";
-      }
-      enum severelyErroredSecondsTCM6-up {
-        value 95;
-        description
-          "severely Errored Seconds Count on TCM6 up direction.";
-      }
-      enum unavailableSecondsTCM1-up {
-        value 96;
-        description
-          "unavailable Seconds Count on TCM1 up direction.";
-      }
-      enum unavailableSecondsTCM2-up {
-        value 97;
-        description
-          "unavailable Seconds Count on TCM2 up direction.";
-      }
-      enum unavailableSecondsTCM3-up {
-        value 98;
-        description
-          "unavailable Seconds Count on TCM3 up direction.";
-      }
-      enum unavailableSecondsTCM4-up {
-        value 99;
-        description
-          "unavailable Seconds Count on TCM4 up direction.";
-      }
-      enum unavailableSecondsTCM5-up {
-        value 100;
-        description
-          "unavailable Seconds Count on TCM5 up direction.";
-      }
-      enum unavailableSecondsTCM6-up {
-        value 101;
-        description
-          "unavailable Seconds Count on TCM6 up direction.";
-      }
-      enum erroredSecondsTCM1-down {
-        value 102;
-        description
-          "errored Seconds Count on TCM1 down direction.";
-      }
-      enum erroredSecondsTCM2-down {
-        value 103;
-        description
-          "errored Seconds Count on TCM2 down direction.";
-      }
-      enum erroredSecondsTCM3-down {
-        value 104;
-        description
-          "errored Seconds Count on TCM3 down direction.";
-      }
-      enum erroredSecondsTCM4-down {
-        value 105;
-        description
-          "errored Seconds Count on TCM4 down direction.";
-      }
-      enum erroredSecondsTCM5-down {
-        value 106;
-        description
-          "errored Seconds Count on TCM5 down direction.";
-      }
-      enum erroredSecondsTCM6-down {
-        value 107;
-        description
-          "errored Seconds Count on TCM6 down direction.";
-      }
-      enum severelyErroredSecondsTCM1-down {
-        value 108;
-        description
-          "severely Errored Seconds Count on TCM1 down direction.";
-      }
-      enum severelyErroredSecondsTCM2-down {
-        value 109;
-        description
-          "severely Errored Seconds Count on TCM2 down direction.";
-      }
-      enum severelyErroredSecondsTCM3-down {
-        value 110;
-        description
-          "severely Errored Seconds Count on TCM3 down direction.";
-      }
-      enum severelyErroredSecondsTCM4-down {
-        value 111;
-        description
-          "severely Errored Seconds Count on TCM4 down direction.";
-      }
-      enum severelyErroredSecondsTCM5-down {
-        value 112;
-        description
-          "severely Errored Seconds Count on TCM5 down direction.";
-      }
-      enum severelyErroredSecondsTCM6-down {
-        value 113;
-        description
-          "severely Errored Seconds Count on TCM6 down direction.";
-      }
-      enum unavailableSecondsTCM1-down {
-        value 114;
-        description
-          "unavailable Seconds Count on TCM1 down direction.";
-      }
-      enum unavailableSecondsTCM2-down {
-        value 115;
-        description
-          "unavailable Seconds Count on TCM2 down direction.";
-      }
-      enum unavailableSecondsTCM3-down {
-        value 116;
-        description
-          "unavailable Seconds Count on TCM3 down direction.";
-      }
-      enum unavailableSecondsTCM4-down {
-        value 117;
-        description
-          "unavailable Seconds Count on TCM4 down direction.";
-      }
-      enum unavailableSecondsTCM5-down {
-        value 118;
-        description
-          "unavailable Seconds Count on TCM5 down direction.";
-      }
-      enum unavailableSecondsTCM6-down {
-        value 119;
-        description
-          "unavailable Seconds Count on TCM6 down direction.";
-      }
-    }
-  }
-
-  grouping pm-measurement {
-    description
-      "Set of parameters related to a PM Measurement";
-    leaf pmParameterValue {
-      type pm-data-type;
-      config false;
-      mandatory true;
-    }
-    leaf pmParameterUnit {
-      type string;
-      mandatory false;
-      description
-        "Unit PM parameter has been measured - frames, packets, u, etc";
-    }
-    leaf validity {
-      type validity;
-      mandatory false;
-    }
-  }
-
-  grouping pm-names {
-    description
-      "Name of PM parameter. Consists of a set list of parameters,
-       plus an extension field to support addition parameters.";
-    leaf type {
-      type pm-names-enum;
-      mandatory true;
-    }
-    leaf extension {
-      type string;
-      description
-        "name of parameter, when enum value set to vendorExtension because
-         name not found in pm-names-enum";
-    }
-  }
-}
