Tuesday, December 19, 2017

The Year in Review (2017)

It's just over 12 months since we made our first forays into the Office 365 space and I'm convinced that we made the right call at the right time.  Any earlier and it would have been wrong because SharePoint hadn't gained traction and OWA was undeveloped. Any later and we'd have lost our unique position.as innovators in this space. 

It hasn't all been smooth sailing and many of our legacy systems are still on IBM Domino. The approach to migration was rushed and flawed but I'm looking forward to 2018 when the dust settles and we can begin to move forward in a more orderly manner. 

All things considered though, I'm proud to have been part of the technological achievements of the year which included a complete revamp of the hardware and software in the office; including the replacement of all desktops with Microsoft Surfaces and Apple MacBooks, the replacement of our meeting room systems with Microsoft's Surface Hub technology, an office move, a rebranding, web site replacement, some major business milestones, server data centre migrations, change of file storage system and a move from Domino to SharePoint development.

There's a lot of insight that has come out of these changes which I'd like to share but that's next year. Right now, I want to focus on my perception the global office technology trends.

IBM Domino and Microsoft SharePoint

It's been an incredible year for both IBM and Microsoft. On the one hand, I was sad to be leaving the IBM Domino world after more than two decades.  I still use Notes on an almost daily basis - and that's not expected to end for a while yet - but over the past few months I've spent about 80% of my time on SharePoint and only 20% on Notes/Domino.

At the beginning of the year, it was clear that IBM Connections outranked Microsoft SharePoint as a collaboration platform in nearly every way. I'd noticed movement on the SharePoint front though and I knew that IBM's unchallenged time in that space was almost over.  IBM Connections still offers a lot of great features that I hope SharePoint will eventually acquire but the work that has been put into SharePoint over the last six months has put it firmly in the lead in the collaboration space.

IBM is prospering under Ginny Rometty's leadership which has improved drastically in the last twelve months but the welcome decision to extend the life of Domino indefinitely came far too late and well after the mixed-messages of "end of life".

This isn't the first time that IBM has mishandled communications in the Domino space and their marketing team really need to work on their messages. 

It's great to know that Domino will still be around and that it's made the transition to cloud services but IBM's future clearly lies within the services layer - and in particular, around Watson's AI services. 

Office 365 and the Web-Centric World

Microsoft Office 365 came of age this year and the company finally realised their dream of having a viable subscription-based service.  This guarantees funding for future versions of office while still engaging a service "lock-in", thanks to the file storage capabilities of SharePoint and OneDrive. At this point, Microsoft seems to be "out-googling" Google in the web services space.

A lot of this comes down to leadership. Had Steve Ballmer continued as CEO at Microsoft, the company would have remained "windows-centric" and posed much less of a threat. The vision of  Satya Nadella however is completely different and embraces the diversity of Operating Systems.

For me, this was most apparent when I was teaching SharePoint in a room full of people and the Mac users suddenly realised that the browser based systems levelled everything. The underlying system stops mattering when the OS is the browser.  This is something that Google demonstrated back in 2011 when they launched the first ChromeBooks.

I'm excited for the future of Office 365 and the continuing addition and upgrading of tools, such as the Wunderlist ported To-Do app, Microsoft Forms, SharePoint pages and the continually evolving "PowerApps". 

The Hardware Space

In the hardware space, the Windows SurfaceBooks have been fairly impressive although they've clearly had their share of quirks. In particular, Microsoft's port replicators misbehaves incredibly. The Surface Hubs are brilliant with their main fault being a complete lack of Apple support. We ended up having to attach an Apple TV to them because although other options exist, they were too complicated for our users. 

Samsung's S8 mobiles were a highlight this year and they more or less single-handedly restored faith in the Samsung brand. The Google mobiles sounded great but with the early signs  of stumbling in the Pixel 2, they obviously need a little work.  

The Decline of Apple

Much like IBM, the decline of Apple is often predicted but never actually happens. What happens instead is that they go through periods of innovation and exnovation. In case you're unfamiliar with the term;

"In commerce and management, exnovation, an opposite of innovation, can occur when products and processes that have been tested and confirmed to be best-in-class are standardized to ensure that they are not innovated further." -Wikipedia

This is exactly what IBM tried to do with Notes last year and it's what Apple has been doing with their products of late. The last couple of iPhones haven't been very revolutionary and the less said about the MacBooks, the better.

All in all, it's been an interesting year for office technology and I've learned a lot.  Hopefully next year will be a little less frantic and I'll be better positioned to explain how to make the best use of some of this technology. Stay Tuned and have a great end of year.

Tuesday, October 31, 2017

How to Duplicate the Mircrosoft Surface Hub's Screen on another Hub

So, you've got yourself a few Surface Hubs and now you're having a big meeting. Big enough to need to use both hubs together.

So... how do you do it?

The Problem

In our case, we have two meeting rooms, each with a Microsoft Surface hub on the wall.  The rooms have a removable partition which enables it to be opened up into a large board room. Unfortunately, when this happens, the meeting participants can't always see the "master screen". 

The ideal solution to this would be to have the display of the master screen duplicated on a "slave screen".  The diagram below illustrates this need.

Two Methods

There are two ways in which the screen can be duplicated.  Method 1 involves skype. It's fairly easy to set up and requires no cabling. Unfortunately, because of generally slow internet speeds, it doesn't cope with high motion slideshows -- and it certainly doesn't cope with video.

The other method involves cables.

In this post, I want to cover off both methods. I'll be referring to the hubs as the "source", which displays the images and the "target" which receives the images from the source.

The Skype Method

The skype method is really simple.

  1. Go to the target hub and turn off the volume. 
  2. You should also turn off the microphone (these first two steps are important because they prevent the microphone from going into a feedback loop -- ie: a squeal sound).
  3. On the source hub, invite the target to your skype meeting.
  4. On the target hub, join the meeting.
  5. On the source push "Present Screen" near the top of the screen. 
  6. On the target hub, maximise the screen.

You will now be able to present on the source hub and have it display on the target.  For extra points, you could optionally include a laptop and share the screen to both hubs from there.

Bear in mind that while this method works, it can be a little slow to change slides and it's terrible with animation and video.

The Cable Method

To use the cable method, you need to obtain a  DisplayPort to DisplayPort cable. The Microsoft specficiations suggest that 3 metres is the maximum length but you should be able to get it to about 5 meters without too much trouble if you use a quality cable.

In the diagram below, the red marks the things that need to be looked at if you're driving an 84" surface hub from a 55" one.  The purple indicates the things that would need to be changed if the target was another 55" hub.

The ports on the surface are confusing, to say the least as they're in reverse order on the 55" and 84" models.  They're also not labelled well at all, particularly not as a group of "input" or "output" ports. There's subtle arrows on the ports pointing into a box or out of a box. That's your indication of whether the port is an input or output one.  

Additionally, there's an important slide switch which is simply marked with an exclaimation mark in a trangle.  If you slide this to the left (looking from behind the surface screens), it "turns the onboard computer off"  -- except it doesn't. The onboard computer seems to function well enough regardless of how the switch is set. 

What the switch does do however is determine whether or not the surface will look at the input ports. This might be important if you were going to set up a permanent cable connection but only wanted it to be "active" sometimes.

Finally, on the target hub, you'll need to switch the input to Display Port. 

HDMI and VGA are options

While HDMI isn't supported as an output format, you can have HDMI as an input. That's good because HDMI cables can be longer and you can get them with built-in repeaters though I haven't tested one -- yet. 

You can also, apparently connect via VGA but since VGA doesn't carry sound, you'll want to connect the audio ports together too. I haven't tested this procedure. 

The official Microsoft documentation on this is here

Friday, October 27, 2017

Getting Started with SharePoint Lists

SharePoint lists are a great way to build quick "applications" and registers. 

If, like me, you've migrated from IBM Domino, and you were wondering where the Office 365 development functionality is, this is where it starts.  For everyone else, who has never heard of domino, don't worry, I'll explain what SharePoint lists are and why they're a great tool for you. 

What Are SharePoint Lists?

SharePoint lists are essentially a "cloud way" to store data that you want to share and search. You can put documents into lists but the best use of lists is to store and update "data".

Essentially, SharePoint lists are a kind of database. They're not incredibly powerful, like SQL server but they're usually going to be powerful enough to replace a lot of the things you might have in Microsoft Access.

One of the easiest ways to determine what applications are a good fit for SharePoint lists is to look at your spreadsheets.  Spreadsheets, like Excel are great for maths and finance but they're less suitable for simple lists -- especially if those lists need to be shared. If you're keeping track of things in excel but you're not doing maths or graphs, a list is probably a better fit.

What can I use them for? 

You can use SharePoint lists for almost anything but here's a few business ideas to get you started;

  • Inventories and Asset Registers; to track serial numbers, device allocations, IMEIs and even problems against devices.
  • Contracts; to store the actual contracts but also record information against them like start and end dates, terms and contacts.
  • Share Passwords; In most IT teams (and other business teams) there's a bunch of shared URLs, user names and passwords. Putting these into a central list makes it easier to search for them when you need them.
  • Keywords: Lists can be used to power other lists (I'll talk about that more in a future post).
  • Changes: If you're putting together a Change Management system, a list can be a good way to register a change and set a status on it.
  • Collection management; If you collect anything; books, dvds etc, Lists can be used to manage the collection. 

Building your own SharePoint List

Without further ado, here's a slideshow that walks you through the process of building a simple SharePoint list. I've ignored a lot of options and a lot of the opportunities for a slicker experience in order to keep this as simple as possible. 

Where to From Here?

This is just the tip of the iceberg when it comes to lists and there's a whole lot of other places we can go from here. In particular, we can "skin the list" to make it look nicer and we can built a mobile app using PowerApps (it's very easy), we can also add validation and security.

Tuesday, October 17, 2017

Fixing up those Pesky # Filenames for Importing into OneDrive and SharePoint

Once you're used to the new way of working, OneDrive and SharePoint are great file storage systems. The biggest problem is getting your files into them. Sure, it's usually just a case of drag and drop but the real problems are related to some tighter controls on the file names.

The worst offenders are the ampersand and the hashtag. In fact, it seems to be really common for people to name their files with a hashtag in financial circles. For example: "Invoice No #675853.pdf"

OneDrive and SharePoint will "spit the dummy" if you try to upload a file that breaks these rules.

Interface Problems

What's worse is that while the upload tools will happily report all of the errors, it doesn't give you a chance to correct them and it doesn't tell you exactly where in the path the offending file is.

What's more, you can't copy the log of errors to the clipboard and I haven't seen any signs of any other forms of logging - not that I've really looked that hard for them.

In any case, fixing these problems by hand is just a little too much, especially if you're migrating a large company with lots of files and folders.  The better solution is to prepare the files before you upload them.

OneDrive Check

I looked around for a solution to this problem as I was quite reluctant to try to roll my own. Eventually, after trying several other non-functional solutions, I found what seems to be the Microsoft supported solution.

It's a little PowerShell script called OneDrive-Check.  Since it was so difficult to find, I figured it was worth posting about to see if I could raise awareness for this little hero.

How to Use it

First of all, you need to download the ZIP file, which includes accepting an agreement. On the off-chance that the file is gone one day... and since it's a tiny text file called "OneDrive-Check.ps1", I'll include the actual contents at the end of this post... that way, you can easily recreate it if you need to.

Because there are a lot of people out there that don't seem to remember DOS, I'm going to give you the DOS/PowerShell commands for things like changing directories. I hope everyone else doesn't find this too patronising. ... oh and means to press the enter key.   :-)

  1. Click on the link, download the ZIP file and extract OneDrive-Check.ps1
  2. Copy that file to a useful place (eg: C:\temp\OneDrive-Check.ps1)
  3. Start Windows PowerShell (Click Start/Window and type Power, you'll find it). You might want to right-click on it and run as Administrator.
  4. Once PowerShell has loaded, go to the location where you saved your file
    (for example:  C: then CD C:\temp ).
  5. Type: Import-Module C:\temp\OneDrive-Check.ps1
    This should load the new module.
  6. Now go to where the files that you want in OneDrive are stored:
    (eg:  M: then CD M:\DATA )
    Remember that if you're changing into a folder with spaces in the name, you will probably want to enclose it in inverted commas;
    (eg: CD "M:\Data\Our Company Files" )
  7. To check what will happen, you can type
     OneDrive-Check -Folder "M:\Data\Our Company Files"
    (obviously substitute your folder name)
  8. To actually make the changes, you can type
    OneDrive-Check -Folder "M:\Data\Our Company Files" -Fix
  9. Best of luck. It's not perfect but it will significantly reduce your workload.
    (did I mention that it does sub-directories too?)
The main thing that doesn't seem to work (for obvious reasons) is that it doesn't resolve super-long file names.

Once the script has finished its work you can start dragging and dropping your folders into OneDrive or SharePoint document libraries.

And Now the "OneDrive-Check.ps1" File

So, just in case the OneDrive-Check.ps1 file disappears off the internet someday, here it is.  Bear in mind that in posting it on the internet, it's possible that some character changes might occur, so test it carefully before use.

(and a huge thank you to Andreas Molin, wherever he is. What a Hero!)

### Created by Andreas Molin
### Usage: Import-Module OneDrive-Check.ps1
### OneDrive-Check -Folder
### OneDrive-Check -Folder -Fix

function OneDrive-Check($Folder,[switch]$Fix){
    $Items = Get-ChildItem -Path $Folder -Recurse

    $UnsupportedChars = '[!&{}~#%]'

    foreach ($item in $items){
        filter Matches($UnsupportedChars){
        $item.Name | Select-String -AllMatches $UnsupportedChars |
        Select-Object -ExpandProperty Matches
        Select-Object -ExpandProperty Values

        $newFileName = $item.Name
        Matches $UnsupportedChars | ForEach-Object {
            Write-Host "$($item.FullName) has the illegal character $($_.Value)" -ForegroundColor Red
            if ($_.Value -match "&") { $newFileName = ($newFileName -replace "&", "and") }
            if ($_.Value -match "{") { $newFileName = ($newFileName -replace "{", "(") }
            if ($_.Value -match "}") { $newFileName = ($newFileName -replace "}", ")") }
            if ($_.Value -match "~") { $newFileName = ($newFileName -replace "~", "-") }
            if ($_.Value -match "#") { $newFileName = ($newFileName -replace "#", "") }
            if ($_.Value -match "%") { $newFileName = ($newFileName -replace "%", "") }
            if ($_.Value -match "!") { $newFileName = ($newFileName -replace "!", "") }
         if (($newFileName -ne $item.Name) -and ($Fix)){
            Rename-Item $item.FullName -NewName ($newFileName)
            Write-Host "$($item.Name) has been changed to $newFileName" -ForegroundColor Green

Thursday, October 05, 2017

SharePoint works if you start working the NEW way

It's been a long road from drive letters to SharePoint but I feel quite comfortable in this space now. It's all a matter of perspective -- and of course, resisting the urge to rebuild the old world in the new space. 

SharePoint works extremely well with files but there's a disturbing trend that I've seen amongst my users.  They use Sync to create a local replica of the entire of their SharePoint file libraries on their computers.

Apart from being extremely dangerous, this also introduces a lot of complications. One of the biggest complications is that many of the limitations that don't exist or are reduced in SharePoint, particularly folder structure (long path and file names) are still present in Windows 10. This means that if you sync a large SharePoint library you may find it difficult to save files in the lower levels on your PC.

When you think about it, syncing everything is just a way of trying to bring the old world into the new. A way to continue using "mapped drives".

I've found that working a new way, makes things so much easier but of course, it requires a bit of retraining.

A Training Presentation

Below is a presentation I made to help train people where I work on the new way to work with SharePoint files. I've deliberately kept it short and tried not to go off on tangents.  Feel free to use it and modify it for your audiences.

Link: https://www.slideshare.net/secret/AxiJKTViS54DpM

and here's an embedded version.

Tuesday, June 20, 2017

Thoughts on the Microsoft Surface Book 4

I've spent the last couple of months on Microsoft's Surface Book 4 (i7) and I've had enough time to form an opinion.

I generally hate laptops but I've found the Surface Book to be fast enough and easy enough to do the majority of my work on. The touchscreen is very responsive and I love being able to detach the tablet from the base - though admittedly, I rarely have a good business reason to do it.

We ordered around 45 of the devices all at once. One was DOA and another had batteries in the base that worked but dysfunctional batteries in the screen.  At around 4% failure it's probably still a reasonable return rate for hardware.

In terms of general use, the keyboard and trackpad are fine and the display is very clear. The processing power of the device is good and multi-touch on the trackpad and display are great too. The pen is currently a little useless and gimmicky but I've recently discovered that it works with the current version of Corel, so I may find a use for it yet.

Microsoft's Dock (Port Replicator)

While the Microsoft's dock for the surface book is amazingly simple to connect (it's magnetic and it sucks itself into the port when you wave it near the outlet), it's quite simply the words piece of functional technology I've seen in years. We've had nothing but trouble with them (on pretty much all of our surface devices).

Some of the problems undoubtedly relate to the difference in screen resolutions when using multiple monitors (the Surface's resolution of 3000 x 2000 is incredible). We've found that often when our people return from lunch that their external monitor, or the surface screen (or both) is blacked out. It's become such a problem that we've issued our people with a standard procedure for fixing most surface problems;

  1. Disconnect the Surface from the Dock
  2. Unplug the power from the doc
  3. Make sure that the Surface display activates (if it doesn't hold down the power for a few minutes then press power again once).
  4. Wait about 30 seconds
  5. Restore Power to the Surface Dock
  6. Wait another 10 seconds
  7. Reconnect the Surface Dock to the surface. 
This fixes most problems. 

The surface dock problems aren't confined to the screen either. I've had issues with the keyboard and the mouse losing power intermittently (seriously, the red light under the mouse goes out).

Even when the surface dock is working perfectly, the connections are a real pain and it's mind-boggling that they decided to include two display ports, instead of, for example, one display port and one HDMI port. It means that in almost every instance, we've had to get adapters for our monitors.

In Summary

The surface is an incredibly good laptop marred by the worst dock in history. Buy a surface  but consider getting a port replicator from somewhere else.  It probably won't connect as easily but there's a better chance of it working.

Honesty clause: I just decided that a review of the surface might be a useful thing. We got nothing for free and purchased all of the hardware as part of work. 

Monday, May 01, 2017

How to Split SharePoint Document Libraries to Simplify Synching

In my last post, I talked about how you need to split your SharePoint document libraries into smaller chunks in order to synch them. In this post, I'm going to assume that you made the same mistake that I made and put too many documents into the one document library.

In my case, I have an IT Team SharePoint site which holds all of our IT documents. It makes sense to keep all our IT documents together. For the most part, the site doesn't need to be synched anywhere because it's mostly a storage mechanism.  For example, our Finance and Invoices sub-folder is a place where we save invoices.  It's not a place where we go to edit them.

One area that I do need to be able to synch however is our projects and strategy area. Our projects are always needing updates and modern day IT strategy needs to be increasingly agile. It's always in a state of change.

Step 1: Add a New Document Library

The first step is to add a new document library. One of the great things about this is that you're still adding the document library to your existing SharePoint site. So I'll still get to keep my Projects and Strategy within the IT site.

Start by clicking the cog in the upper right corner of SharePoint and choose Add an App.

The app you want to add is called Document Library, so choose this, type a name for it, in this case Projects and Strategy and then click Create.

Step 2: Move the Files

Next, you need to navigate back to your existing documents and enter the existing Projects and Strategy folder. Click on the circle near the top to highlight all of the documents in this library. 

With all of the files and folders highlighted, click Copy To. You can't move files into different document libraries, you have to copy and delete instead. Given that SharePoint sometimes doesn't copy things correctly, this isn't such a bad choice. 

The Copy To command will present you with some choices on the right hand side which allows you to choose other SharePoint sites and libraries.  Navigate to the newly created library and choose copy

When the process is over, check that the files were correctly copied and then delete the folder out of the original area. Note that if you shared the files with anyone, you'll need to reshare them from the new location. 

Step 3: Make it Easier to Locate

If you're using Office 365 apps, your new library should already be fairly easy to locate but if you want to make it easier for casual browsers to find files via your SharePoint site, you'll want to add it to the menu.  

Click on the HOME menu on your SharePoint site and then scroll down to find recent activity. You should see your new library. Click on your library and copy the URL in the browser's address bar. This should be the most direct link to your library.

Next click EDIT at the bottom of the left hand side navigator menu.

This puts the navigator menu into edit mode. Move your mouse to an area between entries and you should see a plus (+) sign. Click on the plus to add a navigator entry. Don't worry if it ends up in the wrong place, you can drag it around later.

Paste the URL address that you copied as the address and type your document library's name (or a shortened version of it) as the display name.  Click OK to accept the changes.

Your new navigator link will be added.  You'll also find that if you click on the three dots on the menu, you can indent it. This is a good way to keep your document libraries together. Click Save to save the navigator arrangement.

Synching is now Possible

Now that your document library is smaller, you should find that you can Sync your new library. 

Monday, April 24, 2017

Using SharePoint with OneDrive as a File Server (for Ex-Domino Admins and Traditionalists)

Over the past few months, I've been looking at a whole range of options to do with file storage on the basis that Microsoft's OneDrive simply doesn't do what we need. The whole time of course, I've been unable to shake the feeling that Microsoft should be offering something that already covers this space. After all, file sharing is one of the major "tentpoles" in most Windows networks. 

As it turns out, SharePoint is the answer to this - and it works well if it's playing nicely with OneDrive. 

My initial investigation of SharePoint was flawed for a number of reasons. Firstly, it appears that I was looking at an "old version".  The "new" version has really only started to come out over the last few months but it's light years ahead of its predecessor.

The second reason that SharePoint was overlooked was because I really didn't have a great understanding of how (or why) it works. I was trying to compare it to IBM Domino and IBM Connections. There's a lot of similarities, particularly, with connections but they're vastly different beasts.

SharePoint Security differs from Domino Security

The security model of SharePoint is actually the opposite of Domino. In Domino, you start off with reasonably "open" access controls. For example, the server is open to "everyone in the company". From there, you restrict access to specific databases.  Within each of these databases, you further restrict access to views, forms, controls and documents; firstly via roles and then later via reader and editor fields.

SharePoint seems to be the opposite. Systems start out with a specific set of restrictions and then suddenly, even if you're halfway down the file structure tree, you might decide to share a particular folder and all sub-folders with someone who didn't previously have access. In fact, you can take it a step further an share with someone entirely outside of the company.

In SharePoint it is much, much easier to grant access to people however I'd venture to say that the security model it uses is by no means as "safe" as Domino.  

In Domino, if you wanted to suddenly revoke access for someone at a database level, you could simply remove them from the ACL.  In SharePoint, it's potentially a lot more complicated. As administrators, it's important to understand these differences because the SharePoint security model is also "mostly opposite" to the way the standard file server security works in Windows.

The Explorer Interface is Gone

If you talk to the Microsoft support team, they'll tell you how to map a drive from Windows file explorer to SharePoint. It works but in order to do it properly, you need to use Microsoft Internet Explorer ... not Edge ... nope, only the older technology will do.

I asked about the plans for edge but clearly there are no plans. It's not something that Microsoft wants to support. This was quite a shock to me after the amazing level of integration offered by IBM Connections.

I guess the important "take-away" from this is that Microsoft feels that the Windows File Explorer interface needs to "die".  Everything will be web from here on. 

Plan Ahead

In the old days, you created a file server by dumping all of your files into folders and sharing various bits out. It was a fairly forgiving process that enabled you to fiddle about with files until you got them right. SharePoint today is not quite so forgiving and moving things about will generally break links and muck up shared connections. You need to plan ahead.

Logical Ownership First

In the first instance, separate your files via logical ownership, which generally means "departments".  For example, most companies will have files in at least the following business areas;
  • Administration
  • Finance
  • Information Technology
  • Human Resources
  • Sales and Marketing
  • Strategy

Unless your company is a very small one (under about 30 employees), you'd be best off creating a SharePoint site for each of these major areas. This will make overall security a whole lot easier.

Smaller Chunks Second

The other thing to be aware of is that there seem to be some fairly serious limitations on the way that OneDrive syncs SharePoint data. In particular, there's an upper limit on both the number and the total size of the files that can be synched.

I'm not reiterating the limits in this post although I've seen them stated in several other places. There are two reasons for this;

1. They are subject to change
2. I've seen OneDrive behave poorly with much lower limits.

The file limitation would not normally be a problem except that OneDrive is currently incapable of doing a "partial synch".  It tries to synchronise the entire library and will dummy spit if it's too large.

For this reason, you need to add multiple document libraries to your SharePoint site.

Next Time....

I'll discuss this in my next post where I assume that like me, you've already uploaded a lot of files to SharePoint and now need to move them. Moving them is actually pretty easy and once it's done, they Sync problems are fixed. 

Tuesday, April 04, 2017

Migrating Mail from IBM Notes and Verse to Microsoft Outlook on Office 365 - Part 2

Last time on Real World Computing, I talked about migrating mail from IBM Notes and Verse to Microsoft Office 365. Now it's time for Part 2. 

Mail Routing

We did routing in two parts. Initially we had MX records for both IBM and Microsoft with Microsoft having the higher number (which means lower priority). After the cutover date we switched the priorities so that Microsoft Office 365 had the higher priority.

One of the cool things about Microsoft’s setup is that they give you two domains, one is your own and the other is an @mycompany.onmicrosoft.com one.

When we first saw this we thought it was a “bit wanky” but as it turned out, it was very useful indeed.we quickly discovered that we couldn't send mail to our internal colleagues on outlook from notes and that all of the agents in our Domino applications were only delivering internally.

Changing these to point to the onmicrosoft addresses fixed that problem. As far internal mail, we just added a mail rule to forward all new mail from our personal Domino and verse mailboxes to onmicrosoft.

Mail Migration

We tried a few things to get our old mail migrated. We had originally hoped that we could simply have a cutover date with a small amount of overlap but the reality is that other departments use mail quite differently from IT and they rely heavily on foldering and calendaring. They use search and archive very lightly - and it's not something that can be changed in the short term, regardless of how good the technology is.

We first tried putting their Verse mail into outlook and then copying and pasting mail between the mailboxes. This worked very well but we quickly discovered that there was a 90 day limit in terms of mail that Verse makes available to outlook.

The next phase involved taking an unencrypted ACL-free copy of users mail files and using conversion applications. We tried two and they both gave us a lot of trouble.

Stellar NSF to PST Converter

The first product we tried, Stellar NSF to PST Converter, had some very restrictive licensing. It was expensive and we could only run it on one PC. The trial version worked fairly well  but it was limited to only a very small amount of conversion.

The advertising claimed that it worked with Office 2016 but the reality was that we eventually had to run it with Office 2010.

Our initial attempts to get a NSF mail file converted to the 365 cloud took 24 hours for a single user with less than 3 months worth of mail. We complained about the software and after threatening to pursue the issue of a refund, the Stellar technical team worked with us on the problem for a couple of days.

Kernel Lotus Notes to Outlook Conversion

In the meantime, we bought another migration package; Kernel Lotus Notes to Outlook Conversion. This one had much better licensing and could be run on multiple machines at once. It worked out of the box and was able to do the same mail file in an hour.

We were ready to go with Kernel when suddenly the Stellar product started working. It processed our test file in 30 minutes. In the end, we used a mix of the products.

The conversion process produced a PST file which we were able to import into outlook. It was interesting to note that the folders and the calendar entries came over well and we had relatively few complaints from user about the conversion. Most of the complaints were actually outlook usability issues.

One thing that was a little problematic was that we had used an archiving and compliance solution, MailAbility. This software moved some of the older mail to external NSF archives and simply left links in the Notes mail client. Obviously those mails weren't “real” emails and couldn't be imported. We’ll convert the archives later and convert them to a “locked down” compliance-only shared mailbox.


The final big problem was groups. We currently need to retain the groups in both systems but duplicating them makes no sense. We've looked around for ways to easily synchronise the groups from Domino to Office 365 but apart from one-time migration or some really dangerous scripting, we've found nothing that will do the job.

The other important thing to realise is that Microsoft is redefining groups. There's a new group type called an "Office 365 Group" which everyone should probably be using.  Unfortunately, at the moment, it doesn't support people outside of the organisation...

...apparently that feature is coming "real soon" though.

In the meantime, groups are easily created via outlook or via the admin console or, as is apparently the preference (which doesn't currently support external parties), via Yammer.   As for getting contacts across, there's the solution I discussed back in January.

Saturday, April 01, 2017

Migrating Mail from IBM Notes and Verse to Microsoft Outlook on Office 365 - Part 1

It was always just a matter of time. Eventually we were going to have to make the jump from IBM to Microsoft. It's not that IBMs software isn't good. It's very good. It's simply that IBM is the Beta to Microsoft's VHS. Technically the IBM product line is far superior but on the surface, IBMs poor UI will never match the incredible pull of Microsoft's polished Office 365 offerings.

We're just finishing a mail migration from IBM Notes/Verse to Microsoft Outlook, which we did entirely in-house and I thought it would be worthwhile going over the method we used.

The Before Status

Prior to the migration, all of our users had the IBM Notes client on their desktops. We had three production servers and two test/dev servers. All of our user mailboxes were on the IBM Cloud and we had a split with some users on Verse and some on Notes.

We were also running an extensive extranet with a myriad of centrally controlled expansive security options. Our address books contain in excess of 22,000 groups.


Since we'd decided to use Office 365 for word, excel and powerpoint, the migration was technically already underway with the purchase of Office 365 licensing. It should have been a simple matter of extending the licensing but as we already had a number of 365 licenses, we had to establish the right options.

This meant finding a Microsoft business partner and buying new licenses since there was no upgrade path from Office 365 Pro Plus, which doesn't include outlook to 365 E3 which does. 

We later decided that E5 would have been a better choice but funding wasn't available until later and again, there was no easy upgrade option. That's an upgrade we’ll probably do on the one year anniversary instead.

Active Directory 

Our original plans were to migrate to Microsoft’s fully cloud based active directory service and retire our three AD servers. We might still do this but in the meantime, a decision was made to retain our on-prem AD.

This change had a significant impact as connecting the AD to Azure resulted in duplicate users which took some time to resolve. The solution ended up being to delete all our existing AD users and let them get recreated by the sync process.

Unfortunately deleting them required powershell, a tool we ended up getting a bit too familiar with. It also meant that their OneDrive data and yammer posts and profiles got trashed.


The next step was to get our users familiar with outlook. To do that, we needed to set up routing.

In setting up our office 365 environment, we had to claim our domain. You do this in the Office 365 admin  portal which is surprisingly full featured.You have to verify your DNS via txt record and you're encouraged to put in a mx record that includes a spf flag.

We hadn't been using SPF prior to this but as soon as the SPF record took hold, it didn't matter that we had dual routing (with mail primarily going to our IBM accounts and a secondary MX record pointing to Office 365).

Our old connection immediately became “untrusted” and we had to quickly modify the SPF record to include our existing servers.

Stay tuned... in part 2, I'll cover how we managed routing, mailbox migration, and groups.

Tuesday, March 21, 2017

How to Set up Rooms Properly in Office 365 - Part 2 (Extending Booking Time)

Following on from Part 1 where I talked about how to get rooms to show up in the room list, here's the next step where we extend the booking time from the default of 180 days.

Why is there a limit?

In most circumstances, a limit makes perfect sense. It stops employees from booking meeting rooms for years in advance and then leaving the company.

In our case, it's actually fairly common to book the meeting schedule up to about 18 months into the future - so the 180 day (6 month) limit is quite restricting for us.

I decided to change the limit to 730 days. Essentially two years. 

The Steps

I'm going to assume that you're familiar with PowerShell by now... I wasn't when I wrote Part 1 but now PowerShell is my friend. If you're unsure about how to execute the steps, please go back and check Part 1 as there's only a couple of commands at the end that are different.

So, without further ado;

  1. Start PowerShell as Administrator (Local Admin Rights).

  2. Set-ExecutionPolicy RemoteSigned
  3. $UserCredential = Get-Credential
  4. Put your Office365 User Name and Password (with Admin rights) in.
  5. $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
  6. Import-PSSession $Session
  7. Now here comes the commands that you need to change;
  8. Set-CalendarProcessing -Identity "Projects Meeting Room" -BookingWindowInDays 730 
  9. Note that "Projects Meeting Room" is the name of the room and 730 is the number of days to allow bookings in the future.
  10. You may want to add several similar lines after this. I did..

    Set-CalendarProcessing -Identity "Small Meeting Room" -BookingWindowInDays 730
    Set-CalendarProcessing -Identity "Large Meeting Room" -BookingWindowInDays 730
    Set-CalendarProcessing -Identity "Board Room" -BookingWindowInDays 730
    Set-CalendarProcessing -Identity "Projects Meeting Room" -BookingWindowInDays 730
  11. Remove-PSSession $Session
  12. Exit
That's it. You should now be able to book rooms further in the future. 

Saturday, March 11, 2017

How to use PowerShell to Change the Email Address of Office 365 Groups

One of the odd things about Office 365 is how much you have to resort to PowerShell to get things done. That's currently the case with the Office365 Groups, a recently introduced type of group that works particularly well across all of the Office365 applications. 

I've been setting a few things up with Office365 groups lately and I've had two instances where I needed to do some renames. Once was when the people who asked for the group changed their mind about the name and the other was when I wanted to rebuild an existing sharepoint site (and reuse the name).

In both cases, I was able to change the name but the email address itself was greyed out. 

The Solution is to use PowerShell

Start Powershell by clicking Start and typing PowerShell, then Right-click on the icon and run as Administrator.

In the console that appears, type;

Set-ExecutionPolicy RemoteSigned

This elevates some privileges. You'll need to choose Y and press enter. 

Next, you'll want to sign into your Office 365 account as an administrator. Type

$UserCredential = Get-Credential

and press enter.  You'll be prompted for a user name and password.

Next we need to connect a session to Microsoft Exchange in the cloud.

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

and you'll want to import that session.

Import-PSSession $Session

Changing the Email Address

This last command is the one that changes the email address but you'll need to know your group name and the new email address first.

Don't type this, you'll want to change the bold bits.

Set-UnifiedGroup -Identity "GroupName" -PrimarySmtpAddress GroupEmailAddress -RequireSenderAuthenticationEnabled $false

So, in our case, we want to change InformationTechnology1@mycompany.com.au to InformationTechnology@mycompany.com.au.  The group name is Information Technology. This means that the command to use would be;

Set-UnifiedGroup -Identity "Information Technology" -PrimarySmtpAddress informationtechnology@mycompany.com.au -RequireSenderAuthenticationEnabled $false

That's it. If you switch back to the admin screen and refresh, you'll see that the group now has the correct email address.

If you want to change more groups, you can simply run that last command line again with different parameters (all the earlier lines were just set up lines).  If you've finished, you can simply close PowerShell.

Tuesday, February 21, 2017

How to Set up Rooms Properly in Office 365

You'd think that setting rooms up in Office 365 would be a simple matter of going to the Office 365 Admin console, expanding Resources, clicking on Rooms and Equipment and then using the Add Button

This works but it doesn't do everything. If you want your rooms to appear in the Room List (and to show available times), you'll have to use PowerShell to put them there.

Finding Answers

So... I spent a while trying to find the answers without a whole lot of luck. I think that coming from the Notes/Domino world and not being familiar with the outlook terminology hindered me a bit in this regard. 

In any case, big thanks to IT for Dummies btw whose page called "Create Room List Office 365" made very little sense to me but helped me to explain to Microsoft Support what it was that I was looking for. 

BTW: Microsoft support can be reached via the Support and then Service Requests options in the Admin Center. I've found their support to be excellent. 

How to Set up Your Room
Having done the initial room creation steps (see the top of this post) you need to do the following to get it fully registered;

  1. Start Microsoft PowerShell (with local admin access)
    Note, this is normal PowerShell, not Azure PowerShell
  2. At the PowerShell prompt type:

    Set-ExecutionPolicy RemoteSigned

    This essentially grants you higher privileges for the current session.
    (you'll probably be prompted for a Yes answer).

    The returned wording will be something like this;

    Execution Policy Change
    The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose you to the security risks described in the about_Execution_Policies help topic at http://go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?

    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"):

  3. Next type;

    $UserCredential = Get-Credential

    This logs you in - it will prompt for your Office 365 admin user name & password.

    The returned wording should be something like this;

    cmdlet Get-Credential at command pipeline position 1
    Supply values for the following parameters:

  4. The next command sets up an office 365 session connecting to exchange.

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

    The next command apparently imports the commands for exchange into the current session. (ie: makes them available for use).

    The returned wording should be something like this;

    WARNING: The names of some imported commands from the module 'tmp_aipbhxxl.kcz' include unapproved verbs that might make them less discoverable. To find the commands with unapproved verbs, run the Import-Module command again with the Verbose parameter. For a list of approved verbs, type Get-Verb.

    ModuleType Version    Name                                ExportedCommands
    ---------- -------    ----                                ----------------
    Script     1.0        tmp_aipbhxxl.kcz                    {Add-AvailabilityAddressSpace, Add-DistributionGroupMember...

    I have no idea what this means or why it's relevant to me... best to just ignore it.
  5. Our next PowerShell command actually manipulates the rooms, so this is the first command that you'll need to have custom bits on.

    There are two parts to this;

    Part A: The Room List - This can be anything at all, it's just a way of describing the rooms collectively. If you've only got one set of rooms, you might as well call it "Local Rooms" but if you have separate rooms, for example, "Executive Rooms" and "Core Meeting Rooms" or "Building 1 Rooms" versus "Building 2 Rooms" then you'll want to describe this bit more carefully.

    Part B: The Room Names - In our case, we had four rooms, the Board Room, Large Meeting Room, Small Meeting Room and Projects Meeting Room.  You'll need to gather all of the rooms for a given list together and execute the command once -- because you can't add rooms to the list later (more on that afterwards).

    You'll need to use the short names for the rooms (the first part of their email addresses) as the room names in this command aren't supposed to have spaces in them.

    Here's the command you should submit;

    New-DistributionGroup -RoomList -Name 'Local Rooms' -Members BoardRoom, LargeMeetingRoom, SmallMeetingRoom, ProjectsMeetingRoom

    The response is downright weird... and a bit ... advertising..

    New! Office 365 Groups are the next generation of distribution lists.
    Groups give teams shared tools for collaborating using email, files, a calendar, and more.
    You can start right away using the New-UnifiedGroup cmdlet.

    Name        DisplayName GroupType PrimarySmtpAddress
    ----        ----------- --------- ------------------
    Local Rooms Local Rooms Universal LocalRooms@xxxxxxxxx.onmicrosoft.com

  6. To verify that the rooms were adjusted type the following;

    get-recipient -identity localrooms

    It should return and indication that there's now a distibution group called Local Rooms.

    Name        RecipientType
    ----        -------------
    Local Rooms MailUniversalDistributionGroup

  7. Of course, you could just close Outlook and reopen it and create a Meeting to check. 

One last note... the Microsoft team told me that if I needed to add a room to the group, I would be best off deleting the Local Rooms group and running the creation/linking command again. 

Thanks again to the Microsoft support team. I don't know how I would have figured this out without their help. 

Sunday, February 19, 2017

Solving Some Azure Active Directory User Synchronisation Issues on Office 365

We started moving over to Office 365 quite a while before we decided to ditch Notes mail and move to Outlook. It was also my plan to get rid of our internal active directory server and rely solely on the cloud for authentication. 

As it turned out, management wanted to keep the AD server a little longer, so we've had to synchronise our onsite accounts with the Office 365 ones. The synchronisation processes immediately created duplicates (and sometimes triplicates) of users. 

The journey to resolve this issue was time consuming and data destructive, so I thought I'd let everyone know how to fast-track it.

What Causes the Problems

Microsoft's Office 365 users have unique ID's much like the objects in the Active Directory. When you create a user from scratch on Office 365, you create them with a unique ID. While there are tools that will let you change these unique IDs, we've found that they generally do more damage than good.

Deleted people are another part of the problem, If you delete someone and then let the system recreate them, it will happily recreate them but won't set their ID properly. This is because their ID isn't unique. It's still in the person "recycle bin". To truly delete someone, you need to use the PowerShell command line.

Backing Up First

Before I jump into the whole process, you need to make sure that you back up things. Deleting users is fairly data-destructive.

  1. If your users have anything on OneDrive, take a local copy of it all.
  2. If your users have data in Sharepoint or Yammer, backup what you can.
  3. Transfer Ownership of Groups in Yammer and Sharepoint very carefully - don't delete all the Admins at once because you may have trouble getting them back. 
  4. Backup any Outlook mail they may have to a PST file (they'll lose mail)
  5. Make a note of any licences they have. 
  6. Do whatever you need to about OneNote 

Getting into Microsoft Azure Active Directory

You have to have Microsoft Azure Active Directory Module for Windows PowerShell installed.
Note that this is different from PowerShell and it's different from the AD Module for Powershell. It's hard to find the right version of the right software - at the time of writing, you need version 2.

In case you're interested in other Azure AD commands, here's a handy reference.

The first command is to connect to the Azure AD;


You'll be prompted to login (so hopefully you'll use a user who has Global Administrator access).

Next, you will want look at the records of users...

get-msoluser -UserPrincipalName jsmith@mycompany.com |fl

This command line will show you jsmith's record.  Things to look for in the text include;

ProxyAddresses        : {SMTP:jsmith@mycompany.com
ImmutableId           : Pjo+HQRGtXm9GsUXzYYRqQ==
DisplayName           : John Smith
SignInName            : jsmith@mycompany.com
UserPrincipalName     : jsmith@mycompany.com

We found that our Proxy Addresses didn't start with SMTP: and that our Immutable IDs often had people's names (eg: jsmith) in them, instead of the ID.

The SMTP thing can be fixed but if your immutable ID is wrong, you really need to look at destroying the profile record and recreating. We've found that all of the records we destroyed have recreated properly but that the ones where we've just changed the proxy still have some glitches. I'd personally recommend removing everything.

Deleting People from the AD

You'll find that you simply can't delete a person in the Office 365 AD, particularly if they're synched from a local server. The GUI just won't work. You need to delete via command line.

Make sure that you check which licences they have been assigned because you'll want to reallocate them back.

remove-msoluser -UserPrincipalName jsmith@mycompany.com

Deleting a user is not enough though. You have to knock them out of the trash, otherwise they'll reside there for 60 days and prevent recreation via the AD synch process.

Even if your user wasn't having issues with their immutableID, they could still be having problems with Synch and email because of similarly named deleted people.

Before you delete, make sure that you've backed everything up. Emptying the trash is permanent and there's no recovery.The empty trash command is more or less the same as the delete command but with an extra switch (-RemoveFromRecycleBin)

remove-msoluser -UserPrincipalName jsmith@mycompany.com -RemoveFromRecycleBin

Wait for AD Synchronisation

In our case, AD synchronisation is set to 30 minutes. You can check via the front page of the admin centre. You might have to click More and then Refresh to get things to display properly because Office 365 doesn't always automatically refresh person lists or time displayed on the screen.

Once the next synchronisation has run, you should see the record appearing.

Some Fixes on the Local AD Record

We also had to do a couple of fixes on our local AD record, particularly making sure that the ProxyAddresses start with SMTP.

To do this;

  1. Go to your local Active Directory Server.
  2. Open users and Groups and get to our users.
  3. Edit the User Record.
  4. Go to the Attribute Editor Tab
  5. Find ProxyAddresses and double-click on it.
  6. If the address is something like: jsmith@mycompany.com then click on it and click REMOVE
  7. Then type  SMTP:jsmith@mycompany.com and click Add.
  8. If you need two, you might also want to type smtp:jsmith@mycompany.onmicrosoft.com
  9. (note the first/main SMTP is capitalised and the second is lowercase ... yes, seriously).

Reassigning Licensing and Finishing Up

Back in the Office 365 GUI, you'll want to go back into the person's user record when they appear.
Reselect their country
Re-add their licences.

You'll probably want to re-check their outlook settings but you can't because you have to wait for it to be finished being setup.

Repeat the process for all other users. Note that there are options for wildcard deletions and mass trash emptying. I haven't covered them here because the command line was fast enough for me and I don't really want to be responsible for someone trashing their entire Azure AD.

A big thanks to the amazing Microsoft support team in Shanghai who figured out some of the more technical parts of this process and walked me through them. 

Monday, February 06, 2017

OneDrive to Rule them all ... or perhaps not.

Microsoft OneDrive is great! It's easy to use too and has some really great integration into Office 2016 - which means that when you go to save or open files, instead of displaying a file dialog, it renders the folder names right into the panel. Sadly the sharepoint integration in Office 2016 is still dialog-based. 

On the surface, it looks like a great files storage solution but as it turns out, just like Tolkien's OneRing, beneath that shiny surface, OneDrive is mostly evil. 

At work, we're still using an old file server which allows people in the company to save files into public, personal or restricted access areas.

It's a great browsable structure with the main drawbacks being that it's on a local file server (which means ageing infrastructure and semi-manual backup procedures) and security because it needs a VPN to get to our internal systems. Many of our users still find a VPN too complex to set up and it's hard to get a VPN that runs on all flavours of devices (various versions of iOs, Windows, Android and Linux) without compromising security.

The file server also has shadowing, which is a great feature -- and sadly, something that Windows finally "copied" from the old Novell Netwoare 3.12  (1991) - after more than a decade of broken promises. Shadowing is awesome and adds a layer of recovery to your systems, especially when it comes to attacks like Cryptolocker.

Having seen OneDrive personal in action, I was keen to get OneDrive for Business. It seemed obvious to me that this was the solution - A cloud version of the file server that was tighty integrated into Office 365.

As it turns out, it's not. 

OneDrive For Business is Still Personal!

OneDrive for Business is basically OneDrive personal with some more space.

  • Neither sharing or rights management works properly on it.
  • All files on all versions of OneDrive are owned by a single owner, rather than the business.
  • It's not easy to copy files to OneDrive from a server, so I tried copying them locally, letting them synch and then removing the local copies. It doesn't do anything immediately but after a little while, it replicates the removal of those files over to OneDrive (yes, it deletes your files).

    I think there's a way to stop synching before doing this but I didn't bother giving it a try because it was pretty obvious that for all its beauty, OneDrive doesn't work.  

I talked to Microsoft about the problem and they made it very clear.

"Do not use OneDrive if the intention is to Share Files"

There's a very good blog post that explains this -- and it includes a flowchart too!

Apparently Sharepoint - team sites is the tool for this.

SharePoint is not the Answer 

I looked at SharePoint and ran some tests to see how easily I could migrate our many years and many gigabytes of files shares.

Not easily at all.

  • We had to change the default settings on Sharepoint 365 just to allow us to upload more files. The default restrictions are all wrong (and the settings changes are buried quite deeply).
  • The file structure isn't properly browsable and it simply doesn't give us what we wanted.
  • The integration with Office 2016 is terrible compared to OneDrive.
  • There's a copy feature in OneDrive that allows you to copy OneDrive data to a team site. It's a copy though, so you still have to delete the files off OneDrive later.  It worked very well for small numbers of small files but whenever I tried to do anything useful with it, it failed. 

Looking for Answers Elsewhere

With reluctance, we began looking elsewhere and stumbled upon Citrix Sharefile.

We've had a demonstration and thus far, this looks like it's the right answer. I'll post my findings once I've had a proper chance to play.

In the meantime, there's some great videos for Sharefile on YouTube and it looks like OneDrive is reduced to being an option for HOME drives only. For data that the company doesn't mind losing.

I'm very concerned that Microsoft doesn't seem to have an answer to the file sharing problem. Particularly when people will be expecting to move from On-Prem Microsoft file servers to their Office 365 cloud.

Sunday, January 22, 2017

Getting Contacts (Not Users) out of Your Notes/Domino NAB and into Office 365 Contacts

Recently we've been undertaking a task to move from IBM Domino to Office 365 with particular emphasis on the mail system. One of the first big tasks is to move all of our corporate contacts from the Domino NAB over to the Contacts area of office 365.

Corporate Contacts

Corporate contacts, in this sense are contacts which are shared by the entire organisation. I'm not talking about actual users who will have an Office 365 licence with your company or about personal contacts, who would normally reside in the personal address book.

In our case, we had about 6500 corporate contacts who needed to be migrated.

There's a contacts screen in Office 365 which is accessible from the Admin portal. It's under users, then contacts.

Exporting from Domino

In IBM Notes, open your company's address book and press Ctrl+A on people. If you have your staff and non-staff in the same address book, you'll probably want to sort by company and deselect all the staff.

Next, click File, Export Contacts. You'll want to choose either "All contacts in this view" or "only the contacts you selected" depending upon your circumstances.

I'd recommend exporting all fields. It's a little messier but it means that you get your contacts address information (if you have it in Domino already).

Choose a place to save the file and make sure that you've used CSV.

Excel Stuff in the Middle

Open the file in EXCEL,
Create a new file in excel with these fields as specified in this document.
  • ExternalEmailAddress
  • Name
  • FirstName
  • LastName
  • StreetAddress
  • City
  • StateorProvince
  • PostalCode
  • Phone
  • MobilePhone
  • Pager
  • HomePhone
  • Company
  • Title
  • OtherTelephone
  • Department
  • CountryOrRegion
  • Fax
  • Initials
  • Notes
  • Office
  • Manager
Search and Replace commas. Commas (and rabbit ears "" aka inverted commas) can really upset CSV imports. I just replaced all ours with nothing.

You may have to create the Name column out of formula ... ie: Assuming that first name is in cell C2 and last name is in cell D2, you'd use =CONCATENATE(C2, " ", D2). Then Autofill the column and then copy and paste it into another blank column (so you could paste (special) as values.

Importing to Office 365

The import to Office 365 is an entirely command line driven via PowerShell and these instructions helped enormously.  Make sure that you connect to your exchange online service first.  There's a link in step 1 but in case you can't find it, it's here.

I wish I could say that I completely understood the process I ran but I didn't.

It worked though, so I'm happy about that.

Now I just have to figure out groups.

Monday, January 09, 2017

New Year, New Directions

2017 marks the beginning of a massive shift in technology at work. We’re re-branding,  we’re moving office and we're changing our technology from IBM to Microsoft. It's going to be a wild ride and I hope that you’ll stay with the blog as I delve into the new world and try to figure out what works and what doesn't. 

I've been on Notes/Domino since version 3.0 and I haven't used outlook at all, apart from a week in 1995 when I decided that I hated it (plus of course, the regular interactions with outlook die-hards where I've had to fix their computers). My personal favourite mail client is Gmail though I've been forcing myself to use Google’s inbox for the past three years. Of course I've used a lot of other web based mail systems over the years.

IBM Connections

Last year our company made the leap to IBM Verse and Connections.  It was a disaster. IBM connections is a very powerful and capable product marred by a terrible and inconsistent interface. The choices that IBM have made regarding security are very protective but unfortunately affect usability to such a degree that we were unable to use even the most rudimentary collaborative features. It didn't help that we got a new management team who are determined to “get rid of IBM and replace it with Microsoft”.

IBM Verse

Verse is where we really hit the wall.  On the surface,  it feels like a great new way to work but because we already had an archiving solution in place, we didn't opt for IBMs one. For various reasons, we experienced a very high bounce rate and frequently got bounce reports from mail that actually made it through. We also discovered that we couldn't find mail that was more than a few months old. Additionally,  we discovered that our address book groups were not being updated and in many cases were missing altogether.  This created a lot of addressing issues. Finally, we discovered that if a user leaves the company and you remove their email address, it also deletes their mail, Permanently. IBM’s support teams can’t recover it. For a company like ours who are used to being able to restore from backup months and even years down the track, the loss of an overnight restore is a pretty big deal.

We spent a lot of time with IBMs technical support team who were excellent and did their best with a product that wasn't performing well. Unfortunately the support teams were also struggling with the English language and communication was difficult at the best of times.

IBM Domino

Our domino environment is extensive and it really was really the star of last year.  We threaded bootstrap and FontAwesome throughout our sites and demonstrated that there is a lot of life left in the system.  The facelifts we did on our systems left them barely recognisable and indistinguishable from modern apps. I'm eagerly looking forward to seeing if there is anything that Microsoft has that can match it for versatility.  That's going to be a really interesting journey.


Unfortunately for Domino,  I can't blame my company for its failings.  That's entirely on IBM. They've spent the last decade downplaying Domino and trying to replace it with various things (websphere, workplace, connections and verse). They had a brilliant product but they've done so much irreparable damage to it with their mismanagement that I don't think it can recover.

I  think that one of the most telling examples of this was during a meeting with the IBM sales team where we were investigating a migration to bluemix in the hope of better utilising our domino services.  We asked about “domino in the cloud” only to be told that there was no option for this  - and that there was little likelihood of one in the future due to a lack of interest in Domino. I  exchanged glances with my team at that point and we collectively acknowledged this as the point where IBMs softlayer and bluemix services had failed to offer us any significant advantages over AWS or Microsoft Azure.

I'm sad to be leaving the IBM world, though I'm sure that we’ll be retaining our Domino servers for a while yet. We can't do too many changes at once and we still need to find and learn appropriate replacement technologies.

Whatever we do, 2017 looks to be a very challenging and interesting year.