Hello,
I am testing the new Calendar Sync functionality in SuiteCRM 8.10.1 with a Nextcloud CalDAV calendar and would like clarification on the intended behavior.
Environment:
SuiteCRM 8.10.1
Nextcloud Calendar
CalDAV account configured successfully
Calendar Accounts Sync scheduler active and running
Manual synchronization also tested
Observed behavior:
Create a Meeting in SuiteCRM
Event is created successfully in Nextcloud
Modify that event in Nextcloud
Changes synchronize back successfully into SuiteCRM
Create a brand-new event directly in Nextcloud
Event does NOT appear in SuiteCRM after manual or scheduled synchronization
Example ICS of the Nextcloud-created event:
UID: 690a4bbd-e526-4b5a-81c6-e746aa4df23c
SUMMARY: CalDav Test Meeting
DTSTART: 2026-06-15 19:00
DTEND: 2026-06-15 19:30
The event is:
In the same calendar used by SuiteCRM
Visible in Thunderbird through the same CalDAV calendar
Not recurring
Not imported from another source
Created directly in Nextcloud Calendar
Question:
Is the expected behavior that SuiteCRM should discover new external CalDAV events and create new SuiteCRM Meeting records?
Or is Calendar Sync currently designed only to synchronize events that were originally created in SuiteCRM (or already linked through an existing mapping)?
The documentation mentions bidirectional synchronization, but I could not find a clear explanation regarding creation of new Meeting records from external CalDAV events.
Any clarification would be greatly appreciated.
Thank you.
Hello,
yes, your observations are correct - there are still some limits around the integration.
Specifically for the CalDav to SuiteCRM way, that’s still missing / not working:
opened 01:48PM - 23 May 26 UTC
Type: Bug
### Issue
I've set up / tried SuiteCRM 8.10.1 with NextCloud calendar.
So I've … created a user on each system, the App password on NC.
Then I've setup the admin settings on Suite.
Next the user calendar sync settings.
- When I create a new Meeting in Suite, it's being synced to NextCloud
- When I update this Meeting on NextCloud, the update is synced back into SuiteCRM
- When I create a new Meeting in NextCloud, it is **_not_** being synced to Suite
- When I delete in Suite, it's being deleted in NextCloud as well
### Possible Fix
_No response_
### Steps to Reproduce the Issue
```bash
1. See above
```
### Context
The debug log from the time of executing the sync manually as user:
```
(SELECT acl_actions .*, acl_roles_actions.access_override, 0 as user_role
FROM acl_actions
INNER JOIN securitygroups_users ON securitygroups_users.user_id = 'abdfc8dc-3ae7-466c-bf32-a6d560e3312b' AND securitygroups_users.deleted = 0
INNER JOIN securitygroups_acl_roles ON securitygroups_users.securitygroup_id = securitygroups_acl_roles.securitygroup_id and securitygroups_acl_roles.deleted = 0
LEFT JOIN acl_roles_actions ON acl_roles_actions.role_id = securitygroups_acl_roles.role_id AND acl_roles_actions.action_id = acl_actions.id AND acl_roles_actions.deleted=0
WHERE acl_actions.deleted=0 )
UNION
(SELECT acl_actions.*, 0 as access_override, -1 as user_role
FROM acl_actions
WHERE acl_actions.deleted = 0 )
ORDER BY user_role desc, category,name,access_override desc
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][INFO] Query Execution Time:0.0025200843811035
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] current_language is: en_us
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][INFO] Found language file: en_us.lang.php
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][INFO] Found extended language file: en_us.lang.ext.php
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][INFO] Found custom language file: en_us.lang.php
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] Performing action: action_getproviderauthmethod MODULE: CalendarAccount
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] [CalendarSync][getInstance] Creating new CalendarSync instance
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] [CalendarProviderRegistry][discoverProviders] Starting provider discovery
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] [CalendarProviderRegistry][discoverProviders] Registered provider: caldav_basic
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] [CalendarProviderRegistry][discoverProviders] Registered provider: google
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] [CalendarProviderRegistry][discoverProviders] Skipping disabled provider: json_file
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] [CalendarProviderRegistry][loadProviders] Loaded 2 providers
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] [CalendarSync][getProviderAuthMethodWithValidation] Method started with source: caldav_basic
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] [CalendarSync][getProviderAuthMethodWithValidation] Found auth method: basic for source: caldav_basic
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][INFO] [CalendarAccountController] Auth method retrieved for source: caldav_basic (basic)
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEPRECATED] Array
(
)
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] Hook called: CalendarAccount::after_ui_frame
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] Creating new instance of hook class hooks without parameters
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] Creating new instance of hook class AssignGroups without parameters
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] Hook called: ::after_ui_footer
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] Creating new instance of hook class AssignGroups without parameters
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] Hook called: ::server_round_trip
Sat May 23 2026 at 13:37:37 [80127][abdfc8dc-3ae7-466c-bf32-a6d560e3312b][DEBUG] Calling MySQLi::disconnect()
Sat May 23 2026 at 13:37:48 [58406][-none-][DEBUG] current_language is: en_us
Sat May 23 2026 at 13:37:48 [58406][-none-][DEBUG] Found cache backend SugarCacheWincache
Sat May 23 2026 at 13:37:48 [58406][-none-][DEBUG] Found cache backend SugarCacheAPC
Sat May 23 2026 at 13:37:48 [58406][-none-][DEBUG] Found cache backend SugarCacheZend
Sat May 23 2026 at 13:37:48 [58406][-none-][DEBUG] Found cache backend SugarCacheMemcache
```
### Version
8.10.1
### What browser are you currently using?
Firefox
### Browser Version
_No response_
### Environment Information
MariaDB, PHP8.4
### Operating System and Version
Ubuntu 24
A bi-directional sync should work in either direction. I hope that’s just a small bug that will be fixed soon.
There are further issues though:
If you create an event in NextCloud, which contact / lead will it be related to in Suite?
What if there are multiple contacts in SuiteCRM related?
What if there is a lead and a contact with the same email?
Should the integration have some opinionated logic about which record is being assigned?