Thoughts on Supporting Outlook for Mac 2016 from Microsoft Ignite @ Chicago, Illinois

Recently, I had attended Microsoft’s Inaugural Ignite tech conference @ Chicago, Illinois. One of the best parts of the experience was hearing first hand product changes from developers. Outside some of the branding of Outlook into Office 2016 for the Mac, Microsoft had mapped out their commitment to stability, enhancements, and regular updates. Those updates were getting specifically released every month or two from this point forward. Another noteworthy improvement was handling of attachments. Attachments were reintegrated into the client for saving directly into Office 365 or SharePoint with the same familiar icon. As an Exchange administrator, I had wondered, “How much email quota space an employee is going to save?” Probably quite a bit!

IMG_0353

Of course, with the good had come the bad. Still off the table was lack of support for “recover deleted items” and “Import/Export of PSTs.” Though currently only Windows options, the product management team had verbally committed addressing these missing features in the near future (i.e. hopefully a year).

So, the big takeaway was developers reaching out to their customers. “How?” you might have asked. For my current environment, three areas had got my attention for connecting.

1. Where should you report or ask about a bug?

http://answers.microsoft.com/en-us/mac/

2. Where can you ask for an enhancements for future versions of Outlook for Mac?

http://outlook.uservoice.com

3. Where can you ask a quick question relating to product support outside of a bug, fix, or enhancement (i.e. What are supported versions of Exchange for Outlook 2016 for Mac?)

On Twitter with ‘Outlook for Mac’

Apparently, the product management team had curated each of the above areas regularly. That openness for contact was far more refreshing than hearing about any feature parity or cloud strategy. For years, Mac development had seemed like an afterthought. Now, Microsoft had made in words and deeds the thought of supporting Mac for Outlook just a bit more exciting!

Read More:

Meet the new Outlook for Mac 2016 (channel9.msdn.com)

The Office 2016 Mac Preview is here! (blogs.office.com)

Microsoft Ignite Keynote, 2015 (channel9.msdn.com)

IMG_0330

CENTOS 6.5 VMWare Guest VM’s network no longer works, “destination unreachable”

In the course of supporting a CENTOS 6.5 VM guest under VSphere 5.5, I had experienced three different scenarios of losing network connectivity. These scenarios had included a P2V conversion, network driver update (E1000 > VMXNET3), and full VM restore. In each instance, I had begun my adventure typing ping at command prompt interrogating the gateway, ultimately receiving the error “destination unreachable.” With each instance, I had gained a little bit more experience as Windows guy on UNIX. I had hoped summarizing those collective experiences in the steps below.

With respect to CENTOS 6.5 P2V conversion support by VMWare, this was officially untested as of July 2014. For more information on “Using VMware vCenter Converter Standalone to convert physical or virtual CentOS 5.x machines to vSphere 5.1 environments” go to SpiceWorks click here. The scope of these steps had expected an administrator already verifying VM Guest adapter being “enabled” and available. Additionally, I had thought to iterate having the proper VLANs configured in VMWare guest settings and any attached network equipment. So, if you had received “destination unreachable” when pinging your gateway begin with the below:

A. REVIEWING NETWORK INTERFACES

1. Login as root

2. Review active OS network connections, run the command, ip a

Example:

# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000

link/ether 00:50:56:b7:79:ef brd ff:ff:ff:ff:ff:ff

inet 192.24.1.10/24 brd 172.26.253.255 scope global eth0

inet6 fe80::250:56ff:feb7:79ef/64 scope link

valid_lft forever preferred_lft forever

 

3. Review network adapter IP configuration, go to /etc/sysconfig/network-scripts/

 

4. List files in the directory with ls command. The listed interface files should match up with the results of #2.

Example:

ifcfg-eth0

ifcfg-lo

 

5. If an extra or odd numbered interface exist, say ifcfg-eth1, I had recommended making a copy of the file (i.e. cp ifcfg-eth0 backup.ifcfg-eth0).

6. Review the network interface configuration in VI with the command (i.e. vi ifcfg-eth1, vi ifcfg-eth0, etc).

Example of output:

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=static

NM_CONTROLLED=no

IPADDR=172.26.253.10

NETMASK=255.255.255.0

 

7. To save the file without changes, type :q

 

8. To make changes, I had recommended going to CSU Basic vi Commands Page to learn the following commands:

for insert

:wq
for save

9. A  file that requires changes, focus on two things;

a. the filename (i.e. cp ifcfg-eth6 ifcfg-eth0).

b. Ensure the value DEVICE= matches the necessary interface (i.e. eth0 vs. eth6)

10. After making the necessary changes, restart network server, service network restart.

B. REVIEW DEFAULT GATEWAY CONFIGURATION

11. If you were still unable to ping the gateway, perform route print, route

Example A:
Destination             Gateway    GenMask  Iface default
192.24.10.1             0.0.0.0         UG             eth0

Example B:
Destination             Gateway   GenMask   Iface default
192.24.10.1             0.0.0.0      UG              eth6

In Example B, the wrong interface is configured. To correct, run the following snippet from/sbin/ route add -net 0.0.0.0 gw 192.24.10.1 eth0

 

C. IS NETWORK MANAGER STARTED?

12. If ping had continued to fail to gateway, verify Network Manager service status.

13. Verifying Network Manager running on any interfaces, #chkconfig –list Network Manager

 

Example of output: NetworkManager 0:off   1:off   2:off   3:off   4:off   5:off   6:off

a. To stop NetworkManager service, service NetworkManager sto

b. To disable NetworkManager from running, chkconfig NetworkManageroff

 

D. DELETING 70-persistent-net.rules file

14. If network interface and default gateway configuration look good, go to etc/udev/rules.d

 

15. Locate the 70-persistent-net.rules file, this file contains adapter mac addresses and aliases

Example of content:

# This file was automatically generated by the /lib/udev/write_net_rules

# program, run by the persistent-net-generator.rules rules file.

#

# You can modify it, as long as you keep each rule on a single

# line, and change only the value of the NAME= key.

# PCI device 0x8086:0x100f (e1000)

SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:50:56:b7:79:ef”, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth0″

# PCI device 0x15ad:0x07b0 (vmxnet3)

SUBSYSTEM==”net”, ACTION==”add”, DRIVERS==”?*”, ATTR{address}==”00:50:56:b7:48:89″, ATTR{type}==”1″, KERNEL==”eth*”, NAME=”eth1″

 

16. Delete this file, when prompted type, Y for YES.

Example:

rm-70-persistent-net.rules.

17. Run reboot command. The file will be recreated after restart (i.e. reboot command).

18. After restart repeat sections A and B to ensure network configuration file and route were properly updated.

Read More:

CentOS 6.3 Device eth0 does not seem to be present (Minimal non-cloned setup) (unix.stackexchange.com)

Disabling Network Manager (redhat.com)

Using VMware vCenter Converter Standalone to convert physical or virtual CentOS 5.x machines to vSphere 5.1 (spiceworks.com)

Basic vi Commands (cs.colostate.edu)

 

vmware

Updating BIOS and Vmware View Agent on HP t5545 Thin Client

Few weeks ago at work, I was tasked with updating the BIOS and Vmware View Agent on out of warranty HP’s t5545 clients. The purpose was to support a newer release of VMView. The catch was being comfortable with Unix and updating packages in a certain sequence. Rather than have one more IT person squirm, I had thought pay-it-forward with this extended set of instructions after some “trial and error” and reading HP documentation.

A. Verify BIOS and VIEW agent.

  1. Boot TERMINAL.
  2. Click HP START menu.
  3. Select ADMINISTRATOR/USER MODE SWITCH.
  4. NOTE: The default password: Administrator/administrator or root/root.
  5. Under GENERAL TAB.
  6. Verify release BIOS VERSION, (i.e. 786R5v.2.00 vs. 786R5 v2.02).
  7. Click SOFTWARE INFORMATION tab.
  8. Verify VMWARE-VIEW-CLIENT (i.e. 4.0.1-1 etc. vs. 4.6.0-366101-1).

B. Backup HP THIN CLIENT

  1. Click MANAGEMENT tab.
  2. Insert USB stick.
  3. Select HP THINPRO IMAGE, click NEXT.
  4. Select MAKE A COPY OF THE HP THIN PRO IMAGE.
  5. Create a BOOTABLE USB FLASH DRIVE.
  6. Click FINISH. Click YES to CONTINUE.
  7. TERMINAL will RESTART and backup. CLICK OK when done. CLICK CLOSE.
  8. DOWNLOAD and COPY INSTALL FILES to USB DRIVE.
  9. NOTE: This makes the drive bootable version of Unix for T5545 client.

C. Configure USB Drive with Updates

  1. Download WES Add-On (Configure BIOS Settings) (International) sp49355.exe.
  2. Extract files to: Windows system: C:\SWSetup\SP49355\LFlash\
  3. Copy LFlash directory to USB drive.
  4. Download Thin Client Add-On – VMware Horizon View Client (International) sp52674.exe.
  5. Extract files to: C:\Program Files\Hewlett-Packard\HP ThinPro\Add-On\View46\VMVIW3\
  6. Copy VMVIW3 to USB drive.

D. Update HP THIN CLIENT IMAGE

  1. Place USB into drive restart system.
  2. When prompted to run YES, and confirm YES.
  3. Wait for the flashing yellow prompt to power cycle.
  4. Remove drive after restart.
  5. NOTE: Some terminals had required the HP’s DOS version of their OS to load the BIOS update.

E. INSTALL VIEW SOFTWARE on HP THIN CLIENT

  1. After restart logon to Admin Tools.
  2. Logon to TERMINAL.
  3. Plug drive into usb port on front.
  4. List drives: fdisk –l
  5. Mount USB Drive, example: mount /dev/sda1/
  6. CLI will return path in error message “mount: /dev/sdb1 already mounted or navigate to the /tmp/ path for usb drive (i.e. /tmp/tmpfs/media/K*)
  7. Change directory until you locate (i.e. cd VMVIW3)
  8. List directory contents: ls
  9. Run: fsunlock
  10. Run: dpkg -i *.deb
  11. Run: flock
  12. Restart System

Read More:
HP t5545 Thin Client Drivers ( hp.com)

upgrading beyond VMWare Horizon View Client 4.6 for t5545 thin client (hp.com)

c02154215

 

Fix for “The server to which the application is connected cannot impersonate the requested user due to insufficient permission” Cisco Unity Connection Server 9.1 with Exchange 2013

Received the following error message,“The server to which the application is connected cannot impersonate the requested user due to insufficient permission,” when validating a mailbox that pointed to different account (i.e. 7777@garzafx.com) for delivering voicemail to support@garzafx.com.

Here is the technical background for the scenario.

a) Coexistence for Exchange 2007 SP3and Exchange 2013 CU1.

b) Cisco Unity Connection Server version 9.1.2TT1.11900-2TT1.

c) PowerShell command new-ManagementRoleAssignment -Name:RoleName
-Role:ApplicationImpersonation -User:’Account’ applied to Exchange 2013 environment per Cisco article Configuring Cisco Unity Connection 9x and Microsoft Exchange for Unified Messaging.

d) Deleted and recreated the AD account and mailbox (7777@garzafx.com) and migrated back and forth between Exchange 2007 and Exchange 2013, same result.

The whole error message reads as follows:

HTTP status=[200] Diagnostic=[Failed extract folder ID ” from response] Verb=[POST] url=[https://192.168.5.13/EWS/Exchange.ASMX] request=[<?xml version=”1.0″ encoding=”utf-8″?> <soap:Envelope xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance&#8221; xmlns:xsd=”http://www.w3.org/2001/XMLSchema&#8221; xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/&#8221; xmlns:t=”http://schemas.microsoft.com/exchange/services/2006/types”&gt; <soap:Header> <t:RequestServerVersion Version=”Exchange2007_SP1″/> <t:ExchangeImpersonation> <t:ConnectingSID> <t:PrimarySmtpAddress>support@garzafx.com </t:PrimarySmtpAddress> </t:ConnectingSID> </t:ExchangeImpersonation> </soap:Header> <soap:Body> <GetFolder xmlns=”http://schemas.microsoft.com/exchange/services/2006/messages&#8221; xmlns:t=”http://schemas.microsoft.com/exchange/services/2006/types”&gt; <FolderShape> <t:BaseShape>Default</t:BaseShape> </FolderShape> <FolderIds> <t:DistinguishedFolderId Id=”deleteditems”> <t:Mailbox> <t:EmailAddress> support@garzafx.com </t:EmailAddress> </t:Mailbox> </t:DistinguishedFolderId> </FolderIds> </GetFolder> </soap:Body> </soap:Envelope> ] response=[<?xml version=”1.0″ encoding=”utf-8″?><s:Envelope xmlns:s=”http://schemas.xmlsoap.org/soap/envelope/”><s:Header><t:ServerVersionInfo MajorVersion=”8″ MinorVersion=”3″ MajorBuildNumber=”342″ MinorBuildNumber=”0″ Version=”Exchange2007_SP1″ xmlns:t=”http://schemas.microsoft.com/exchange/services/2006/types”/></s:Header><s:Body><soap:Fault xmlns:soap=”http://schemas.xmlsoap.org/soap/envelope/”><faultcode>soap:Client</faultcode><faultstring&gt;The server to which the application is connected cannot impersonate the requested user due to insufficient permission.</faultstring><detail><e:ResponseCode xmlns:e=”http://schemas.microsoft.com/exchange/services/2006/errors”&gt;ErrorImpersonationDenied</e:ResponseCode><e:Message xmlns:e=”http://schemas.microsoft.com/exchange/services/2006/errors”>The server to which the application is connected cannot impersonate the requested user due to insufficient permission.</e:Message></detail></soap:Fault></s:Body></s:Envelope>]

To fix this issue perform the following steps:

1. Logon to Cisco Unity Connection Server.

ciscocm

2. Select Users and Find target account (i.e. 7777).

3. Verify SMTP address matches the account (i.e. 7777@garzafx.com).

4. Under LDAP Integration Status, select DO NOT INTERGRATE with LDAP DIRECTORY.

cldap
5. Ensure LIST IN DIRECTORY is selected.

6. Click SAVE for changes.

7. Under EDIT USER BASICS choose EDIT then MESSAGE ACTIONS, ensure VOICEMAIL is set to ACCEPT AND RELAY THE MESSAGE.

ciscomessageaction
8. Verify RELAY ADDRESS is set to the different mailbox (i.e. support@garzafx.com).

9. Go to SMTP ADDRESSES ADD PROXY ADDRESS support@garzafx.com and click SAVE.

10. Go to UNIFIED MESSAGING ACCOUNT, under ACCOUNT INFORMATION select option for USE THIS EMAIL ADDRESS enter: support@garzafx.com.

11. Click SAVE, then TEST.

Successfully test results should look like the following:

Task Execution Results
Severity Issue Recommendation Details
The validation results for the user unified messaging service account 7777@garzafx.com with service GFX-Exchange-2013 are the following: Service “GFX-Exchange-2013”: AuthenticationMode=NTLM [use HTTPS/no-validate] Server=[192.168.5.13] Type=[Exchange 2007/2010] Username=[gfx\gfx_svc2013]
Mailbox 7777@garzafx.com was successfully accessed. Connected to 192.168.5.13 using EWS.

Read more:
Configuring Cisco Unity Connection 9x and Microsoft Exchange for Unified Messaging (CISCO)

cisco

Scheduling Exchange mailbox moves in bulk with the Get-Mailbox -Database powershell command

Over the years, I had opted to skip database maintenance with moving mailboxes to new databases. Back in the old days, I used to copy mailbox after individual mailbox; however, with powershell and Exchange 2007 and above, you can schedule whole database worth of mailboxes at a time and multiples thereafter.

1. An Exchange server or system running Exchange Management Tools 

2.  Create an account with Organizational Admin permissions and Domain Admin permissions (i.e. powershell@garzafx.lcl)

3. Open powershell and run Set-ExecutionPolicy RemoteSigned to allow running your own scripts.

4. Create a folder labeled c:\scripts to store your scripts.

5.  Copy and paste the below into script file into a file labeled mailboxmoves.ps1. Modify database and server group as necessary.

#START SCRIPT
#Adding Exchange Snap In to execute Exchange CmdLets in this scriptAdd-PSSnapin

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin

#MOVE MAILBOXES

Get-Mailbox -Database “garzafx\A2013” | Move-Mailbox -BadItemLimit ’10’-TargetDatabase “garzafx\ A2014″  -Confirm:$False

Get-Mailbox -Database ” garzafx\B2013″ | Move-Mailbox -BadItemLimit ’10’-TargetDatabase ” garzafx\B2014″  -Confirm:$False

#END SCRIPT

6. Ensure you have adequate log space on your system and free space on your target drives.

7. Create a scheduled task labeled: mailboxmoves.

8. Run under service account (i.e. powershell@garzafx.lcl).

9. Select option to,”Run whether user is logged on or not.”

10. Choose, “Run with highest privileges enabled.”

11. Select trigger options (i.e. every day, 9PM) and verify status, enabled.

12. Under Actions tab, select,”Start a Program.”

13. For Program/script enter: C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe

14. Under Add-arguments,”-file -Command “& ‘C:\scripts\mailboxmoves.ps1′”

15. Click OK and enter credentials when prompted.

16.  After the scheduled task runtime, verify no mailboxes reside in your old databases (i.e. get-mailboxstatistics -database myexchangeserver\agarzafx2013). Then proceed with file and folder deletion.

NOTE: You can schedule as many database mailbox moves, just be mindful of time of day and storage, otherwise you might inadvertently take information stores offline.

Read More:

How To: Schedule PowerShell Script for an Exchange Task  (Exchange Server Share)

ps

Office 365 configuring a user to not expire via powershell

For those mentally transposing commands from Active Directory and Exchange via PowerShell, I had thought this might be useful in avoiding some pitfalls in your daily Azure admin tasks.

Before we had started, double-check the following pre-requisites for running Windows Azure Active Directory Module for Windows PowerShell.

a. Review software requirements.

http://technet.microsoft.com/en-us/library/jj151815.aspx#BKMK_Requirements

b. Install the Windows Azure AD Module for Windows PowerShell.

http://technet.microsoft.com/en-us/library/jj151815.aspx#bkmk_installmodule

So let us begin!

1. Under Microsoft Online Services, run as administrator the Microsoft Online Services Module for Windows PowerShell.

2. Enter; Connect-msolservice

3. When prompted, enter login credentials for an Office 365 administrative account.

4. Locate the User Principal Name for the account for editing.

NOTE: If unsure, export your entire list of users with the following command: Get-MSOLUser -All | export-csv c:\getusers.csv.

5. Run the following command, Set-MsolUserPassword to set a password. Reference the following example:

Set-MsolUserPassword -UserPrincipalName ellen.ripley@lv426.onmicrosoft.com -ForceChangePassword $False -NewPassword “Xenomorph#1”

6.  Setting user password not to expire, Get-MSOLUser | SetMsoluser. Reference the following example:

Get-MSOLUser -UserPrincipalName ellen.ripley@lv426.onmicrosoft.com | Set-MsolUser -PasswordNeverExpires $true

The key variable that had needed qualifying –UserPrincipalName. In Exchange and Active Directory, I had left  this open ended or closed with the –identity switch in PowerShell. Also, I had gotten tripped up with Boolean data for reference for –ForceChangePassword $False instead of “False” or False.

If you hadn’t typed the commands properly, expect some of the follow automated errors:

Get-MsolUser : A positional parameter cannot be found that accepts argument

Set-MsolUserPassword : Cannot convert ‘System.String’ to the type ‘System.Nullable`1[System.Boolean]’ required by parameter ‘ForceChangePassword’.

Read More:
Set-MsolUserPassword (Microsoft TechNet)
Get-MsolUser (Microsoft TechNet)
Set up user passwords to never expire (Office365)

20131028-211320.jpg