Prevent Forwarding, Replying or Reply-All in Outlook

About a month ago I wrote a post that detailed how to prevent attendees from forwarding your Outlook meetings to other people.

Since then I’ve expanded upon it slightly on my own computer: in addition to the option to prevent meetings from being forwarded, I’ve added similar buttons to the new email toolbar that can prevent forwarding, replying or replies to all.

Preventing people from hitting “reply all” is sometimes a great tactic if you’re sending an email to particularly large group and you don’t want everybody to get caught up in any follow-up. By contrast, preventing replies (thus forcing people to use “reply all” instead) is great if you want the opposite, and for everyone to be kept in the loop.

My previous post details the process of setting all this up, but below is the code for the four macros. The first disables forwarding, the second disables replies, the third disables reply all and the final re-enables all response options. By default, nothing is disabled on new items unless you hit the relevant button to run the macro.


Sub DisableForwarding()
    ActiveInspector.CurrentItem.Actions("Forward").Enabled = False
    X = MsgBox("Forwarding of this item has been disabled", vbInformation, "Forwarding Disabled")
End Sub

Sub DisableReply()
    ActiveInspector.CurrentItem.Actions("Reply").Enabled = False
    X = MsgBox("Replies to this item have been disabled", vbInformation, "Forwarding Disabled")
End Sub

Sub DisableReplyAll()
    ActiveInspector.CurrentItem.Actions("Reply to All").Enabled = False
    X = MsgBox("Reply All has been disabled for this item", vbInformation, "Forwarding Disabled")
End Sub

Sub EnableAllResponses()
    ActiveInspector.CurrentItem.Actions("Forward").Enabled = True
    ActiveInspector.CurrentItem.Actions("Reply").Enabled = True
    ActiveInspector.CurrentItem.Actions("Reply to All").Enabled = True
    X = MsgBox("Forwarding, Replies and Reply All have been enabled for this item", vbInformation, "Forwarding Disabled")
End Sub
0 notes

Project Management Proverbs

It’s been quite a while since I’ve blogged. Work has been especially busy for the past month or so, and as my calendar gets squeezed from every direction the first thing to disappear from it is the time to post here.

That’s unfortunate, and I must get better at it.

Anyway, a few weeks ago I came across a post elsewhere about project management proverbs, and some of them are certainly worth sharing.

One in particular caught my eye because my boss Matt recently welcomed his new son Jude to the world. I know that toward the end of his wife’s pregnancy he was getting anxious, as I’m sure any expected father would, and they wanted the birth to be sooner rather than later.

It takes one woman nine months to have a baby. The project management proverb I read reminds us that, despite conventional project management wisdom, the same result cannot be achieved in one month simply by impregnating nine women.

Other notable points:

More here!

0 notes


“Does your organisation have a proper change management process? How do you tackle changes on your projects? Feel free to reblog, message or send an ask.


Does your organisation have a proper change management process? How do you tackle changes on your projects? Feel free to reblog, message or send an ask.

(via )

6 notes

Prevent Forwarding of Outlook Meetings

The ability to quickly and easily forward an Outlook meeting to another recipient is an essential feature. Maybe you can’t make it and you need to send a delegate. Maybe you identify from the invite that bringing along a colleague who’s a subject matter expert would be beneficial. There are probably many other scenarios.

As a meeting organizer though, it’s possible that you don’t want people to be able to forward your meetings. Perhaps the location you have booked is of a limited size. Perhaps the meeting content is sensitive and discussion restricted to a particular group. There are probably many other scenarios for wanting to keep tight control over the recipient list too.

Well, good news! I’ve recently discovered this is possible, and with just a few lines of VBA you can create meetings that have the “forward” button disabled. If a recipient wants to extend the invite to someone else, they have to come back to you and ask that you do it for them.

It’s worth pointing out right at the top that this technique only works in the Microsoft Outlook desktop client. You have to be using it, and so do the meeting recipients. If your recipients also have their email/calendar available to them on another client (including mobile devices and webmail) then they can use the other client to forward the meeting.

It’s also worth pointing out that full credit for this goes to user GranEYb on Microsoft’s TechNet forums. I have merely tidied up his/her instructions, and turned them into a quick screencast. The instructions are for Outlook 2013. I know the code also works in Outlook 2010. I haven’t tested it with other versions. YMMV.



First, enable developer tools in Outlook:

  1. Open Outlook 2013
  2. Click File -> Options -> Customize Ribbon
  3. In the right-hand pane, place a checkmark next to the Developer group and click OK

Open Visual Basic for Applications and write the code:

  1. Navigate to the Developer tab on the ribbon, and select Visual Basic
  2. In the Visual Basic for Applications window, click Insert -> Module
  3. Copy the code from below, and choose File -> Save, or click the Save icon
  4. Close the Visual Basic for Applications window

The code:

Sub DisableForwarding()
    ActiveInspector.CurrentItem.Actions("Forward").Enabled = False
    MsgBox "Forwarding of this item has been disabled"
End Sub

Sub EnableForwarding()
    ActiveInspector.CurrentItem.Actions("Forward").Enabled = True
    MsgBox "Forwarding of this item has been enabled"
End Sub

Create the buttons in Outlook:

  1. Open Outlook calendar
  2. Click New Appointment
  3. Click File -> Options -> Customize Ribbon
  4. In the right-hand pane, select the Appointment tab and click New Group
  5. Select the New Group (Custom) item and click Rename
  6. In the Display Name box, enter Forward Control. Click OK
  7. In the left-hand pane, select the Choose Commands From: dropdown and select Macros
  8. Select Project1.DisableForwarding and click the Add >> button between the panes
  9. Select Project1.EnableForwarding and click the Add >> button between the panes
  10. In the right-hand pane, select Project1.DisableFowarding and click Rename
  11. In the Display Name box, enter Disable Forwarding. Click OK
  12. In the right-hand pane, select Project1.EnableForwarding and click Rename
  13. In the Display Name box, enter Enable Forwarding. Click OK
  14. Click OK at the bottom of the Outlook Options window

All done! If you wish, you can now hide the developer tab that we enabled with the first three steps.

To use the tool, create a new meeting invite as you normally would, but before hitting the send button hit the Disable Forwarding button first. Recipients of your invite will find that the Forward button is disabled.


Meetings do not have forwarding disabled by default, but if you need to re-enable forwarding for any reason then the Enable Forwarding button is your friend.


0 notes


Just a couple of days ago I wrote a little bit about how cloud servers are such a commodity item now, easily created and destroyed.

Today I wanted a server to test out a new tool, but I didn’t want to risk there being any impact to any of my existing production servers. So I created a new one on Vultr. From the time I started to the time I had a running server was just over a minute, and I recorded a screencast.

When I was done testing a couple of hours later I destroyed the server. Total cost to me for this exercise was about $0.02, or it would have been were it not for the fact that Vultr gave me a $5 account credit when I signed up.

It’s hardly riveting viewing, but it’s nevertheless amazing in its own way.

0 notes

Server Commoditization

I’ve had a personal website of one description or another for a long time now. For much of that time, the site was hosted by renting space on someone else’s large server – so called “shared hosting.”

The theoretical problem with this model was that the server’s resources were shared between all its users, and if one user chewed through a whole lot of them then that left fewer available for everyone else. I’m not sure I ever actually experienced this (although I’m sure it really was an issue for web hosting companies to contend with), but the problem I did come across was that to protect against this kind of thing hosts often put policies and configuration options in place that were very restrictive. Related to this is the fact that server configuration options apply to everyone with space on that server, and they’re not for individual users to control. A problem if you want to do anything that deviates even slightly from the common-case.

The alternative to shared webhosting would have been to rent an entire server. This was – and still is – an expensive undertaking. It also was – and still is – far more power than I need in order to host my website. Sure, it’s possible to build a lower-powered (cheaper) server, but the act and cost of putting it in a datacentre to open it up to wider world mean that it’s probably not a worthwhile exercise to do all that with low-cost hardware.

Read More →
0 notes


I have a small app on my computer that I wrote myself. It’s small and simple, and it’s the default application for opening BitTorrent files on our computers. When I download one of these files the app takes the file and moves it to a folder on the server. This folder is watched by my torrent client of choice which runs on the server and immediately starts the download when it sees the file.

The app then pops up a notification to the user to ask if they want to be directed to the deluge web interface to see the download progress.


I rewrote the app about a year ago. The original version was written in RealStudio but the location of the watched folder and the URL for Deluge’s web interface were hard-coded in: a reasonable design decision given it was just a small app for only my use one, but still a poor one – when a change I made to my network configuration required me to adjust these variables I no longer had a copy of RealStudio available.

I wrote a new version in Visual Basic 2010 Express, and this time I did a little extra work to take the configuration variables out of the source code and put them into an .ini file.

Why am I telling you all this?

Well, not that I think you’d need the app, but I have today made the source code (and the compiled executable, for good measure) publicly available on my brand new GitLab account!

I’ve been using Git for a while (and I’ve written about it once or twice before), but I really haven’t been taking advantage of its featureset.

I’m working on something right now that’s big and complex and I value having version control and branches to work with. I already have Git installed on my server (both my home server and my public webserver), but I’ve downloaded a windows Git client to compliment that setup and opened a GitLab account to use as an external repository and a means to eventually make a finished product public.

Why have I chosen GitLab over the more ubiquitous GitHub? GitHub makes you pay to host a private repository, and I want somewhere where I can both host code that’s a work in progress (and not ready for public distribution) and distribute completed code that’s ready for download, public review and maybe even improvement by the wider community. GitLab gives me free private repositories for partially-completed things that I can later make public once I’m ready to.

I’ve already created a couple of public repositories, mostly to test the platform out, and TorrentApp is one of them.

So use it if it’s a tool that might be useful to you, improve upon it if you have the expertise, and send me a merge request so I can incorporate your changes into the code!

0 notes


“Every project managers wet dream :D


Every project managers wet dream :D

(via )

3 notes


How to Recover From an Unproductive Day Like It Never Happened →

There was one day last week where I accomplished more in the last hour of my day than I did in the previous 6ish. This happens to everyone from time to time: despite our best intentions, there are all sorts of things that can cause a workday to go sideways on us.

We all have unproductive days. Maybe an unexpected event throws your schedule for a loop. Maybe you’re not feeling well. Whatever the reason, it can be tough to get back on track. Here’s how to get past the dip in productivity and back into gear.

For me, key to recovering when a day turns unproductive is to find a way to reset and tackle the remainder of the day with a renewed focus. I spend 15 or 20 minutes at the start of every day composing a to-do list and defining my action plan for the day, and when I find myself unable to execute on that plan for whatever reason I repeat that exercise and re-define my action plan based on my new reality. I also find it helps a lot to have a change of scenery: if I’m in the office and my day isn’t going the way I wanted it to then I’ll go home and work the rest of the day from there. If I’m already home then I might head to my favourite coffee place and spend an hour or two working in that environment.

I also find that as part of redefining my to-do list it’s important to be fully inclusive. My day consists of both big and small tasks, and it’s tempting when putting a list together to omit the small ones and just do them immediately, but of course this only leaves the big tasks where I’m more reliant on others and unforeseen things are more likely to occur. When things don’t go to plan it’s entirely possible to end up with a to-do list that has nothing checked off at the end of the day, and it’s important to me not to finish my day that way – I’d much rather spend my evening relaxing with at least a small sense of accomplishment than worrying about a perceived lack of achievement. If I’m only able to achieve smaller things that day then so be it, but that’s better than nothing and cause for correspondingly small celebration, but celebration nonetheless.

If you’re not able to recover your productivity within the working day? Well, that happens to the best of us and isn’t cause for panic. The article I’ve linked to above has some tips and tricks to help us get back on the metaphorical horse the following day.

0 notes


Last year I shared a video called Conference Calls in Real Life, and this week the folks that made it have published a follow-up!

Presenting, for your viewing pleasure: Email in Real Life

0 notes