How to migrate all your contacts between two providers on android? Suppose I'm using an android phone running stock Android 6.0. Suppose further there are about 100 contacts and about 50 of them are with provider P and the rest is with provider G (as displayed by the default Google-Contacts app).

Now what I want to do is to move all the remaining 50 contacts which are still with G to P so I have every contact once and stored and synced with provider P.

How can I do this, preferably using only my phone?

Now I'd do this manually using the Contacts-App but it won't allow me change the storage provider for an established contact.

For clarification: the phone in question is a Nexus 5, provider G is obviously google using the device-default google account and provider P is posteo which is registered to Android as a "calendar service provider" via DAVDroid.
To do that natively only using your phone, you'd need to either manually enter all those 50 contacts to the new provider, then drop the old entries.

You might also be able to export all your contacts to SD card (using the contacts/people app: Menu › Export/Import › Export to SDCard), edit the resulting file, and import it back again – but that might be error prone.

An easier approach would be using a third party solution, like Simpler Contacts Backup – which directly lets you move contacts between accounts, according to the app's description.