protected function _getEventAttendee($_egwEventData)
 {
     $tineAttendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender');
     foreach ($_egwEventData['attendee'] as $idx => $egwAttender) {
         try {
             $tineAttenderArray = array('quantity' => $egwAttender['cal_quantity'], 'role' => Calendar_Model_Attender::ROLE_REQUIRED, 'status' => isset($this->_attenderStatusMap[$egwAttender['cal_status']]) || array_key_exists($egwAttender['cal_status'], $this->_attenderStatusMap) ? $this->_attenderStatusMap[$egwAttender['cal_status']] : Calendar_Model_Attender::STATUS_NEEDSACTION, 'status_authkey' => Calendar_Model_Attender::generateUID());
             switch ($egwAttender['cal_user_type']) {
                 case 'u':
                     // user and group
                     if ($egwAttender['cal_user_id'] > 0) {
                         $tineAttenderArray['user_type'] = Calendar_Model_Attender::USERTYPE_USER;
                         $tineAttenderArray['user_id'] = Tinebase_User::getInstance()->getUserById($this->mapAccountIdEgw2Tine($egwAttender['cal_user_id']))->contact_id;
                         $tineAttenderArray['displaycontainer_id'] = $this->getPersonalContainer($this->mapAccountIdEgw2Tine($egwAttender['cal_user_id']))->getId();
                     } else {
                         $tineAttenderArray['user_type'] = Calendar_Model_Attender::USERTYPE_GROUP;
                         $tineAttenderArray['user_id'] = $this->mapAccountIdEgw2Tine($egwAttender['cal_user_id']);
                     }
                     break;
                 case 'c':
                     // try to find contact in tine (NOTE: id is useless, as contacts get new ids during migration)
                     $contact_id = $this->_getContactIdByEmail($egwAttender['email'], $this->mapAccountIdEgw2Tine($_egwEventData['cal_owner']));
                     if (!$contact_id) {
                         continue 2;
                     }
                     $tineAttenderArray['user_type'] = Calendar_Model_Attender::USERTYPE_USER;
                     $tineAttenderArray['user_id'] = $contact_id;
                     break;
                 case 'r':
                     $resource_id = $this->_getResourceId($egwAttender['cal_user_id']);
                     if (!$resource_id) {
                         continue 2;
                     }
                     $tineAttenderArray['user_type'] = Calendar_Model_Attender::USERTYPE_RESOURCE;
                     $tineAttenderArray['user_id'] = $resource_id;
                     break;
                 default:
                     throw new Exception("unsupported attender type: {$egwAttender['cal_user_type']}");
                     break;
             }
             $tineAttendee->addRecord(new Calendar_Model_Attender($tineAttenderArray));
         } catch (Exception $e) {
             $this->_log->warn(__METHOD__ . '::' . __LINE__ . ' skipping attender for event "' . $_egwEventData['cal_id'] . '"cause: ' . $e->getMessage());
             // skip attender
         }
     }
     // resolve groupmembers
     Calendar_Model_Attender::resolveGroupMembers($tineAttendee);
     $groupMembers = $tineAttendee->filter('user_type', Calendar_Model_Attender::USERTYPE_GROUPMEMBER);
     foreach ($groupMembers as $groupMember) {
         $groupMember->status_authkey = Calendar_Model_Attender::generateUID();
         $contact = Addressbook_Controller_Contact::getInstance()->get($groupMember->user_id);
         $groupMember->displaycontainer_id = $this->getPersonalContainer($contact->account_id)->getId();
     }
     return $tineAttendee;
 }