I tried with this little modification but also with that, it didn't work...

#0. create database
syncevolution --create-database backend=evolution-contacts database=NextContacts

#1. create peer
syncevolution --configure --template webdav username=John password=johnssecret keyring=no syncURL=https://domain.com/remote.php/dav/addressbooks/users/john/contacts/ target-config@next-conf

#2. create new datastore
syncevolution --configure backend=evolution-contacts database=NextContacts @default next-datastore

#3. Add a remote database to the datastore
syncevolution --configure database=https://domain.com/remote.php/dav/addressbooks/users/john/contacts/ backend=carddav target-config@next-conf next-datastore

#4. Connect remote Contacts with the local Database
syncevolution --configure --template SyncEvolution_Client syncURL=local://@next-conf username=john password=johnssecret next-conf next-datastore

#5. Add a local database to the datastore
syncevolution --configure sync=two-way backend=evolution-contacts database=NextContacts next-conf next-datastore

#6 first time syncing
syncevolution --sync refresh-from-remote next-conf next-datastore