Allow Office 365 Group Members to “Send As” the Group Email Address

Background

At PSC, we are nerds.  Many of us are also big fantasy football fans.  Naturally, we use Office 365 Planner to manage the office fantasy league.

FFL.png

We run 2 leagues– an A and a B league– like the British Premier league.  Every year, the bottom two teams in the A league are relegated to the B league, and the B league champion and runner-up are given the option to join the A league.

Depending on who returns to play each year, a few spots open up in the B league and we send an open invitation to everyone else at PSC, first-come first-serve.

Because we used Planner to manage the league this year, we wanted to send the “league sign-up” email from the Office 365 Group’s email address (fantasyfootballcommissioners@psclistens.com) so that every reply went straight to the Group’s conversation and each of the 3 commissioners was notified when a reply came in.

Nuts and bolts

Office 365 Groups are comprised of multiple pieces: a SharePoint Team Site for document storage, a Notebook, an Exchange Calendar and an Exchange Distribution Group (with a snazzy “Conversations” front end) for email.

So we should just be able to update the settings for the Distribution Group like you would any other distro to allow users to send as the group.

To enable a user to send email as the group , you can make a quick change in the Group configuration in the Office 365 Exchange admin center.  Note that your user account must have the Exchange Administrator role to perform this action.

1.  Open the Exchange Admin dashboard and navigate to the groups page:

snip_20160804114530

2.  Search for the group you want to edit:

snip_20160804114611

3.  Double-click the group to open it, then click group delegation.

snip_20160804114842

4.  Click the + button, then add each user who should be able to send email from the group.

snip_20160804114810

5.  Click OK.  The users are now listed.

snip_20160804114720

6.  Click Save and you’re done!  These users can now send email as the group:

snip_20160804114937

snip_20160804120935

 

Adding a Hyperlink control to a repeating section in Nintex Forms for Office 365

You may have noticed that if you try to add a Hyperlink control to a repeating section control in Nintex Forms for Office 365, you get an error message:

1

To get around this limitation, you can create your own hyperlink “control” with a couple of panels, and a couple lines of CSS and JavaScript.  The code is really simple, and you can just copy and paste it from this post!

How to build the custom Hyperlink “control”

1.  Expand your repeating section so that it’s about 3 times taller than when you initially drag it onto the canvas.

2.  Drag a Panel shape into the repeating section.  Make sure it’s inside the repeating section and not just on top of it.

3.  Drag 2 Single Line of Text controls into your new panel, followed by 2 labels, then arrange the 4 controls so that they look like the Hyperlink control.  I changed the label text to match the labels in the Hyperlink control, too:

18

4.  Name the top text control “WebAddress”:

6

5. Name the bottom text control “TextToDisplay”:

7

6. Drag a second panel into the repeating section, and drag a Calculated Value control into the panel.

19

7. Add a rule to the top panel (the one with the text box controls) to hide it if the form is in Display Mode.

8

8.  Add a rule to the bottom panel (the one with the calculated value control) to hide it when the form is NOT in Display Mode.

9

9.  Double-click the bottom panel (the one with the calculated value control) and update its “CSS class” property in the Formatting section.  Type hyperlink-repeater-section- into the field, then double-click the “Is Display Mode” function under the Common header on the right side of the dialog to insert the function into the “CSS class” property.

21.pngWhen the CSS class is rendered on the control, it will be rendered as hyperlink-repeater-section-True only if the form is in Display Mode.  We’ll define a CSS class for hyperlink-repeater-section-True in a bit.

10.  Double-click the repeating section and add CSS classes the same way.  In the “Item CSS Class” field, add hyperlink-repeater-IsDisplayMode (again inserting the “Is Display Mode” function), and do the same in the “Alternate item CSS class” field.

13

These CSS classes just allow us to remove the extra white space beneath the field when the form is in Display Mode.

Add a little bit of code

11.  Now, define the two CSS classes we added to the form controls.  In Form Settings, add the following CSS to the Custom CSS section:

/*Hyperlink Repeater Styles*/
.hyperlink-repeater-True{
height: 35px !important;
}

.hyperlink-repeater-section-True{
height: 35px !important;
}

When you’re done, it should look like this:

15

12.  While you’re in the Form Settings dialog, add a JavaScript function to the Custom JavaScript section:

function MakeHyperlink(url, text){
return '<a href="' + url + '" target="_blank">' + text + '</a>';
}

 

This is the function we’ll call in the formula of the calculated value control.  Click Save.

13.  Set the formula for the calculated field control in the bottom within the repeating section.  Double-click the formula to open it, then type MakeHyperlink( into the “Formula” field.  All you’re doing here is calling the JavaScript function you wrote in the step above.

You need to pass the function 2 parameters: the web address, and the text to display.  Double-click the WebAddress control under the Named Controls header in the right side of the dialog box.  Type a comma (to separate the parameters), then double-click the TextToDisplay control.  When you’re done, the formula will look like this:

3

14. Before closing the dialog, change the value of the “Recalculate formula on view mode” to “Yes”, and change the value of the “Recalculate formula on new mode” and “Recalculate formula on edit mode” to “No”.

4

Click Save.

14.  Finally, clean up the repeating section so that it’s not gigantic when the form is in Edit Mode (we’re already fixing this in Display Mode with the custom CSS).  Drag the bottom panel (the one with the calculated value control) on top of the top panel (the one with the text box controls), then shrink the size of the repeating section so that it just barely fits around the stacked panels.

The finished form should look like this:

11

Just a note– when/if you need to change anything in the panels within the repeating section, you will probably need to expand it and “un-stack” the panels.  Typically, Nintex Forms will automatically hide any vertical whitespace created by panels being hidden, but because the panels are within a repeating section, we have to take matters into our own hands.

Now you’re ready to test your form!  It’s not really easy to test in Preview mode, because the repeating values are stored in the form instance itself, so go ahead and publish the form.

Try it out!

Create a new list item, then add a couple of hyperlinks to the Links repeating section:

16

Click Save, then open the form in Display Mode:

17

With any luck, clicking the link should open it in a new tab.

If you don’t want the link to open in a new tab, remove target=”_blank” from the JavaScript function in Step 12.

Summary

In case you’re wondering what you did, you:

  1. Created a custom panel to hold the input for the hyperlink field, and a second custom panel to hold the display of the hyperlink.
  2. Created a JavaScript function to concatenate the URL and Display Text of the hyperlink “control”, then called the function in the formula for the Calculated Value control used to display the hyperlink.
  3. Set rules on the “Edit” and “Display” panels so that they only appear in the appropriate form.
  4. Added custom CSS classes to the Repeating Section control and the “Display” panel that use the “Is Display Mode” function to render a custom CSS class name, then defined a CSS class with this name and assigned it a hard-coded height property.

Nice job!  Let me know in the comments below if this worked for you, or if anything is unclear.  As always, sharing is caring!

Why I’m finally ditching Apple

Ever since Apple switched from the PowerPC chip to the x86 platform in 2005, I’ve been an Apple guy.  I never actually owned a real Mac, but the closed Apple ecosystem was finally “open” enough for me to hack my way into it.  I began a decade-long adventure of running OS X on PC hardware.  To anyone who called me a fanboy, my response was simple: show me something better.

When I built my first machine from scratch in 2006, I built it to OSx86 specifications just so that I could run OS X Leopard as my primary operating system (it helped that the best thing Microsoft had going for it back then was Windows Vista…).  Since then, it’s run Snow Leopard, Lion, Mountain Lion, Mavericks, Yosemite and El Capitan alongside Windows Vista (for about 10 minutes), Windows 7, Windows 8 and Windows 10.  I’ve upgraded all of its guts– doubling the RAM, adding SSDs, a quad-core processor (still on the Core platform since my motherboard supports only LGA775), 2 new graphics cards, 2 different wireless antennae, a new power supply and blue LEDs I am convinced make it faster.  I’ve overclocked, burned a processor, blown a power supply and generated enough wind to blow a hole in my drywall.

The whole time, there’s been one constant: I was running OS X as my primary OS, and I was having a blast.  Every new release from Apple brought more consistency and drew me deeper into the ecosystem.  Integration across iOS and OS X got better and better.  Moving between my iPhone to my “Hackintosh” was seamless– notes, photos, maps, reminders all came with me.  Even when an update would break something on my hack, figuring out how to fix it was half the fun of running OSx86.

At the end of the day, I ran OS X because it was the best.  The Apple ecosystem had me hooked because it was revolutionary and groundbreaking.  Even when Apple wasn’t the first, it was the best.  Apple knew how to do UX better than anyone.  And even though I never bought a real Mac, diving into the OSx86 world enveloped me in the Apple ecosystem and led me to purchase other Apple hardware: 3 iPhones, an iPad, 3 Apple TVs, 2 Apple keyboards, a Magic Mouse and a Magic Trackpad.

OS X was the best, and the Apple ecosystem was the best.  But here’s the thing: it’s just not the best anymore.

I’ll admit that my shiny new Surface Book was the catalyst for my newfound Windows love.  What I found with Windows 10 and the Surface Book was finally an operating system that’s ready to live in both worlds, as a tablet and a laptop.  I don’t have much need for another tablet at home; I love my iPad for watching videos and surfing the web.  Work is a different story– I need something that’s lightweight, can be used as a tablet for demonstrations and meetings, but can run a VM and Visual Studio when I need to develop.

Windows 10 is ready for primetime (the lone exception: a slew of sleep problems).  Cortana is useful, extensible and accurate, and boasts two killer features over Siri: she’s part of Windows 10 on laptops and desktops (we’re still waiting for Siri in OS X), and she’s accessible without a voice prompt. Oh, and she brings me back to my high school summers spent playing Halo in my basement…

When I open my laptop at work, changes made on my home desktop are already there. Preferences (I like “dark mode” in my apps), login background, and Cortana configuration persist across devices with the help of my Microsoft account.  OneDrive is deeply integrated into Explorer.  The native app experience has improved, with OneNote, News, Calendar and Mail; searching for settings is finally streamlined into the Start menu; even Microsoft Edge is a usable browser with some nice features such as reading view (stolen from OS X but a welcome addition) and on-screen markup for tablets. And the new app switcher (also basically stolen from OS X) is perfectly fast and user-friendly.

The new Start menu is a perfect blend of customizability (pinning, grouping and resizing app tiles, and even resizing the menu itself), extensibility (developers can extend live tiles to show at-a-glance updates without opening the app) and functionality. It’s there when you need it, gone when you don’t. And unlike the OS X dock, it doesn’t steal real estate at the bottom of the screen. I always thought the dock was beautiful, but Windows 10 finally has me realizing that for as much space as it commands, the dock just serves as little more than an app launcher.

Apple fanboys will be quick to point out that Windows still doesn’t have an answer for several components of OS X that I’ve come to love:

  • The Photos app is clunky and half-baked, and lacks cloud integration entirely.  I’m guessing that will improve soon, with OneDrive cloud photo management improving tremendously with machine learning-driven auto-tagging, but right now it’s a dud.  I’m not a huge fan of Photos for OS X/iOS, but it does a better job of providing a consistent UI and cloud integration than any other platform available right now.
  • The native mail client is better than its Windows 8 counterpart, but still a little more “tablet-friendly” than it is “good”.
  • The Windows store hasn’t taken off yet, which is a bummer because the UI in Windows 10 is well-thought-out and easily-navigable.  The one thing it lacks is– you guessed it– good apps.  We’re all holding out hope that Project Islandwood actually sees the light of day…

And of course, the Windows ecosystem still lacks a polished mobile phone counterpart to the tremendously successful Surface line (and I’m done holding my breath for a Microsoft-built Surface Phone).  But for all the places where the Microsoft ecosystem still falls short, it’s undoubtedly breaking new ground cloud connectivity and user interface, two places where Apple used to rule the tech world.

Its real killer app, however, lies in what we’ve yet to see.  Since Satya Nadella took the helm of a struggling company that had over-invested in Windows Mobile, refused to build iOS apps for its flagship Office software and followed the ridiculously-successful Windows 7 with the complete monstrosity that was Windows 8, Microsoft has done a complete about-face.

It’s innovating rapidly and isn’t looking back.  Windows 10 and Office drop new features– not just bug fixes– as part of routine weekly updates.  That “dark mode” UI that I love so much?  It just appeared on my machines after an update, without a press release or an invite-only news conference.  Microsoft is building on a formula it perfected in the enterprise space with Office 365 and bringing it to the average consumer: build a feature, release it as quickly as possible, ask for feedback and continuously improve it.

Windows isn’t a product.  It’s a service.  By installing Windows 10 on my machine that I love so much, I’ve breathed new life into my hardware. No more waiting for major releases to get new features or enhancements.  Windows is a living, breathing experience powered by continuous delivery and driven by customer feedback.  Is it perfect?  No.  But I will gladly hitch my wagon to innovative and imperfect over fully-baked and slow-moving.

For now, I’ll struggle to live in two worlds, with Windows 10 on my desktop and laptop and an iPhone in my pocket.  I spent a whole weekend removing Apple DRM from my iTunes-purchased movies just so I can watch them without installing iTunes.  Microsoft iOS apps are great, but using OneDrive for photo management on my phone is a nightmare.  Cortana will never replace Siri until I can ask her a question without needing to first open the app.  And I won’t feel comfortable buying a Windows phone until leading app developers prove they can build for the new Windows 10 universal app platform.

But after a decade of holding my breath every time an OS X update dropped and reinstalling OS X from scratch with every major release– because I had to, but also because I enjoyed it— I’m finally taking the Windows plunge again.  In a world where SaaS, PaaS and IaaS have become commonplace in the enterprise (much due to Microsoft’s groundbreaking innovation in Azure and Office 365), I firmly believe that OSaaS– Operating System as a Service– is the next big thing.  It’s a different way of thinking for a different kind of world, and it’s Microsoft, not Apple, that’s leading the charge.