diff --git a/backup/moodle2/restore_adobeconnect_activity_task.class.php b/backup/moodle2/restore_adobeconnect_activity_task.class.php
index cfd0f30..3fa4fce 100644
--- a/backup/moodle2/restore_adobeconnect_activity_task.class.php
+++ b/backup/moodle2/restore_adobeconnect_activity_task.class.php
@@ -24,6 +24,33 @@
 
 defined('MOODLE_INTERNAL') || die();
 
+// Do not allow Adobe Connect activities to be 'duplicated' at all
+//  For course backup/restore this is handled by restore_adobeconnect_activity_structure_step()
+//  But modduplicate.php throws an error if it cannot find the id of the new resource.
+if (basename($_SERVER['SCRIPT_NAME']) == 'modduplicate.php') {
+    $courseid   = required_param('course',  PARAM_INT);
+    $course     = $DB->get_record('course', array('id' => $courseid), '*', MUST_EXIST);
+    $cmid       = required_param('cmid',    PARAM_INT);
+    $cm         = get_coursemodule_from_id('', $cmid, $course->id, true, MUST_EXIST);
+   
+    require_login($course);
+    require_sesskey();
+
+    $PAGE->set_title(get_string('duplicate'));
+    $PAGE->set_heading($course->fullname);
+    $PAGE->set_url(new moodle_url('/course/modduplicate.php', array('cmid' => $cm->id, 'courseid' => $course->id)));
+    $PAGE->set_pagelayout('incourse');
+
+    $output = $PAGE->get_renderer('core', 'backup');
+    echo $output->header();
+    echo $output->box_start();
+    echo $output->notification(get_string('errorduplicate', 'adobeconnect'));
+    echo $output->continue_button(new moodle_url('/course/view.php', array('id' => $course->id)));
+    echo $output->box_end();
+    echo $output->footer();
+    die();
+}
+
 require_once($CFG->dirroot . '/mod/adobeconnect/backup/moodle2/restore_adobeconnect_stepslib.php'); // Because it exists (must)
 
 /**
diff --git a/backup/moodle2/restore_adobeconnect_stepslib.php b/backup/moodle2/restore_adobeconnect_stepslib.php
index 5e44c6d..e5b0426 100644
--- a/backup/moodle2/restore_adobeconnect_stepslib.php
+++ b/backup/moodle2/restore_adobeconnect_stepslib.php
@@ -34,11 +34,12 @@ class restore_adobeconnect_activity_structure_step extends restore_activity_stru
     protected function define_structure() {
 
         $paths = array();
-        $userinfo = false;
-//        $userinfo = $this->get_setting_value('userinfo');
+        $userinfo = $this->get_setting_value('userinfo');
 
-        $paths[] = new restore_path_element('adobeconnect', '/activity/adobeconnect');
-        $paths[] = new restore_path_element('adobeconnect_meeting_group', '/activity/adobeconnect/meeting_groups/meeting_group');
+        if ($userinfo) {
+            $paths[] = new restore_path_element('adobeconnect', '/activity/adobeconnect');
+            $paths[] = new restore_path_element('adobeconnect_meeting_group', '/activity/adobeconnect/meeting_groups/meeting_group');
+        }
 //        if ($userinfo) {
 //            $paths[] = new restore_path_element('survey_answer', '/activity/survey/answers/answer');
 //            $paths[] = new restore_path_element('survey_analys', '/activity/survey/analysis/analys');
@@ -77,7 +78,17 @@ class restore_adobeconnect_activity_structure_step extends restore_activity_stru
     }
 
     protected function after_execute() {
+        global $DB;
         // Add survey related files, no need to match by itemname (just internally handled context)
         $this->add_related_files('mod_adobeconnect', 'intro', null);
+        // If no userdata supplied, there will be no record of AC activity
+        //  in adobeconnect and adoceconnect_meeting_groups tables
+        //  because no $paths defined in define_structure()
+        // However still need to 'clean up' Moodle's record of the activity in course_modules table
+        //  which will have an instanceid of 0 (added check for this although shouldn't be necessary)
+        $userinfo = $this->get_setting_value('userinfo');
+        if (!$userinfo) {
+           $DB->delete_records('course_modules', array('id'=>$this->task->get_moduleid(), 'instance'=>0));
+        }
     }
 }
\ No newline at end of file
diff --git a/lang/en/adobeconnect.php b/lang/en/adobeconnect.php
index 1083b21..c298c0a 100644
--- a/lang/en/adobeconnect.php
+++ b/lang/en/adobeconnect.php
@@ -1,5 +1,4 @@
 <?php
-
 $string['actinbtngrp'] = '';
 $string['addparticipant'] = 'Add';
 $string['addpresenter']  = 'Add';
@@ -99,6 +98,7 @@ $string['noinstances'] = 'There are no instances of adobeconnect';
 $string['error1'] = 'You must be a site administrator to access this page';
 $string['error2'] = 'The property \'{$a}\' is empty, please input a value and save the settings';
 $string['errormeeting'] = 'Error retrieving recording';
+$string['errorduplicate'] = 'Adobe Connect activities cannot be duplicated. Please create a new activity instead.';
 $string['settingblurb'] = '<center><img src="{$a->image}" /></center><br />
     <p>Adobe Systems Inc. and Remote-Learner.net have partnered together to create the first publicly available
     and officially sponsored, integration method between Moodle and Adobe Acrobat Connect Pro. This new
@@ -164,4 +164,4 @@ $string['invalidurl'] = 'The URL needs to start with a letter (a-z)';
 $string['longurl'] = 'That meeting URL is too long. Try shortening it';
 $string['errorrecording'] = 'Unable to find recording session';
 $string['meetinfo'] = 'More Meeting Detail';
-$string['meetinfotxt'] = 'See server meeting details';
+$string['meetinfotxt'] = 'See server meeting details';
\ No newline at end of file
diff --git a/lib.php b/lib.php
index 91dd9e0..3021dff 100644
--- a/lib.php
+++ b/lib.php
@@ -458,8 +458,11 @@ function adobeconnect_delete_instance($id) {
                 $event = calendar_event::load($eventid);
                 $event->delete();
             }
-
-            aconnect_remove_meeting($aconnect, $meeting->meetingscoid);
+            //only delete from server if no other pointers to this meeting
+            $numpointers = $DB->count_records('adobeconnect_meeting_groups', array('meetingscoid' => $meeting->meetingscoid));
+            if ($numpointers == 1) {
+                aconnect_remove_meeting($aconnect, $meeting->meetingscoid);
+            } 
         }
 
         aconnect_logout($aconnect);
