Tuesday, May 1, 2018

Installing newest CU and dealing with .NET upgrade

Microsoft has dropped out Service pack model and start using cumulative updates (CU) while back.

You can read more about it on this article. If you are not on the latest CU , most of the last living on premises clients will not be wanting to implement latest CU on their on prem Exchange Servers, due to it is buggy reputation. Remember how many times newest CU broke Exchange more than it claimed to fix. You need to make sure .NET frame work is supported by the version of Exchange + CU version you have. Very recently, I have encounter interesting finding, what MS is recommending. Here is an example, you are running E2016 on prem with CU7 and wanting to go to CU8, and the latest CU version is CU9. MS did recommend CU8 has caused so many issues therefore CU9 is more applicable. At the time this article is written, there are no known major issues with CU9.

This year July the 1th upcoming CUs will require .NET 4.7.1, so you would think your upgrade logic will tell you install CU9 then upgrade .NET to 4.7.1. Since .NET 4.7.1 is not supported by CU7 installing it first would cause issues? I thought so as well. The recommended update path for those who are on E2016 & CU7 is Install .NET 4.7.1 first, reboot, then install CU9 (assuming you wanted to skip the buggy CU8)

I found this interesting and worth for mentioning about it. You can read similar verbiage on the .NET section of this article if you need MS backing.



Oz Casey, Dedeal

Principal Systems Engineer

https://simplepowershell.blogspot.com/  (blog)

https://smtp25.blogspot.com/ (blog)

https://telnet25.wordpress.com/ (blog)

https://twitter.com/Message_Talk (Twitter)

Sunday, April 1, 2018

Enable Circular logging Lync Fabric logs

In this article we will talk about Lync Fabric logs and now to enable circular logging to keep your drive going out of space madness. If you are reading this article, most likely you ran into similar issues.

To enable circular logging, you will need to use following steps

1. log onto Lync FE server via Remote Desktop Protocol (RDP)

2. Make a right click on Windows PowerShell and select | Run as Administrator | press enter

3. Accept UAC warning by clicking yes

4. On the elevated PowerShell command prompt type following | and press enter

cd 'C:\ProgramData\Windows Fabric\Fabric\log\Traces'


Type following command and press | enter

Logman update trace FabricLeaseLayerTraces -f bincirc --cnf

6. From PowerShell type | Perfmon | press enter | navigate to following section within the Performance Monitor MMC.

7. Expand Data Collector Sets | Expand User Defined | Select Fabric Traces |

8. Make a right click on |Fabric Logs| and select | Stop|


9. Go back to | C:\ProgramData\Windows Fabric\Fabric\log\Traces | location

10. From command line type | Explorer .\ | press enter to open the log directory on GUI


11. Highlight all the existing ELT files and delete them.

12. Go back to Performance monitor snap in

13. This time select | Fabric Traces | on the right pane and make a right click select properties

14. Click File tab on top and locate Circular check box under log mode section


15. Make sure | Circular (requires a non-zero maximum file size) is selected, and is set to ENABLED.

16. If not enable it


17. Make a right click on the | Fabric Traces | click on start


Note: You will need to perform same work on all the Lync FE Servers.

Oz Casey, Dedeal

Senior Systems Engineer
http://smtp25.blogspot.com/ (Blog)
http://telnet25.wordpress.com/ (Blog)
https://twitter.com/Message_Talk (Twitter)

Tuesday, February 27, 2018

Adjust Exchange 2016 Mailbox Move Historical Information.

In large environments mailbox moves are nature of the business. For various reasons mailboxes will be moved around and each time this occurs MRS will keep last two move history logs for a given mailbox. When this information is overwritten you could end-up losing important data and this might have adverse effects to create confusions on your recovery efforts. To remediate the issue, we will adjust “MSExchangeMailboxReplication.exe.config” file to ensure we are retaining 20 moves historical information.

It could be ideal for to change these settings depending on your scenario. The settings define move history is kept within the “MSExchangeMailboxReplication.exe.config” file acceptable values are from 0 to 100 (Default is 2)

Implementation Plan:

Log onto your Exchange 2016 Server. Use your Exchange Administrator account on the logon

Click Windows tile then

Navigate to following directory

D:\Program Files\Microsoft\Exchange Server\V15\Bin

Locate “MSExchangeMailboxReplication.exe.config” file

1. Make a right click and select edit

2. Press CTRL + F key to bring up Find menu and type “MaxMoveHistoryLength”

3. Press enter

4. Under MRSConfiguration locate the entry “  MaxMoveHistoryLength="2”

5. Change the number from 2 to a desired number. We will make it 20  in our scenario

6. Click File on top and select “Save” then exit.



Oz Casey, Dedeal

Systems Engineer
http://smtp25.blogspot.com/ (Blog)
http://telnet25.wordpress.com/ (Blog)
https://twitter.com/Message_Talk (Twitter)

Monday, October 23, 2017

Exchange 2016 CU 7 Issues / bugs and frustrations 

If you are upgrading to CU7 you might run into issues listed below. Interruption on the mail flow. The issue seems to be caused by permission changes on the registry key called “IDStore”
This is another undocumented surprise with CU7.  Also keep an eye on your existing IIS settings, SSL offloading existing setting seems to be wiped out with the CU7 install.
OU pickler ( config file ) is not working after config file is getting wiped out also known CU upgraded gift , Microsoft seems to be neglecting to get this fixed.
IF more found I will update the article in the feature.

The transport process failed during message processing with the following call stack: System.UnauthorizedAccessException: Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ExchangeServer\v15\WorkerTaskFramework\IdStore\ProbeDefinitionIDConflicts' is denied.
   at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str)
   at Microsoft.Win32.RegistryKey.CreateSubKeyInternal(String subkey, RegistryKeyPermissionCheck permissionCheck, Object registrySecurityObj, RegistryOptions registryOptions)
   at Microsoft.Win32.RegistryKey.CreateSubKey(String subkey)
   at Microsoft.Office.Datacenter.WorkerTaskFramework.WindowsRegistryKey.CreateSubKey(String path)
   at Microsoft.Office.Datacenter.ActiveMonitoring.DefinitionIdGenerator`1.RecordConflictInRegistry(String keyName, String value)
   at Microsoft.Office.Datacenter.ActiveMonitoring.DefinitionIdGenerator`1.GenerateDefinitionId(String definitionKey, Boolean isNotification)
   at Microsoft.Office.Datacenter.ActiveMonitoring.NotificationItem.Publish(Boolean throwOnError)
   at Microsoft.Exchange.Protocols.Smtp.Legacy.MailSmtpCommand.LogMailFromSmtpResponseEventIntoCrimsonChannelPeriodically(String eventIdentifier)
   at Microsoft.Exchange.Protocols.Smtp.Legacy.MailSmtpCommand.OutboundProcessResponse()
   at Microsoft.Exchange.Protocols.Smtp.Send.SmtpOutSession.HandlePostParseResponse(SmtpCommand command)
   at Microsoft.Exchange.Protocols.Smtp.Send.SmtpOutSession.InvokeResponseHandler(SmtpCommand command)
   at Microsoft.Exchange.Protocols.Smtp.Send.SmtpOutSession.StartProcessingResponse(Byte[] buffer, Int32 offset, Int32 size, Boolean overflow)
   at Microsoft.Exchange.Protocols.Smtp.Send.SmtpOutSession.ReadLineComplete(IAsyncResult asyncResult)
   at Microsoft.Exchange.Net.LazyAsyncResult.WorkerThreadComplete(Object state)
   at Microsoft.Exchange.Net.LazyAsyncResult.Complete(IntPtr userToken)
   at Microsoft.Exchange.Net.LazyAsyncResult.ProtectedInvokeCallback(Object value, IntPtr userToken)
   at Microsoft.Exchange.Net.NetworkConnection.InvokeRecvCallback(LazyAsyncResultWithTimeout`1 asyncResult, NetworkResult result)
   at Microsoft.Exchange.Net.NetworkConnection.ReadLineDataAvailable(IAsyncResult asyncResult)
   at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Net.ContextAwareResult.Complete(IntPtr userToken)
   at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
   at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
   at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)

Issue:  Inbound e-mail stops with following error (user not getting inbound e-mail)
Symptoms:  All Exchange 2016 services seems to be running, transport service looks fine.
User experience:  No incoming e-mail, outgoing e-mail continues to work

To remediate the issue listed above, Assign network service ( This computer)  Full Access rights as shown below.

  • ·        SOFTWARE
  • ·        Microsoft
  • ·        ExchangeServer
  • ·        v15
  • ·        WorkerTaskFramework
  • ·        IdStore


Navigate the register key listed above on your Exchange 2016 CU7 server. Make a right click, permissions and select ( Local computer) Network service is local computer account. Assign Full permissions and close the register.

Verify mail flow id restored.

Oz Casey, Dedeal
Systems Engineer
http://smtp25.blogspot.com/ (Blog)
http://telnet25.wordpress.com/ (Blog)
https://twitter.com/Message_Talk (Twitter)