diff --git a/update_testrail_xml/cmd.py b/update_testrail_xml/cmd.py
index 15fc922..bec9097 100644
--- a/update_testrail_xml/cmd.py
+++ b/update_testrail_xml/cmd.py
@@ -206,10 +206,8 @@
         send_duplicates=args.send_duplicates,
         use_test_run_if_exists=args.use_test_run_if_exists)
 
-
-    all_cases = reporter.get_cases()
     empty_classnames = reporter.get_empty_classnames()
-    all_empty_cases = reporter.get_testcases(all_cases, empty_classnames)
+    all_empty_cases = reporter.get_testcases(empty_classnames)
 
     reporter.update_testcases(all_empty_cases)
     reporter.delete_duplicates()
diff --git a/update_testrail_xml/reporter.py b/update_testrail_xml/reporter.py
index 76c18cd..4c04e09 100644
--- a/update_testrail_xml/reporter.py
+++ b/update_testrail_xml/reporter.py
@@ -1,7 +1,6 @@
 from __future__ import absolute_import, print_function
 
 from functools import wraps
-import logging
 import os
 import re
 import six
@@ -112,23 +111,22 @@
         classnames = []
         for child in root:
             if child.attrib['classname'] == '' and child[0].tag == 'failure':
-                m = re.search('\(.*\)', child.attrib['name'])
+                m = re.search(r'\(.*\)', child.attrib['name'])
                 classname = m.group()[1:-1]
-                classnames.append({'classname': classname, 'data': child[0].text})
+                classnames.append({'classname': classname,
+                                   'data': child[0].text,
+                                   'fullname': child.attrib.get('name')})
 
         logger.info(' Got empty classnames from xml file')
         return classnames
 
-    def get_testcases(self, all_cases, empty_classnames):
+    def get_testcases(self, empty_classnames):
         needed_cases = []
         for empty_classname in empty_classnames:
-            for case in all_cases:
-                if empty_classname['classname'] in case['title']:
-
-                    updated_case = {'classname': empty_classname['classname'],
-                                    'name': case['title'],
-                                    'data': empty_classname['data']}
-                    needed_cases.append(updated_case)
+            updated_case = {'classname': empty_classname['classname'],
+                            'name': '.' + empty_classname['fullname'],
+                            'data': empty_classname['data']}
+            needed_cases.append(updated_case)
         logger.info(' Got test cases for updating xml file')
         return needed_cases
 
