code: def get_customs_properties_by_inheritance(self, obj):
          
          for t_id in obj.templates:
              template = self.templates[t_id]
              tpl_cv = self.get_customs_properties_by_inheritance(template)
              if tpl_cv:
                  for prop in tpl_cv:
                      if prop not in obj.customs:
                          value = tpl_cv[prop]
                      else:
                          value = obj.customs[prop]
                      if obj.has_plus(prop):
                          value.insert(0, obj.get_plus_and_delete(prop))
                          # value = self.get_plus_and_delete(prop) + ',' + value
                      obj.customs[prop] = value
          for prop in obj.customs:
              value = obj.customs[prop]
              if obj.has_plus(prop):
                  value.insert(0, obj.get_plus_and_delete(prop))
                  obj.customs[prop] = value
          # We can get custom properties in plus, we need to get all
          # entires and put
          # them into customs
          cust_in_plus = obj.get_all_plus_and_delete()
          for prop in cust_in_plus:
              obj.customs[prop] = cust_in_plus[prop]
          return obj.customs
docs: Get custom properties from the templates defined in this object
  
          :param obj: the oject to search the property
          :type obj: alignak.objects.item.Item
          :return: list of custom properties
          :rtype: list