diff --git a/src/calendar/e-cal-backend-ews.c b/src/calendar/e-cal-backend-ews.c
index 981eef0..b6d613a 100644
--- a/src/calendar/e-cal-backend-ews.c
+++ b/src/calendar/e-cal-backend-ews.c
@@ -1380,6 +1380,61 @@ ews_create_attachments_cb (GObject *object,
 }
 
 static void
+fetch_attachments (ECalBackendEws *cbews,
+		   ECalComponent *comp,
+		   GSList **attachment_list)
+{
+	/*FIXME fix the attachment issue in evolution with all backends*/
+	/*TODO: Current approach is to get the list of attachments
+	 * Create a uid directory in e_cal_backend_get_cache_dir (backend)
+	 * move all data to new file add it to new attachment list
+	 * return the new attachment list*/
+
+	GSList *attach_list = NULL, *new_attach_list = NULL;
+	GSList *l;
+	gchar *dest_url, *dest_file;
+	const gchar *uid;
+
+	e_cal_component_get_attachment_list (comp, &attach_list);
+	e_cal_component_get_uid (comp, &uid);
+
+	for (l = attach_list; l; l = l->next) {
+		gchar *sfname = (gchar *) l->data;
+		gchar *filename, *cache_dir, *comp_dir;
+		GFile *src, *dest;
+		GError *error = NULL;
+
+		filename = g_path_get_basename (sfname);
+		cache_dir = g_strdup(e_cal_backend_get_cache_dir (E_CAL_BACKEND (cbews)));
+		comp_dir = g_strconcat(cache_dir, G_DIR_SEPARATOR_S, uid, NULL);
+		/*if creation on directory with comp uid fails fallback to compuid-filename approach*/
+		if(g_mkdir_with_parents(comp_dir, 0700)!=-1)
+		{
+			filename = filename + strlen(uid) +1;
+			dest_file = g_build_filename(comp_dir,filename, NULL);
+		}
+		else
+			dest_file = e_cal_backend_create_cache_filename (E_CAL_BACKEND (cbews), uid, filename, 0);
+
+		src = g_file_new_for_uri (sfname);
+		dest = g_file_new_for_path (dest_file);
+
+		g_file_move(src, dest, G_FILE_COPY_NONE, NULL, NULL, NULL, &error);
+		g_clear_error(&error);
+		dest_url = g_filename_to_uri (dest_file, NULL, NULL);
+		g_free (dest_file);
+		new_attach_list = g_slist_append (new_attach_list, dest_url);
+	}
+	if (new_attach_list)
+	{
+		e_cal_component_set_attachment_list (comp, new_attach_list);
+		*attachment_list = new_attach_list;
+	}
+	else
+		*attachment_list = attach_list;
+}
+
+static void
 ews_create_object_cb (GObject *object,
                       GAsyncResult *res,
                       gpointer user_data)
@@ -1448,7 +1503,7 @@ ews_create_object_cb (GObject *object,
 		attach_data->context = create_data->context;
 		attach_data->cb_type = 1;
 
-		e_cal_component_get_attachment_list (create_data->comp, &attachments);
+		fetch_attachments (create_data->cbews, create_data->comp, &attachments);
 		e_ews_connection_create_attachments_start (cnc, EWS_PRIORITY_MEDIUM,
 							   item_id, attachments,
 							   ews_create_attachments_cb, NULL, attach_data);
@@ -2103,8 +2158,8 @@ e_cal_backend_ews_modify_object (ECalBackend *backend,
 	/*In case we have updated attachments we have to run update attachments
 	 *before update items so attendees will receive mails with already updated attachments */
 
-	e_cal_component_get_attachment_list (oldcomp, &original_attachments);
-	e_cal_component_get_attachment_list (comp, &modified_attachments);
+	fetch_attachments (cbews, oldcomp, &original_attachments);
+	fetch_attachments (cbews, comp, &modified_attachments);
 
 	ewscal_get_attach_differences (original_attachments, modified_attachments, &removed_attachments, &added_attachments);
 	g_slist_free (original_attachments);
