App: DoctorContact
Developer: Swamp Dog, LLC
Genres: Productivity, Utilities

With the Contacts application Apple has provided users with an efficient repository with great flexibility.

Apple has also provided developers a modern framework (CNContacts) to interact with this data.

As one example, CNContacts allows developers to tap into the powerful ‘Container’ feature of the Contacts application.
A normal Contacts users might well ask, "What the heck is a Container?  I can't find any such feature in Contacts."

While the Contacts application is normally used for to store contacts in iCloud, the Container feature allows the Contacts application to manage other repositories.
To see this in action on your Mac, open System Preferences and then Internet Accounts - there you can use Contacts to manage Google, Exchange, Yahoo, AOL, and more.

Doctor Contacts works with all of these supported repositories! Yes, DoctorContact can address whatever Containers you have setup in System Preferences.

DoctorContacts mission is to become the premier utility for managing, cleaning, and repairing the records managed by Contacts.
Please note that DoctorContact is NOT, in any way, a replacement for Contacts!  You still use Contacts day to day.


APPSTORE
DoctorContact is free to download - but it lands with only limited functionality.  
Apple will not permit DoctorContact to be sold as a subscription, therefore I cannot offer a free trial.
So there are 2 options to unlock full functionality - both are found inside the downloaded app.
• License - a one time purchase
• Time Limited Use  - does NOT renew - try full functionality to see it works for you - buy again later if you want to use again..


LIST VIEW
DoctorContact presents your contacts in a spreadsheet like list  view.
The user can control what fields appear in this view and the order of the columns.
The saving, sharing, and dragging functions all abide by this user defined list view.
So what you drag or save is exactly what you see in the spreadsheet view.
You can drag selected rows out of this list view into a spreadsheet or text document.

The spreadsheet-like list view can be filtered by container, contact type (person or company) as well as by Group.
You can save or share any selection as a tabbed string, a comma-separated string, a .txt file, a .csv file, or a vcf file.


FIND REPLACE
Doctor Contact supports a Find and Replace function which is limited by data field type.
The Find function supports ‘Exact’, ‘MatchCase’, and ‘BeginsWith’.
So for example you can  build a list of all Contacts whose LastName begins with ‘Green’
Then in the ensuing list select a few rows and replace the LastName with ‘Greene’.


EXTRACT FROM NOTE
DoctorContact provides a means to move data from the Notes.
You select what kind of data you want to move, e.g. phone numbers and DoctorContact will load the current list with contacts which have a phone number in the Notes field.  You then select the contact to be modified and choose which of the phone numbers from the Notes field to apply as a regular phone number.  
This works with phone numbers, email addresses, postal addresses and links.


DUPLICATION
DoctorContact can identify two forms of duplication: contacts which have the data repeated within that contact; and two different contacts which share the same data. You can replace data in individual records or you can merge selected contact records together


OTHER ISSUES TYPES
Upper, lower, and mixed case issues, unusual data, empty data. 
• Case related issues have a 'Capitalize' function
Unusual issues have 3 options: Repurpose, Yank to Notes, or Update.
	Repurpose might be when you have a phone number stored in the email field.
	Update is combined with a text field to allow you to provide corrected data.
Missing issues have a text field allowing you to update on a case by case basis.

If you have any requests for new functionality send them to: developer@swampdog.info

Release notes:
Added the 'Country' field to Find & Replace (thanks Walter of the request)

Added support for 'isEmpty' as an option for Find & Replace