move utility functions
diff --git a/erpnext/crm/doctype/appointment/appointment.py b/erpnext/crm/doctype/appointment/appointment.py
index bc2c838..95a9580 100644
--- a/erpnext/crm/doctype/appointment/appointment.py
+++ b/erpnext/crm/doctype/appointment/appointment.py
@@ -11,7 +11,6 @@
 import frappe
 from frappe import _
 from frappe.model.document import Document
-from frappe.desk.form.assign_to import add as add_assignemnt
 from frappe.utils import get_url
 from frappe.utils.verified_command import verify_request, get_signed_params
 
@@ -37,13 +36,13 @@
     def after_insert(self):
         if self.lead:
             # Create Calendar event
-            self.create_calendar_event()
             self.auto_assign()
+            self.create_calendar_event()
         else:
             # Set status to unverified
             self.status = 'Unverified'
             # Send email to confirm
-            verify_url = self.get_verify_url()
+            verify_url = self._get_verify_url()
             message = ''.join(
                 ['Please click the following link to confirm your appointment:', verify_url])
             frappe.sendmail(recipients=[self.customer_email],
@@ -52,15 +51,6 @@
             frappe.msgprint(
                 'Please check your email to confirm the appointment')
 
-    def get_verify_url(self):
-        verify_route = '/book-appointment/verify'
-
-        params = {
-            'email': self.customer_email,
-            'appointment': self.name
-        }
-
-        return get_url(verify_route + '?' + get_signed_params(params))
 
     def on_change(self):
         # Sync Calendar
@@ -70,18 +60,12 @@
         cal_event.starts_on = self.scheduled_time
         cal_event.save(ignore_permissions=True)
 
-    def on_trash(self):
-        # Delete calendar event
-        cal_event = frappe.get_doc('Event', self.calendar_event)
-        if cal_event:
-            cal_event.delete()
-        # Delete task?
 
     def set_verified(self, email):
         if not email == self.customer_email:
             frappe.throw('Email verification failed.')
         # Create new lead
-        self.create_lead()
+        self.create_lead_and_link()
         # Remove unverified status
         self.status = 'Open'
         # Create calender event
@@ -90,7 +74,7 @@
         self.save(ignore_permissions=True)
         frappe.db.commit()
 
-    def create_lead(self):
+    def create_lead_and_link(self):
         # Return if already linked
         if self.lead:
             return
@@ -106,10 +90,11 @@
         self.lead = lead.name
 
     def auto_assign(self):
-        # If the latest opportunity is assigned to someone
-        # Assign the appointment to the same
+        from frappe.desk.form.assign_to import add as add_assignemnt
         existing_assignee = self.get_assignee_from_latest_opportunity()
         if existing_assignee:
+            # If the latest opportunity is assigned to someone
+            # Assign the appointment to the same
             add_assignemnt({
                 'doctype': self.doctype,
                 'name': self.name,
@@ -171,6 +156,14 @@
         appointment_event.insert(ignore_permissions=True)
         self.calendar_event = appointment_event.name
         self.save(ignore_permissions=True)
+    
+    def _get_verify_url(self):
+        verify_route = '/book-appointment/verify'
+        params = {
+            'email': self.customer_email,
+            'appointment': self.name
+        }
+        return get_url(verify_route + '?' + get_signed_params(params))
 
 
 def _get_agents_sorted_by_asc_workload(date):
@@ -214,3 +207,4 @@
         # frappe.db.exists returns a tuple of a tuple
         return frappe.get_doc('Employee', employee_docname[0][0])
     return None
+