docs: def createGroups(self, configFiles, dateTimeFormat=None):
          """Parses a JSON configuration file to create groups.
  
          Args:
              configFiles (list): A list of JSON files on disk containing
                  configuration data for creating groups.
              dateTimeFormat (str): A valid date formatting directive, as understood
                  by :py:meth:`datetime.datetime.strftime`. Defaults to ``None``, i.e.,
                  ``'%Y-%m-%d %H:%M'``.
  
          """
          groupInfo = None
          groupFile = None
          iconPath = None
          startTime = None
          thumbnail = None
          result = None
          config = None
          sciptPath = None
          orgTools = None
  
          if dateTimeFormat is None:
              dateTimeFormat = '%Y-%m-%d %H:%M'
  
          scriptStartTime = datetime.datetime.now()
          try:
  
              print ("********************Create Groups********************")
  
              print ("Script started at %s" % scriptStartTime.strftime(dateTimeFormat))
  
              if self.securityhandler is None or \
                  self.securityhandler.valid == False:
                  print ("Login required")
              else:
                  orgTools = orgtools.orgtools(securityinfo=self)
  
                  if orgTools is None:
                      print ("Error creating orgtools")
                  else:
  
                      for configFile in configFiles:
  
                          config = common.init_config_json(config_file=configFile)
                          if config is not None:
  
                              startTime = datetime.datetime.now()
                              print ("Processing config %s, starting at: %s" % (configFile,startTime.strftime(dateTimeFormat)))
  
                              groupInfo = config['Groups']
                              groupFile = groupInfo['GroupInfo']
                              iconPath = groupInfo['IconPath']
  
                              if os.path.isfile(groupFile):
                                  with open(groupFile, 'rb') as csvfile:
  
                                      for row in csv.DictReader(csvfile,dialect='excel'):
                                          if os.path.isfile(os.path.join(iconPath,row['thumbnail'])):
                                              thumbnail = os.path.join(iconPath,row['thumbnail'])
                                              if not os.path.isabs(thumbnail):
  
                                                  sciptPath = os.getcwd()
                                                  thumbnail = os.path.join(sciptPath,thumbnail)
  
                                              result = orgTools.createGroup(title=row['title'],description=row['description'],tags=row['tags'],snippet=row['snippet'],phone=row['phone'],access=row['access'],sortField=row['sortField'],sortOrder=row['sortOrder'], \
                                                               isViewOnly=row['isViewOnly'],isInvitationOnly=row['isInvitationOnly'],thumbnail=thumbnail)
  
                                          else:
                                              result = orgTools.createGroup(title=row['title'],description=row['description'],tags=row['tags'],snippet=row['snippet'],phone=row['phone'],access=row['access'],sortField=row['sortField'],sortOrder=row['sortOrder'], \
                                                               isViewOnly=row['isViewOnly'],isInvitationOnly=row['isInvitationOnly'])
  
                                          if result is None:
                                              pass
                                          else:
                                              print ("Group created: " + result.title)
  
  
  
                              print ("Config %s completed, time to complete: %s" % (configFile, str(datetime.datetime.now() - startTime)))
  
                          else:
                              print ("Config %s not found" % configFile)
  
  
          except(TypeError,ValueError,AttributeError) as e:
              print (e)
          except (common.ArcRestHelperError) as e:
              print ("error in function: %s" % e[0]['function'])
              print ("error on line: %s" % e[0]['line'])
              print ("error in file name: %s" % e[0]['filename'])
              print ("with error message: %s" % e[0]['synerror'])
              if 'arcpyError' in e[0]:
                  print ("with arcpy message: %s" % e[0]['arcpyError'])
  
          except Exception as e:
              if (reportToolsInstalled):
                  if isinstance(e,(ReportTools.ReportToolsError,DataPrep.DataPrepError)):
                      print ("error in function: %s" % e[0]['function'])
                      print ("error on line: %s" % e[0]['line'])
                      print ("error in file name: %s" % e[0]['filename'])
                      print ("with error message: %s" % e[0]['synerror'])
                      if 'arcpyError' in e[0]:
                          print ("with arcpy message: %s" % e[0]['arcpyError'])
                  else:
                      line, filename, synerror = trace()
                      print ("error on line: %s" % line)
                      print ("error in file name: %s" % filename)
                      print ("with error message: %s" % synerror)
              else:
                  line, filename, synerror = trace()
                  print ("error on line: %s" % line)
                  print ("error in file name: %s" % filename)
                  print ("with error message: %s" % synerror)
          finally:
              print ("Script complete, time to complete: %s" % str(datetime.datetime.now() - scriptStartTime))
              print ("###############Create Groups Completed#################")
              print ("")
  
              #if orgTools is not None:
                  #orgTools.dispose()
              groupInfo = None
              groupFile = None
              iconPath = None
              startTime = None
              thumbnail = None
              result = None
              config = None
              sciptPath = None
              orgTools = None
              del groupInfo
              del groupFile
              del iconPath
              del startTime
              del thumbnail
              del result
              del config
              del sciptPath
              del orgTools
  
              gc.collect()