Microsoft, Samsung and Google provide their users accounts to synchronize Calendar or Contacts, the main issue is that you don't have control on how they store and what they could do with the contacts information you gave to them. If you have an OwnCloud server you can synchronize all your files, but you are quickly disappointed when you want to synchronize your CalDAV and CardDav with clients on windows or on an android phone.
On windows you can add a fake iCloud account (wrong id and password) then change manually contacts and calendar server. That done you can set up your owncloud id and password to access and synchronize it all.
On android there is an application compatible with OwnCloud and NextCloud called Open Sync, it let you add a layer on your smartphone system to get the possibility to add nextcloud account.