Bulk exporting of External contacts to Office 365 Exchange online

The non-profit organization that I support uses a Google group account to host its members email address. The organization has hundreds of email addresses in this group account. As soon as the organization started using Office 365 it soon become apparent that it needed to import those email addresses into Exchange Online in bulk so that we can add these emails into a distribution group (DG) account.

How do you go about importing these external emails into Office 365 Exchange online?

  1. Go to Google Gmail account, export the email addresses and save as csv inside the c:\temp folder or wherever you like.
  2. Make sure the following fields have values inside the above-mentioned csv file:
    • ExternalEmailAddress
    • Name
    • FirstName
    • LastName
    • OtherTelephone
    • Manage
  3. Start windows PowerShell as admin and connect to your office 365 Exchange online tenant. You can connect to Office Exchange online using the below scripts. You will be asked to login and make sure you use your Office 365 admin account and password:

$UserCredential = Get-Credential

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic –AllowRedirection

Import-PSSession $Session

PS-email-export-01

4. Next run the following command:

Import-Csv c:\temp\ExternalContacts.csv|%{New-MailContact -Name $_.Name -DisplayName $_.Name -ExternalEmailAddress $_.ExternalEmailAddress -FirstName $_.FirstName -LastName $_.LastName}

The assumption is you saved your csv file under the folder c:\temp

As you ca see below now you should see each external users being exported to Office 365 Exchange online.

PS-email-export-02

5. Go to your Office 365 Exchange online admin center to check exported contacts

6. Click recipients from left navigation and then contacts from top tab. Now you see all your external contacts populated inside Office 365.

PS-email-export-03

Advertisements

Options for setting up dev environment to create SharePoint 2013 provider-hosted app

The two options that, I think, we have for creating provider-hosted apps are the following. Having said that you may have a 3rd option which is a hybrid scenario:

  1. Using a locally installed SharePoint 2013 environment (Azure or a local SP box) and configuring for a high-trust apps for SharePoint. You can have a local Sharepoint farm either by spinning an Azure VM image which has all the nuts and bolts required to setup SharePoint, AD, etc.. (this can be cheaper if you have MSDN subscriotion) or having an expensive machine where SharePoint 2013 is installed.
  2. Using Office 365 SharePoint tenant where all the configuration is setup for you via ACS – OAuth.high-trust

Here are relevant videos:

TechEd 2014 video on setting up your on-premises environment for app development.

Using an existing Windows Azure AD Tenant with Windows Azure.

Error occurred in deployment step ‘Install app for SharePoint’: SideLoading of apps is not enabled on this site

In order to publish a SharePoint hosted app to a site collection the site must be based on the developer site template or have the “Developer” Feature enabled on it.  The “Developer” Feature is marked as hidden in its definition so you must use PowerShell to enable the Feature. This error is caused when you try to deploy in a non-developer template site collection.

To avoid this error, either for SharePoint online or On-premise development, try first to create a site collection based on the Developer template and deploy your SharePoint-hosted app to this site collection. If you are deploying to a non-developer template site collection, which is something you shouldn’t be doing then here are the live links to download the SharePoint Online Management Shell i.e. for SharePoint online scenario and associated PowerShell scripts as described in the screenshot below:

side-loading

Hello world SharePoint-hosted app

As indicated in my last blog post, I am running the Apps for Office sample packs so that I can learn some their techniques. The following is what I had to do to run the “Hello world  SharePoint-hosted” app and the result I got.

  1. I run the above app by using Visual Studio 2013 update 3
  2. Below is how the file looks like under the solution explorer. Make the necessary changes as suggested below and run it.

hello-sp-hosted-app

 

3. You will immediately be asked for Office 365 user name/password and later you see the “Do you trust Basic SharePoint-hosted?” app page as follows

trus

4. Click Trust It button and you will see this result page

resultThere was some warning while I deploy the app because the CDN url for jquery as was set as http not https. Change it to https and that will take care off the error.

Another note, is that as you uninstall and install the same app the GUID for appweb  appears to remain the same except the last letter in the GUID part changing sequentially up. 

If you go to my Office 365 tenant home page, https://sharepointcan.sharepoint.com, you see a link for the new SharePoint-hosted app listed under the Recent left navigation menu as well as created within the Apps in Testing custom list. The latter custom list captures the list of apps under test as well as their appweb url.

result2

If you want to refer as to how this app is created please check the how to create a basic SharePoint-hosted app.

Now, I would like to deploy the app so that my users can start using it. How do I go about it. First make sure you deploy the app from VS 2013. Next we need to find a place where we can store the app. Options are either to SharePoint public store or your own organizational app catalog. I will create an app catalog by going into my Office 365 SharePoint Admin center. Check this how to deploying and installing apps for SharePoint: methods and options.

appcat

Go to your App catalog site collection and upload the .app file into the Apps for SharePoint document library.

app-location How to add an app

Go to any site where you would like to add this app (and a copy of the same app is not yet avilable) by clicking the gear icon a.k.a. site actions -> Add an app -> Click From Your Organization, from the left nav -> click the app -> Click Trust It button.

This will add the app into your site. When you click this newly created app, it send you to a different domain, as explained above, but same SP chrome setting.

That is it.

My approach for mastering SharePoint 2013 apps development

SharePoint development in the 2013 version has drastically changed leaving us to scratch our head as there is a lot to learn to catch up with the best process/technique of developing SharePoint apps. To make matter worst, Microsoft is push enterprise SharePoint development from on-premise to Office 365. Meaning we need not to forget the old way of writing trusted, server-side code, solutions as well as the new/future way of writing client-side code or apps in short. Having said that this blog post only refers to the latter SharePoint development scenario, which is creating SharePoint apps. The following is how I mapped my learning process. If you have a different one please let me know.

  1. Sign up for Office 365 environment and install Visual Studio 2013 update 3 in your local dev machine – done
  2. Signup for Azure as the provider hosted app that you develop will require you to have a  website where you would deploy your custom code – done
  3. Set up on-premise SharePoint 2013 development environment by forking at least a 16 GB memory laptop, which can be very expensive but effective – done
  4. Install Apps for Office sample packs as well as Office Dev Github projects and start playing with the code. I preferred to run these codes in my Office 365 tenant so that it would be much faster to start the work – in progress
  5. First plan is to master SharePoint-hosted apps development and later move into provider-hosted apps.
  6. Learn JavaScript frameworks such as jQuery and Angular JS as they can be valuable tools in the SharePoint-hosted apps development life cycle.

In the next blog post I will share some of the experiences I got in my learning endeavor.

Important Online resources/links

These are links that I put together as a reference for myself. It includes links that have multitude of resources or individual blog post links that I would like to use in my future projects.

  1. http://dev.office.com/training
  2. http://juliepagano.com/blog/2014/05/18/javascript-debugging-for-beginners/
  3. https://www.udemy.com/angularjs-jumpstart
  4. http://www.microsoftvirtualacademy.com/product-training/sharepoint
  5. http://sharepointfieldnotes.blogspot.ca/2014/07/uploading-large-documents-into.html
  6. http://eloquentjavascript.net/
  7. Office 365 tip – Provide a contact both internal and external mail address
  8. AngularJS JumpStart with Dan Wahlin
  9. Introduction to Object-Oriented JavaScript
  10. A Drip of JavaScript
  11. .NET and JavaScript libraries for Office 365 APIs
  12. JavaScript API for Office (v1.1)
  13. John White, BI guy
  14. The Data Queen