Active Directory does not import VCF files directly. To get vCard contacts into AD: (1) convert VCF to CSV using Univik vCard Converter, mapping VCF fields to AD attribute names (givenName, sn, mail, telephoneNumber, company), (2) import the CSV using PowerShell’s New-ADObject cmdlet with -Type Contact to create AD contact objects in your target OU. Alternatively, convert to LDIF format and import with the ldifde command-line tool.
Introduction
Organizations import external contacts into Active Directory to populate the Exchange Global Address List (GAL), maintain vendor directories, or provide a central lookup for partner contact information. AD stores these as “contact” objects, which are distinct from user accounts because they have no login credentials, no mailbox, and no security permissions. They exist purely as directory entries that are visible across the organization.
Since AD does not accept VCF files natively, the import requires a two-step process: convert VCF to a tabular format (CSV or LDIF), then import using PowerShell, ldifde, or a third-party tool. This guide covers the complete workflow including the field mapping between VCF properties and AD attributes, which is the most error-prone part of the process.
How AD Contact Objects Work
Active Directory supports several object types. The “contact” object class (objectClass: contact) is designed for external people who need to appear in the directory but do not need authentication or a mailbox. Every contact object requires a cn (Common Name) attribute and must be placed in an Organizational Unit (OU).
When Exchange Server is present, contact objects with a populated mail attribute automatically appear in the Global Address List. This means importing VCF contacts into AD can populate your organization’s GAL with vendor, partner, or client contact details that all employees can search from Outlook.
Contact objects support a wide range of attributes including name components, email, multiple phone numbers, full address, company, department, title, and manager. Not all of these have equivalents in every VCF file, so the mapping table below shows which VCF properties correspond to which AD attributes.
VCF to Active Directory Field Mapping
| VCF Property | AD Attribute | AD Display Name | Notes |
|---|---|---|---|
| FN | displayName | Display Name | Also used for cn (Common Name) |
| N (given name) | givenName | First Name | Second component of N property |
| N (family name) | sn | Last Name | First component of N property |
| Required for GAL visibility | |||
| TEL;TYPE=WORK | telephoneNumber | Telephone Number | Primary business phone |
| TEL;TYPE=CELL | mobile | Mobile | Cell phone |
| TEL;TYPE=FAX | facsimileTelephoneNumber | Fax | Fax number |
| ORG | company | Company | Organization name |
| TITLE | title | Job Title | Position or role |
| ADR (street) | streetAddress | Street Address | Third component of ADR |
| ADR (city) | l | City | Fourth component of ADR |
| ADR (state) | st | State/Province | Fifth component of ADR |
| ADR (postal code) | postalCode | ZIP/Postal Code | Sixth component of ADR |
| ADR (country) | c | Country (2-letter) | ISO 3166 code (US, GB, DE) |
| NOTE | description | Description | Free-text notes field |
Three AD-specific details to note: the cn attribute must be unique within the target OU, so if two contacts share the same display name you need to differentiate them (e.g., append company name). The c (country) attribute requires ISO 3166-1 alpha-2 codes, not full country names. The mail attribute is not technically required for creating a contact object, but without it the contact will not appear in the Exchange GAL.
Step 1: Convert VCF to CSV
Open Univik vCard Converter, load your VCF file and select CSV as the output format. During the field mapping step, rename the output columns to match the AD attribute names from the table above. This eliminates the need for column renaming later. For example, map FN to “displayName”, the given name component of N to “givenName”, EMAIL to “mail”, and ORG to “company”.
If you have a multi-contact VCF file with hundreds or thousands of entries, the Univik converter handles it in a single operation. The output CSV should have AD attribute names as column headers and one row per contact. Verify the CSV in Excel or a text editor before proceeding to the import step.
For contacts with multiple email addresses or phone numbers in the VCF, decide which value to use as the primary. AD’s mail attribute stores a single primary email, and telephoneNumber stores a single primary phone. Additional emails can go in proxyAddresses (with “smtp:” prefix) if you are using Exchange.
Method 1: Import with PowerShell (New-ADObject)
Best for: Bulk import with full control over attributes and error handling.
Open PowerShell as Administrator on a machine with the Active Directory module installed (any domain controller or a workstation with RSAT). Import the AD module if it is not loaded automatically:
Import-Module ActiveDirectory
Then run the import script. Replace the -Path value with the distinguished name of your target OU:
Import-Csv "C:\contacts.csv" | ForEach-Object { New-ADObject -Type Contact -Name $_.displayName -Path "OU=ExternalContacts,DC=company,DC=com" -OtherAttributes @{ 'displayName'=$_.displayName; 'givenName'=$_.givenName; 'sn'=$_.sn; 'mail'=$_.mail; 'telephoneNumber'=$_.telephoneNumber; 'mobile'=$_.mobile; 'company'=$_.company; 'title'=$_.title } }
The -Name parameter sets the cn attribute and must be unique within the OU. The -OtherAttributes hashtable maps CSV columns to AD attributes. Add or remove attributes based on what your CSV contains. If a field is empty for a given contact, PowerShell will still attempt to set it, so add conditional checks for blank values in production scripts to avoid errors.
Method 2: Import with LDIFDE
Best for: Administrators familiar with LDIF format or importing from LDAP-compatible systems.
LDIFDE (LDAP Data Interchange Format Data Exchange) is a Windows Server command-line tool that imports and exports AD objects using LDIF files. To use this method, convert your VCF to LDIF format first, or manually create an LDIF file from the CSV data.
Each contact entry in the LDIF file follows this structure:
dn: CN=John Smith,OU=ExternalContacts,DC=company,DC=com
changetype: add
objectClass: contact
cn: John Smith
displayName: John Smith
givenName: John
sn: Smith
mail: john.smith@example.com
telephoneNumber: +1-555-0100
company: Acme Corp
Separate each contact entry with a blank line. Save the file as contacts.ldif (UTF-8 encoding) and run:
ldifde -i -f contacts.ldif -j C:\logs
The -i flag indicates import mode. The -j flag specifies the log directory for troubleshooting failed entries. Test with a small file (2-3 contacts) before running the full import.
Method 3: Import Manually via ADUC
Best for: Adding a small number of contacts (under 10) without scripting.
Open Active Directory Users and Computers (ADUC). Navigate to the target OU. Right-click the OU, select New > Contact. Fill in First name, Last name, and Display name. Click OK. Then right-click the new contact, select Properties, and populate the remaining fields (email, phone, company, address) on the General and Address tabs.
This method is practical only for a handful of contacts. For anything more than 10 entries, use PowerShell (Method 1) or LDIFDE (Method 2) to avoid manual data entry errors and save time.
Exchange GAL Integration
If your organization runs Exchange Server (on-premises or hybrid), AD contact objects with a populated mail attribute automatically appear in the Global Address List after the next address book generation cycle. Users will see these contacts when searching the address book in Outlook or OWA.
For contacts to be mail-enabled (appear in the GAL with proper routing), you may also need to set the targetAddress attribute (SMTP:user@external.com) and the proxyAddresses attribute. In Exchange Online with Azure AD Connect, contact objects synchronized from on-premises AD appear as mail contacts in Exchange Online’s GAL. Ensure Azure AD Connect is configured to sync the Contacts OU.
If the contacts do not appear in the GAL immediately after import, wait for the address book generation process to complete (typically runs on a schedule) or force it manually using the Update-AddressList and Update-GlobalAddressList cmdlets in Exchange Management Shell.
Common Problems and Fixes
“The specified account already exists” error during import. The cn (Common Name) must be unique within the target OU. If two contacts share the same display name, append a differentiator: “John Smith (Acme)” vs “John Smith (Contoso)”. In your PowerShell script, add logic to check for existing objects before creating new ones.
Contacts created but not visible in Exchange GAL. Verify the mail attribute is populated. Contacts without an email address do not appear in the GAL. Also check that the OU containing the contacts is within the scope of Azure AD Connect sync (if using hybrid Exchange) and that the address book generation cycle has completed.
Country field rejects full country names. AD’s “c” attribute requires ISO 3166-1 alpha-2 codes (e.g., “US”, “GB”, “DE”, “IN”), not full names like “United States” or “Germany”. If your VCF file contains full country names, convert them to two-letter codes in the CSV before importing. AD also has “co” (country name) and “countryCode” (numeric code) attributes that accept different formats.
PowerShell errors on empty attribute values. If a CSV row has a blank field (e.g., no mobile number), the New-ADObject cmdlet may throw an error when trying to set an empty string. Add conditional logic in your ForEach loop: only include attributes in the -OtherAttributes hashtable if the CSV value is not blank. Build the hashtable dynamically and add key-value pairs only when the value is present.
Frequently Asked Questions
Can Active Directory import VCF files directly?
No. Active Directory does not have a native VCF import feature. You must convert VCF to CSV (for PowerShell import) or LDIF (for ldifde import) first. The conversion can be done with Univik vCard Converter, which allows you to map VCF fields to AD attribute names during export.
What is the difference between a contact object and a user object in AD?
A contact object (objectClass: contact) represents an external person with no login credentials, no mailbox, and no security permissions. A user object (objectClass: user) represents an internal person who can authenticate, has a mailbox (if Exchange-enabled), and can be assigned permissions. Use contact objects for importing external VCF contacts.
Do I need Exchange Server for contacts to be useful in AD?
No. Contact objects exist in AD independently of Exchange. However, without Exchange the contacts will only be visible through AD tools (ADUC, PowerShell). With Exchange, contacts appear in the Global Address List and are searchable from Outlook, making them far more accessible to end users.
Can I update existing AD contacts from a new VCF export?
Yes. Use the Set-ADObject cmdlet in PowerShell to update attributes on existing contacts. Match on a unique identifier like mail or displayName, then update the changed fields. For LDIFDE, use changetype: modify in your LDIF file. Test updates on a few contacts before running in bulk.
Is there a limit on how many contacts I can import into AD?
There is no hard limit on AD contact objects. Organizations commonly store tens of thousands of contacts. Performance depends on your domain controller hardware, replication topology, and how many attributes are populated per contact. For very large imports (50,000+), import in batches and monitor replication health.
Conclusion
Last verified: February 2026. PowerShell import tested on Windows Server 2022 with Active Directory module. LDIFDE tested on Windows Server 2022. Field mapping tested with VCF files exported from Google Contacts, Outlook, iPhone, and Android across vCard 2.1, 3.0, and 4.0 formats.
Importing VCF contacts into Active Directory is a two-step process: convert the VCF to CSV using Univik vCard Converter (with columns named to match AD attributes), then import using PowerShell’s New-ADObject cmdlet with -Type Contact. The 15-row field mapping table in this guide ensures every VCF property lands in the correct AD attribute. For organizations with Exchange, the imported contacts automatically appear in the Global Address List once the mail attribute is populated and the address book regeneration cycle completes.
Three critical steps: name your CSV columns using AD attribute names (givenName, sn, mail, telephoneNumber, company) during VCF-to-CSV conversion, ensure cn values are unique within the target OU, and populate the mail attribute for every contact you want visible in the Exchange GAL. Use the PowerShell script from Method 1 with conditional checks for empty fields to avoid import errors.