diff --git a/src/register/hei_hardware_register.cpp b/src/register/hei_hardware_register.cpp
index c354228..def6016 100755
--- a/src/register/hei_hardware_register.cpp
+++ b/src/register/hei_hardware_register.cpp
@@ -204,7 +204,7 @@
 //-----------------------------------------------------------------------------
 ExtensibleChip* HardwareRegister::getChip( )const
 {
-    ExtensibleChip* l_pchip = NULL;
+    ExtensibleChip* l_pchip = nullptr;
     l_pchip = ServiceDataCollector::getChipAnalyzed();
     TARGETING::TYPE l_type = PlatServices::getTargetType(
                                                 l_pchip->GetChipHandle() );
@@ -218,7 +218,7 @@
 {
     RegDataCache & cache = RegDataCache::getCachedRegisters();
     BitString * bs = cache.queryCache( getChip(), this );
-    return ( NULL != bs );
+    return ( nullptr != bs );
 }
 
 //------------------------------------------------------------------------------
@@ -234,7 +234,7 @@
 void HardwareRegister::flushCache( ExtensibleChip *i_pChip ) const
 {
      RegDataCache & regDump = RegDataCache::getCachedRegisters();
-    if( NULL == i_pChip )
+    if( nullptr == i_pChip )
     {
         regDump.flush();
     }
diff --git a/src/register/hei_hardware_register.hpp b/src/register/hei_hardware_register.hpp
index a60b2bd..c6722fb 100755
--- a/src/register/hei_hardware_register.hpp
+++ b/src/register/hei_hardware_register.hpp
@@ -207,7 +207,7 @@
      * @param     RuleChip pointer associated with register
      * @return    Nil
      */
-    void flushCache( ExtensibleChip *i_pChip = NULL ) const;
+    void flushCache( ExtensibleChip *i_pChip = nullptr ) const;
 
   private: // Data
 
diff --git a/src/register/hei_operator_register.hpp b/src/register/hei_operator_register.hpp
index 15764b1..9ac414f 100755
--- a/src/register/hei_operator_register.hpp
+++ b/src/register/hei_operator_register.hpp
@@ -13,7 +13,7 @@
 {
   public:
     NotRegister() :
-        Register( ), iv_child(NULL), iv_iBS(0)
+        Register( ), iv_child(nullptr), iv_iBS(0)
     {
         iv_bs = &iv_iBS;
     }
@@ -70,7 +70,7 @@
 {
   public:
     SummaryRegister() :
-        Register( ), iv_child(NULL), iv_amount(0), iv_iBS(0)
+        Register( ), iv_child(nullptr), iv_amount(0), iv_iBS(0)
     {
         iv_bs = &iv_iBS;
     }
@@ -163,7 +163,7 @@
 {
   public:
     LeftShiftRegister() :
-        Register( ), iv_child(NULL), iv_amount(0), iv_iBS(0)
+        Register( ), iv_child(nullptr), iv_amount(0), iv_iBS(0)
     {
         iv_bs = &iv_iBS;
     }
@@ -230,7 +230,7 @@
 {
   public:
     RightShiftRegister() :
-        Register( ), iv_child(NULL), iv_amount(0), iv_iBS(0)
+        Register( ), iv_child(nullptr), iv_amount(0), iv_iBS(0)
     {
         iv_bs = &iv_iBS;
     }
@@ -298,7 +298,7 @@
 {
   public:
     AndRegister() :
-        Register( ), iv_left(NULL), iv_right(NULL), iv_iBS(0)
+        Register( ), iv_left(nullptr), iv_right(nullptr), iv_iBS(0)
     {
         iv_bs = &iv_iBS;
     }
@@ -380,7 +380,7 @@
   public:
 
     OrRegister() :
-        Register( ), iv_left(NULL), iv_right(NULL), iv_iBS(0)
+        Register( ), iv_left(nullptr), iv_right(nullptr), iv_iBS(0)
     {
         iv_bs = &iv_iBS;
     }
@@ -511,11 +511,11 @@
                       Register *i_proccs,
                       Register *i_hostattn ) :
         Register( ),
-        iv_check(    NULL == i_check    ? &cv_null : i_check),
-        iv_recov(    NULL == i_recov    ? &cv_null : i_recov),
-        iv_special(  NULL == i_special  ? &cv_null : i_special),
-        iv_proccs(   NULL == i_proccs   ? &cv_null : i_proccs),
-        iv_hostattn( NULL == i_hostattn ? &cv_null : i_hostattn),
+        iv_check(    nullptr == i_check    ? &cv_null : i_check),
+        iv_recov(    nullptr == i_recov    ? &cv_null : i_recov),
+        iv_special(  nullptr == i_special  ? &cv_null : i_special),
+        iv_proccs(   nullptr == i_proccs   ? &cv_null : i_proccs),
+        iv_hostattn( nullptr == i_hostattn ? &cv_null : i_hostattn),
         iv_iBS(0)         // will fully initialize this inside ctor.
     {
         uint32_t l_length = 1024;
diff --git a/src/register/iipCaptureData.h b/src/register/iipCaptureData.h
index 0a0b4db..10f764b 100755
--- a/src/register/iipCaptureData.h
+++ b/src/register/iipCaptureData.h
@@ -299,10 +299,10 @@
   {
   public:
     // Ctor
-    Data(TARGETING::TargetHandle_t i_pchipHandle= NULL,   // dg01
+    Data(TARGETING::TargetHandle_t i_pchipHandle= nullptr,   // dg01
          uint16_t a = 0,
          uint16_t  dbl = 0,
-         uint8_t * dPtr = NULL)
+         uint8_t * dPtr = nullptr)
     :
     chipHandle(i_pchipHandle),
     address(a),
@@ -312,7 +312,7 @@
 
     ~Data(void)                     // dg05a
     {                               // dg05a
-      if(dataPtr != NULL)           // dg05a
+      if(dataPtr != nullptr)           // dg05a
       {                             // dg05a
         delete [] dataPtr;          // pw01
       }                             // dg05a
diff --git a/src/register/prdfCaptureData.C b/src/register/prdfCaptureData.C
index 69de4e6..84f1017 100755
--- a/src/register/prdfCaptureData.C
+++ b/src/register/prdfCaptureData.C
@@ -304,10 +304,10 @@
         // Read chip Handle.
         memcpy(&l_chipHuid , i_flatdata,l_huidSize );
         i_flatdata += l_huidSize ;
-        TargetHandle_t l_pchipHandle  =NULL;
+        TargetHandle_t l_pchipHandle  =nullptr;
         l_chipHuid =  ntohl(l_chipHuid);
         l_pchipHandle = PlatServices::getTarget(l_chipHuid );
-        if(NULL ==l_pchipHandle)
+        if(nullptr ==l_pchipHandle)
         {
             continue;
         }
@@ -372,9 +372,9 @@
 // copy ctor for Data class
 CaptureData::Data::Data(const Data & d):
 chipHandle(d.chipHandle), address(d.address),
-dataByteLength(d.dataByteLength), dataPtr(NULL)
+dataByteLength(d.dataByteLength), dataPtr(nullptr)
 {
-    if(d.dataPtr != NULL)
+    if(d.dataPtr != nullptr)
     {
         dataPtr = new uint8_t[dataByteLength];
 
@@ -387,12 +387,12 @@
     chipHandle = d.chipHandle;
     address = d.address;
     dataByteLength = d.dataByteLength;
-    if(dataPtr != NULL)
+    if(dataPtr != nullptr)
     {
         delete[]dataPtr;
-        dataPtr = NULL;
+        dataPtr = nullptr;
     }
-    if(d.dataPtr != NULL)
+    if(d.dataPtr != nullptr)
     {
         dataPtr = new uint8_t[dataByteLength];
         memcpy(dataPtr, d.dataPtr, dataByteLength);
diff --git a/src/register/prdfHomRegisterAccess.C b/src/register/prdfHomRegisterAccess.C
index 8c3cab6..c65398b 100755
--- a/src/register/prdfHomRegisterAccess.C
+++ b/src/register/prdfHomRegisterAccess.C
@@ -81,7 +81,7 @@
 }
 
 ScomService::ScomService() :
-    iv_ScomAccessor(NULL)
+    iv_ScomAccessor(nullptr)
 {
     PRDF_DTRAC("ScomService() initializing default iv_ScomAccessor");
     iv_ScomAccessor = new ScomAccessor();
@@ -89,11 +89,11 @@
 
 ScomService::~ScomService()
 {
-    if(NULL != iv_ScomAccessor)
+    if(nullptr != iv_ScomAccessor)
     {
         PRDF_DTRAC("~ScomService() deleting iv_ScomAccessor");
         delete iv_ScomAccessor;
-        iv_ScomAccessor = NULL;
+        iv_ScomAccessor = nullptr;
     }
 }
 
@@ -101,11 +101,11 @@
 {
     PRDF_DTRAC("ScomService::setScomAccessor() setting new scom accessor");
 
-    if(NULL != iv_ScomAccessor)
+    if(nullptr != iv_ScomAccessor)
     {
         PRDF_TRAC("ScomService::setScomAccessor() deleting old iv_ScomAccessor");
         delete iv_ScomAccessor;
-        iv_ScomAccessor = NULL;
+        iv_ScomAccessor = nullptr;
     }
 
     iv_ScomAccessor = &i_ScomAccessor;
@@ -139,7 +139,7 @@
 
     uint32_t rc = SUCCESS;
 
-    if(i_target != NULL)
+    if(i_target != nullptr)
     {
         switch (operation)
         {
diff --git a/src/register/prdfRegisterCache.C b/src/register/prdfRegisterCache.C
index 4fb0949..1b547eb 100644
--- a/src/register/prdfRegisterCache.C
+++ b/src/register/prdfRegisterCache.C
@@ -52,7 +52,7 @@
     ScomRegisterAccess l_scomAccessKey ( *i_reg, i_chip );
     BitString * l_pBitString = queryCache( l_scomAccessKey );
 
-    if ( NULL == l_pBitString )
+    if ( nullptr == l_pBitString )
     {
         // Creating new entry
         l_pBitString = new BitStringBuffer( i_reg->GetBitLength() );
@@ -110,7 +110,7 @@
 BitString * RegDataCache::queryCache(
                         const ScomRegisterAccess & i_scomAccessKey ) const
 {
-    BitString * l_pBitString = NULL;
+    BitString * l_pBitString = nullptr;
     CacheDump::const_iterator itDump = iv_cachedRead.find( i_scomAccessKey );
     if( iv_cachedRead.end() != itDump )
     {
diff --git a/src/register/prdfScomRegisterAccess.H b/src/register/prdfScomRegisterAccess.H
index 672ddc3..e302583 100644
--- a/src/register/prdfScomRegisterAccess.H
+++ b/src/register/prdfScomRegisterAccess.H
@@ -65,7 +65,7 @@
     /**
      * @brief     constructor
      */
-    ScomRegisterAccess():HardwareRegister( ),iv_containerChip ( NULL ){ };
+    ScomRegisterAccess():HardwareRegister( ),iv_containerChip ( nullptr ){ };
 
     /**
      * @brief Destructor
