Jump to content




Search the Community

Showing results for tags 'Exchange 2013'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General Stuff
    • Site News
    • Windows News
    • Suggestion box
    • General Chat
    • Events
    • Jobs
  • Cloud
    • Microsoft Intune
    • Azure
    • Office 365
  • Microsoft Deployment Toolkit
    • Deploying Windows 10, Windows 8.1, Windows 7 and more...
  • SMS, SCCM, SCCM Current Branch, SCCM Technical Preview
    • SMS 2003
    • Configuration Manager 2007
    • Configuration Manager 2012
    • System Center Configuration Manager (Current Branch)
    • How do I ?
    • Packaging
    • scripting
    • Endpoint Protection
  • Windows Server
    • Active Directory
    • KMS
    • Windows Deployment Services
    • NAP
    • Failover Clustering
    • PKI
    • Windows Server 2008
    • Windows Server 2012
    • Windows Server 2016
    • Hyper V
    • Exchange
    • IIS/apache/web server
    • System Center Operations Manager
    • System Center Data Protection Manager
    • System Center Service Manager
    • System Center App Controller
    • System Center Virtual Machine Manager
    • System Center Orchestrator
    • Lync
    • Application Virtualization
    • Sharepoint
    • WSUS
  • Microsoft SQL Server
    • SQL Server
  • Windows General
    • Windows 10
    • Windows 8
    • Windows 7
    • Windows Vista
    • Windows XP
    • how do I do this ?
    • windows screenshots

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website URL


Location


Interests

Found 11 results

  1. thbor83

    Exchange 2013 OOF Unavailable

    Hi We have a new Exchange 2013 installed in our environment, everything was straight forward and worked from the start. At least we thought so, after starting using the new environment we saw that out of office didn't work When you try to change the out of office (Outside our network) we get the message that Exchange server is unavailable and we need to try later. Have tried to find information about this online, and changed all url's to the external url. This without any luck. Is there anyone of you that uses exchange 2013 with out of office from external networks? Appreciate all help that we can get. -Thomas
  2. We're currently on Exchange 2010 SP3 and are in the process of migrating to a hosted 2013 Exchange. As part of the migration, we've changed our internal DNS mx record for our mail server to our hosted site. Since then, we've checked the boxes in Outlook to force http on fast and slow networks, in an effort to ensure all users encounter the same user experience, whether they're at work or home or traveling. The issue now is that SOME (maybe 5/250, and increasing) have an issue where the room finder drop down (room finder shows just fine - this issue is simply the drop down) is missing. We can uncheck the boxes for http on fast and slow networks and the drop down returns immediately after re-opening Outlook. However, we have a policy forcing these settings, and each time a user closes Outlook, the boxes are checked, and then room finder drop down is gone again. I've come across this article:https://social.technet.microsoft.com/forums/exchange/en-US/a320d929-a610-4af7-aace-4b17636d4583/room... which outlines the exact issue, but as seen, there was no solution. The Exchange Add-in is enabled, and only some users have issues. The issue persists for users across computers, and seems to only occur for the users Windows profile. For example: If I log into a computer, manually add a "troublesome" users mail account, I have no issues. If I log in as the "troublesome" user, and let autodiscover add the account, the issue persists, regardless of what computer. However, Outlook 2013 the issue is gone. Is there any reason this might be? Is there anything we can do to remedy the issue, aside from installing 2013?
  3. AdinE

    New Exchange 2013 MP Released

    Hey Everyone, I just wanted to share quickly that a new (and much improved) Exchange 2013 Management Pack has been released for SCOM! A colleague of mine wrote a review of it, which you can find here: http://overcast.fehse.ca/2014/10/new-exchange-2013-mp-is-out/.
  4. Published: 2013-12-20 Updated: - Version: 1.0 Since the previous post took us through the technical prerequisites, these should now be ready and in place for installing and configuring Coexistence Manager for Notes (CMN). Before going into any details, if you are planning to do have a coexistence scenario between Domino and Exchange, you may want to consider using Dell Software’s Coexistence Manager for Notes. However, one important thing to mention is that there is a requirement from the vendor, to use certified people for the project. This blog post is based on Coexistence Manager for Notes version 3.5.1.51. Some of you might know that I wrote some articles regarding this topic two years ago, the configuration has changed a bit. I want to share this with the community and I hope you enjoy reading it. I have decided that I won’t publish any article about the Migration Manager product. If anyone are interested of writing them, I’m glad to support and review the articles. If interested, contact me at: jonas.andersson@testlabs.se. Read the other parts: Part 1: Migrations – Overview Part 2: Prerequisites for Domino/Notes migrations Part 3: Migrating Domino/Notes to Exchange 2013 On-premise Part 4: Migrating Domino/Notes to Office 365 Part 5: Migrating Resources Mailboxes, Mail-In databases and Groups Part 6: Prerequisites for Coexistence Manager for Notes with Exchange 2013 On-premise Part 7: Configuring Coexistence Manager for Notes with Exchange 2013 On-premise Technical overview of the solution SMTP and Free/Busy requests overview design Installation of Coexistence Manager for Notes (CMN) There is no need for further description on how to proceed with the installation of CMN, select the features that should be used, then it’s a “next-next-finish” installation. Licensing Startup “Quest Coexistence Manager for Notes Management Console” and go to “Common – Licensing” to provide a valid license file. Mail Connector configuration This post is not about how to create the mail flow configuration between Office 365/Exchange and Domino since I assume, if you’re working and reading this topic, you’re familiar with how to create Send/Receive connectors in Exchange and Domain documents and Connection documents in Domino. I will, however, post an article on how to configure Exchange/Office 365 and Domino regarding the mail flow. Let’s configure CMN regarding mail flow, startup “Quest Coexistence Manager for Notes Management Console” and go to “Mail Connector”. Go to “Inbound Servers”, remove any default values, add all incoming servers, both source and target servers. Just make sure to specify their function (Server type). When all are added, it will look similar to the picture below. Go to “Outbound Servers”, remove any default values. Either use the “Add” button or if you’re about to add the same as the Inbound, then use the “Copy from Inbound Servers” button. After the servers are added, it will look similar as the picture below. For Notes Doc Links, I will use the option “Notes links (Requires Notes client on clients)”, but you should select the option that will provide the best solution in each scenario. I’m using the default settings for Network settings. If needed, TLS can be used and it’s in this window the configuration takes place. In my lab environment, I’m not using TLS. I’m using the default settings for Advanced Message settings. I prefer to use the option “Rewrite Notes Common Names”, so it becomes more user-friendly and easier to read than a long Domino displayname. Other options are not enable, use them if needed. I’m using the default settings for Message Content Limits settings. In the lab environment I’m not using the sub-domain option. However, if needed, here is the place to configure it. Active Mail, it requires Notes client 7.0.3, 7.0.4 or 8.0 on the CMN server. It also requires the Notes client on the clients for being able to use the feature. Default settings in Notification messages. Here is a sample of the “ResourcesMap.tsv” file that’s used for mapping resources so they can be booked from Exchange/Outlook. Import the “ResourcesMap.tsv” file, just verify the imported items and change the “Resource type” if they are not correct or configured. Directory Synchronization configuration Let’s walk through the directory synchronization, which is required to get Free/Busy to work properly. It’s required to provision users as contact objects. With CMN 3.5.x, the directory synchronization uses a new module, which uses SQL for its configuration. Just see my picture below as an example of the SQL configuration. The configuration can be found under “Directory Connector – SQL Settings”. Domino Users synchronization, go to “Directory Connector – Connector Settings”. Press “Add” button and “Next” in the window. Give the connector a friendly name like “Domino to AD – Users”, verify the “Direction” value and press “Next”. Type in Source information: domino server, username, password and LDAP port. Type in Target information: domain controller, username, password and LDAP port. In my scenario, I’ve specified a domain controller, so I enabled that checkbox. Specification of domain controllers are common in scenarios where you want to use the closest domain controller possible for faster reading and writing. Select the object to process – “Users & Contacts”, specify the OU that should be synchronized. Specify the target OU where objects will be created, also specify Target Search Base DN and load the Exchange attributes from AD and add them. Since Office 365 is used, you need to specify a different targetAddress domain (forwarding) use the “Enable Internal Routing Domain” option and specify a domain in the value field. See my example in the screenshot below. No connector order is selected. A synchronization schedule is created, in my example 5 AM and 2 PM. The appropriate timing depends on how often and how many changes are done within Domino. Press “Finish” to close the final window. Groups synchronization, go to “Directory Connector – Connector Settings”. Press “Add” button and “Next” in the window. Give the connector a friendly name like “Domino to AD – Groups”, verify the “Direction” value and press “Next”. Type in Source information: domino server, username, password and LDAP port. Type in Target information: domain controller, username, password and LDAP port. In my scenario, I’ve specified a domain controller, so I enabled that checkbox. Specification of domain controllers are common in scenarios where you want to use the closest domain controller possible for faster reading and writing. Select the object to process by selecting “Groups” and specify the OU that should be synchronized. Specify the target OU where objects will be created, also specify Target Search Base DN and load the Exchange attributes from AD and add them. Since Office 365 is used, you need to specify a different targetAddress domain (forwarding) use the “Enable Internal Routing Domain” option and specify a domain in the value field. See my example in the screenshot below. No connector order is selected. A synchronization schedule is created, in my example 5 AM and 2 PM. The appropriate timing depends on how often and how many changes are done within Domino. Press “Finish” to close the final window. Resources synchronization, go to “Directory Connector – Connector Settings”. Press “Add” button and “Next” in the window. Give the connector a friendly name like “Domino to AD – Resources”, verify the “Direction” value and press “Next”. Type in Source information: domino server, username, password and LDAP port. Type in Target information: domain controller, username, password and LDAP port. In my scenario, I’ve specified a domain controller, so I enabled that checkbox. Specification of domain controllers are common in scenarios where you want to use the closest domain controller possible for faster reading and writing. Select what object to process “Resources”, specify the OU that should be synchronized. Specify the target OU where objects will be created, also specify Target Search Base DN and load the Exchange attributes from AD and add them. Since Office 365 is used, you need to specify a different targetAddress domain (forwarding) use the “Enable Internal Routing Domain” option and specify a domain in the value field. See my example in the screenshot below. No connector order is selected. A synchronization schedule is created, in my example 5 AM and 2 PM. The appropriate timing depends on how often and how many changes are done within Domino. Press “Finish” to close the final window. Free/Busy configuration Since we now have the contact objects provisioned and the mail flow working, it’s time for the most involved part of the coexistence, the Free/Busy configuration. Qcalcon configuration The installation of Qcalcon on a Domino server is a standard “next-next-finish” procedure and a Domino server task will be created during the installation. The software can either be installed on an existing server or a dedicated Free/Busy server (I would recommend the latter IF possible). Start the Qcalcon configuration by starting the “Coexistence Management Console”, see picture below. Configure Qcalcon with the following properties (as an example): “Gateway Mail File Name: mail.box” (verify with Domino Administrator on which to use) ”Quest Exchange Free/Busy Connector Service Endpoint: cmn35“ (resolvable DNS name to CMN server) Note: You need to provide a valid license before the software can be used. Domino configuration, go to the CMN server and start the CMN console, then go to “Domino Free/Busy Connector”. Type in Domino configuration; ”Domino Server Name: domino/target” (specify server where Qcalcon is installed) ”Domino User fetch interval in minutes: 15” ”Domino User SMTP domain: testlabs.se” ”Exchange Forwarding Domain: domino.testlabs.se – testlabs.se” ”Domino ID file path: C:\Temp\mmig.id” (Browse and select the ID file) ”Domino Password: *****” (Type in the password for that ID file) ”Enable Performance counters: Check” Go to “Quest Web Services” Type in Domino configuration; ”Quest Autodiscover Host Name: domino.testlabs.se” ”Quest Domino Free/Busy Connector Host Name: localhost” Don’t forget to create (if not done already as specified in part 6) the AvailabilityAddressSpace, or Free/Busy won’t work as expected. See cmdlet below picture. $cred = Get-Credential $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri ps.outlook.com/powershell -Credential $cred -Authentication Basic –AllowRedirection Import-PSSession $session Enable-OrganizationCustomization New-AvailabilityConfig -OrgWideAccount <Office365AdminAccont> $CMNCred = Get-Credential Add-AvailabilityAddressSpace -AccessMethod OrgWideFB -ForestName domino.testlabs.se -Credentials $CMNCred -TargetAutodiscoverEpr ` "https://autodiscover.domino.testlabs.se/autodiscover/autodiscover.xml" Add-AvailabilityAddressSpace -AccessMethod OrgWideFB -ForestName testlabs.se -Credentials $CMNCred -TargetAutodiscoverEpr ”https://autodiscover.domino.testlabs.se/autodiscover/autodiscover.xml” Exchange configuration, let’s finish the Free/Busy configuration by completing the Exchange part by going to “Exchange Free/Busy Connector – Exchange Free/Busy”. Type in Exchange configuration; ”Exchange Server location: Autodiscover Endpoint” (more about these options can be found in the User Guide) ”Exchange Host Name: autodiscover-s.outlook.com” ”Exchange Online: Checked” ”Exchange Username: username@testlabstrial.onmicrosoft.com” ”Exchange Password: *****” ”Show tentative As Busy: Yes” ”Enable Performance Counters: Enable” Use the Test button to verify that the functionality is working as expected. Note: Certificate needs to be deployed before a successful test. Additional Configurations Certificate/IIS Coexistence Manager relies on certificates since it’s using HTTPS for requests. This is important to understand. The provided “Quest Autodiscover URL” and “Quest EWS URL” is based on the value entered in the “Quest Autodiscover Host Name” field. This common name is used during Free/Busy requests and is required to be in the certificate used in IIS. It should be bound to IIS and the “QuestFreeBusy” website. Once the certificates have been deployed into the CMN server and IIS, use the Test buttons in the CMN console to verify the Quest Autodiscover functionality. In most cases, the autodiscover DNS record is pointed to the Exchange so, in order to test this functionality, use the host file and point it to CMN server. A last thing to verify is that the “QuestFreeBusy” website is enabled for HTTP (80) and HTTPS (443) traffic, since it’s a requirement. Note: Since this is a Office 365 solution and Microsoft are not aware of our internal PKI solution and are not trusting the internal issued certificates we need to buy a certificate from a trusted root provider. In my lab I’m using Comodo because they could provide a trial certificate up to 90 days. Autodiscover In short, I’ve copied a good description in a quote from the User Guide for Coexistence Manager.. When coexisting with Office 365: Direct free-busy lookups from Office 365 to Notes are not possible in a single-namespace configuration due to access/ permission restrictions to the remote Microsoft servers. If you require bi-directional free/busy in a single-namespace environment with Office 365, consider a hybrid implementation with a local Exchange server and calendar federation. Probably the easiest way of describing this is to say that the autodiscover of the primary domain/s needs to be pointed to Office 365 and therefore a sub-domain needs to be implemented for having a way back reaching the users Free/Busy information. The Autodiscover is used since the mail contacts have a targetAddress with “@domino.testlabs.se” and there is a configured value for that domain in the AvailabilityAddressSpace configuration. Because of that, the request ends up checking these contacts Free/Busy externally via Autodiscover, which is pointed to CMN. Verification of functionality Notes client (source) Mail flow A mail is sent from the Lotus Notes client (8.5.x) to a user that were migrated to Office 365 and now have an Exchange Online mailbox and uses Outlook 2013. The mail is a standard mail, see picture below. During the transport, these actions are being logged into the CMN.log file on the CMN server, some related entities can be found below: 2013-12-16 22:04:42,725 INFO CMN.logging [45] – Connection received from 172.16.1.16. 2013-12-16 22:04:43,098 INFO CMN.logging [45] – Message Number [22] on Thread [45] from Domino (172.16.1.16:2979) to Exchange (192.168.0.50:25): Connection established. 2013-12-16 22:04:51,019 INFO CMN.logging [Proxy 22] – Message Number [22] on Thread [47] from Domino (172.16.1.16:2979) to Exchange (192.168.0.50:25): Processed Message ID: OF1E60FD00.7502912C-ONC1257C43.00739C32-C1257C43.0073C978@domino.testlabs.se – Size: 589 – From: Anette.Andersson@testlabs.se – To: Jonas.Andersson@testlabs.se – Processing Time: 3.443 Seconds – Changes: ActiveMailRemovedExtraneousAttachment, ActiveMailRemovedOnd, MimeModified In the destination mailbox it should look like the picture below And the reply from Outlook ends up in the source mailbox (Notes), just like the picture shows below Calendar Free/Busy A Free/Busy request was done by arranging a new meeting in the Notes client and selecting the migrated users. If the busytime lookup is working as expected, it should look similar to the picture below: During the busytime lookup requests, these actions are being logged into the QCalCon.wlog on the Domino Qcalcon server and ExchangeFreeBusyService.wlog file on the CMN server. Some examples on log entries can be found while doing the busytime lookup, see below: QCalCon.wlog: 2013-12-17 19:41:12,083 [mail.box] INFO ScheduleRequestManager – Message retrieved from queue 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – ScheduleRequestHandler() enter 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – NotesInitThread 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – Cast thread parameter to SchMsgWrapper instance 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – Release SCHMSG instance from SchMsgWrapper instance 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – Process SCHMSG message 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – SchContainer_DupHandle: Duplicate SCHMSG hContainer handle 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – SchContainer_GetRequest: Get hContainerObject request from message hContainer 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – UserNameList: 1 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager - CN=Jonas Andersson/O=target@Exchange 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – ClientNameList: 0 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – DominoServerNameChain: 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – Call GetFreeBusyForUsers 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – GetFreeBusyForUsers() enter 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – GetEmailsFromList() enter 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – Create SmtpEmailList 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – Create NameRepository 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – 1 entries in list 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – FullName:CN=Jonas Andersson/O=target@Exchange 2013-12-17 19:41:12,270 [12] INFO NameRepository – TryGetMailAddressAndInternetAddressFromFullName() enter 2013-12-17 19:41:12,270 [12] INFO NameRepository – FullName: CN=Jonas Andersson/O=target 2013-12-17 19:41:12,270 [12] INFO NameRepository – MailAddress: Jonas.Andersson@testlabs.se@TARGET 2013-12-17 19:41:12,270 [12] INFO NameRepository – InternetAddress: Jonas.Andersson@domino.testlabs.se 2013-12-17 19:41:12,270 [12] INFO NameRepository – TryGetMailAddressAndInternetAddressFromFullName() exit 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – ScheduleRequestManager() exit 2013-12-17 19:41:12,270 [12] INFO ScheduleRequestManager – Call ExchangeFreeBusyService net.tcp to get Free/Busy information 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – GetFreeBusyForUsers() exit 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – GetFreeBusyForUsers returned 1 results 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – Create SCHED_LIST result instance for user jonas.andersson@testlabs.se 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – Is a valid user. 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – Allocate 12068 bytes to hold SCHED_LIST 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – Convert 335 Free/Busy times to TIMEDATE format 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – Schedule_NewFromSchedList() 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – Set SCHMSG flags to SCHMSG_ReplyToRqst 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – MQPut: Place SCHMSG in output queue 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – SchContainer_FreeRequest: Free hContainerObject 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – SchContainer_Free: Free hContainer 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – Delete SCHMSG message 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – NotesTermThread 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – Free/Busy request processing took 00:00:25.6019938 2013-12-17 19:41:37,864 [12] INFO ScheduleRequestManager – ScheduleRequestHandler() exit ExchangeFreeBusyService.wlog: 2013-12-17 19:41:24,233 [3] INFO ExchangeFreeBusyConnector – Initialize() Enter 2013-12-17 19:41:24,247 [3] INFO ExchangeConfiguration – User name credential is sa-account@testlabs.se 2013-12-17 19:41:24,251 [3] INFO ExchangeFreeBusyConnector – Initialize() Exit 2013-12-17 19:41:24,262 [3] INFO FreeBusyWcfServiceBase – GetFreeBusyForUsers() Begin 2013-12-17 19:41:24,263 [3] INFO FreeBusyWcfServiceBase – Time span: 12/17/2013 19:30:00 Local — 06/03/2014 19:30:00 Local 2013-12-17 19:41:24,270 [3] INFO FreeBusyWcfServiceBase – Email addresses: 2013-12-17 19:41:24,270 [3] INFO FreeBusyWcfServiceBase - Jonas.Andersson@testlabs.se 2013-12-17 19:41:24,284 [3] INFO ExchangeFreeBusyConnector – GetFreeBusyInfo() Begin 2013-12-17 19:41:24,287 [3] INFO ExchangeFreeBusyConnector - Email Addressees (Count=1), Start=12/17/2013 00:00:00 (Utc), End=06/03/2014 00:00:00 (Utc) 2013-12-17 19:41:24,287 [3] INFO ExchangeFreeBusyConnector - jonas.andersson@testlabs.se 2013-12-17 19:41:24,288 [3] INFO ExchangeConfiguration – User name credential is sa-account@testlabs.se 2013-12-17 19:41:24,292 [3] INFO AutodiscoverResultCache – jonas.andersson@testlabs.se not found in cache. 2013-12-17 19:41:24,302 [3] INFO AutodiscoverWorker – Using hint autodiscover address https://autodiscover-s.outlook.com/autodiscover/autodiscover.xml 2013-12-17 19:41:24,302 [3] INFO AutodiscoverWorker – Email address: jonas.andersson@testlabs.se 2013-12-17 19:41:24,303 [3] INFO AutodiscoverWorker – ScpLookupOrder:Last 2013-12-17 19:41:31,733 [3] INFO AutodiscoverWorker – Using redirect target address https://pod51036.outlook.com/autodiscover/autodiscover.xml 2013-12-17 19:41:34,453 [3] INFO AutodiscoverWorker – User display name: Jonas Andersson 2013-12-17 19:41:34,453 [3] INFO AutodiscoverWorker – Internal Autodiscover URI: https://pod51036.outlook.com/autodiscover/autodiscover.xml 2013-12-17 19:41:34,453 [3] INFO AutodiscoverWorker – Internal EWS URI: https://outlook.office365.com/EWS/Exchange.asmx 2013-12-17 19:41:34,453 [3] INFO AutodiscoverWorker – Autodiscover successfully returned EWS URI. 2013-12-17 19:41:34,454 [3] INFO AutodiscoverWorker – 00:00:10.1529517 2013-12-17 19:41:34,456 [3] INFO AutodiscoverResultCache – Add jonas.andersson@testlabs.se https://outlook.office365.com/EWS/Exchange.asmx 2013-12-17 19:41:34,456 [3] INFO AutodiscoverResultCache – Contains jonas.andersson@testlabs.se False 2013-12-17 19:41:34,461 [3] INFO EwsWorker – Sending EWS request to Exchange 2013-12-17 19:41:37,043 [3] INFO EwsWorker – Receiving EWS response from Exchange 00:00:02.5816765 2013-12-17 19:41:37,049 [3] INFO EwsWorker – Sending EWS request to Exchange 2013-12-17 19:41:37,314 [3] INFO EwsWorker – Receiving EWS response from Exchange 00:00:00.2646486 2013-12-17 19:41:37,314 [3] INFO EwsWorker – Sending EWS request to Exchange 2013-12-17 19:41:37,574 [3] INFO EwsWorker – Receiving EWS response from Exchange 00:00:00.2597097 2013-12-17 19:41:37,574 [3] INFO EwsWorker – Sending EWS request to Exchange 2013-12-17 19:41:37,867 [3] INFO EwsWorker – Receiving EWS response from Exchange 00:00:00.2934156 2013-12-17 19:41:37,872 [3] INFO ExchangeFreeBusyConnector – GetFreeBusyInfo() End 00:00:13.5837260 2013-12-17 19:41:37,882 [3] INFO FreeBusyWcfServiceBase - Email Address: jonas.andersson@testlabs.se 2013-12-17 19:41:37,882 [3] INFO FreeBusyWcfServiceBase - Valid User=True, Busy Time count=335 2013-12-17 19:41:37,882 [3] INFO FreeBusyWcfServiceBase – GetFreeBusyForUsers() End Elapsed Time 00:00:13.6100533 Outlook 2013/OWA (destination/target) Mail flow A mail is sent from the Outlook 2013/OWA client to a user that has not been migrated and remains in Domino. The mail is a standard mail, see picture below. During the transport, these actions are being logged into the CMN.log file on the CMN server, some related entities can be found below: 2013-12-17 19:11:43,822 INFO CMN.logging [5] – Connection received from 213.199.154.14. 2013-12-17 19:11:43,840 INFO CMN.logging [5] – Message Number [1] on Thread [5] from Exchange (213.199.154.14:18414) to Domino (172.16.1.16:25): Connection established. 2013-12-17 19:11:46,535 INFO CMN.logging [Proxy 1] – Message Number [1] on Thread [9] from Exchange (213.199.154.14:18414) to Domino (172.16.1.16:25): Processed Message ID: 36b115a4b2974ece99a97f9c00fa3171@AMXPR01MB088.eurprd01.prod.exchangelabs.com – Size: 2773 – From: jonas.andersson@testlabs.se – To: Anette.Andersson@domino.testlabs.se – Processing Time: .134 Seconds – Changes: NoChange In the destination mailbox (Lotus Notes) it should look like the picture below And the reply from Notes ends up in the target mailbox (Outlook), just like the picture shows below Calendar Free/Busy A Free/Busy request was done by arranging a new meeting in the Outlook 2013/OWA client and selecting the Domino users. If the Free/Busy request lookup is working as expected, it should look similar to the picture below: During the busytime lookup requests, these actions are being logged into the Autodiscover.wlog, EWS.wlog and DominoFreeBusyService.wlog on the CMN server. Some examples on log entries can be found while doing the busytime lookup, see below: Autodiscover.wlog 2013-12-17 20:51:20,607 [6] INFO AutodiscoverPage – IsSecureConnection: True 2013-12-17 20:51:20,608 [6] INFO AutodiscoverPage – UserAgent: ASAutoDiscover/CrossForest/EmailDomain//15.00.0847.008 2013-12-17 20:51:20,612 [6] INFO AutodiscoverPage – UserHostName: 157.56.250.52 2013-12-17 20:51:20,612 [6] INFO AutodiscoverPage – UserHostAddress: 157.56.250.52 2013-12-17 20:51:20,619 [6] INFO AutodiscoverPage – Email Address: Anette.Andersson@domino.testlabs.se 2013-12-17 20:51:20,619 [6] INFO AutodiscoverPage – Quest EWS URL: https://autodiscover.domino.testlabs.se/EWS/Service.asmx EWS.wlog: 2013-12-17 20:51:22,993 [6] INFO QuestEWSService – RequestedView: DetailedMerged 2013-12-17 20:51:22,994 [6] INFO QuestEWSService – RequestedViewSpecified: True 2013-12-17 20:51:22,994 [6] INFO QuestEWSService – MergedFreeBusyIntervalInMinutes: 30 2013-12-17 20:51:22,995 [6] INFO QuestEWSService – TimeWindow: 12/08/2013 00:00:00 Unspecified — 12/29/2013 00:00:00 Unspecified 2013-12-17 20:51:22,998 [6] INFO QuestEWSService – TimeZone bias: -60 2013-12-17 20:51:22,999 [6] INFO QuestEWSService - StandardTime: -10-Sunday 5 0 2013-12-17 20:51:22,999 [6] INFO QuestEWSService - DaylightTime: -3-Sunday 5 -60 2013-12-17 20:51:22,999 [6] INFO QuestEWSService - Anette.Andersson@domino.testlabs.se 2013-12-17 20:51:25,298 [6] INFO QuestEWSService – Response: 2013-12-17 20:51:25,298 [6] INFO QuestEWSService - Email Address: anette.andersson@domino.testlabs.se, FreeBusy Count: 39 2013-12-17 20:51:25,305 [6] INFO QuestEWSService – 00:00:02.3123684 DominoFreeBusyService.wlog: 2013-12-17 20:51:23,587 [3] INFO FreeBusyWcfServiceBase – GetFreeBusyForUsers() Begin 2013-12-17 20:51:23,588 [3] INFO FreeBusyWcfServiceBase – Time span: 12/07/2013 23:00:00 Utc — 12/28/2013 23:00:00 Utc 2013-12-17 20:51:23,592 [3] INFO FreeBusyWcfServiceBase – Email addresses: 2013-12-17 20:51:23,592 [3] INFO FreeBusyWcfServiceBase - Anette.Andersson@domino.testlabs.se 2013-12-17 20:51:23,717 [3] INFO SmtpDomainMappings – smtpMappings count:0 2013-12-17 20:51:23,726 [3] INFO DominoFreeBusyConnector – GetFreeBusyInfo() enter 2013-12-17 20:51:23,726 [3] INFO DominoFreeBusyConnector – Get Domino user map. 2013-12-17 20:51:23,767 [3] INFO DominoSingleton – Ctor() enter 2013-12-17 20:51:23,768 [3] INFO DominoSingleton – Create DominoLibrary 2013-12-17 20:51:23,769 [3] INFO DominoSingleton – Initialize DominoLibrary 2013-12-17 20:51:23,823 [3] INFO DominoSingleton – Create UserMapRepository 2013-12-17 20:51:23,824 [3] INFO DominoUserMapRepository – ctor() enter; serverName = domino/target 2013-12-17 20:51:23,824 [3] INFO DominoUserMapRepository – ctor() exit 2013-12-17 20:51:23,824 [3] INFO DominoSingleton – Ctor() exit 2013-12-17 20:51:23,827 [3] INFO DominoUserMapRepository – GetDominoUserMap() enter; smtpDomain = testlabs.se 2013-12-17 20:51:23,827 [3] INFO DominoUserMapRepository – anette.andersson@domino.testlabs.se not found in cache. 2013-12-17 20:51:23,827 [3] INFO DominoUserMapRepository – 1 cache miss. 2013-12-17 20:51:23,837 [3] INFO NameRepository – GetTargetDominoUsers count:1 2013-12-17 20:51:23,838 [3] INFO NameRepository – Querying Domino Server Name=domino/target Domain=testlabs.se 2013-12-17 20:51:25,234 [3] INFO NameRepository – Completed Domino Query 2013-12-17 20:51:25,234 [3] INFO NameRepository – No error in Domino query 2013-12-17 20:51:25,235 [3] INFO NameRepository – Address To Locate: anette.andersson@domino.testlabs.se 2013-12-17 20:51:25,238 [3] INFO NameRepository – Domino Type: Person 2013-12-17 20:51:25,239 [3] INFO NameRepository – Domino Internet Address: Anette.Andersson@domino.testlabs.se 2013-12-17 20:51:25,239 [3] INFO NameRepository – Domino Full Name: CN=Anette Andersson/O=target 2013-12-17 20:51:25,239 [3] INFO NameRepository – Domino Mail File: mail\aanderss 2013-12-17 20:51:25,239 [3] INFO NameRepository – Domino Mail Domain: target 2013-12-17 20:51:25,239 [3] INFO NameRepository – Domino List Name: 2013-12-17 20:51:25,239 [3] INFO NameRepository – Domino Mail Server: CN=domino/O=target 2013-12-17 20:51:25,239 [3] INFO NameRepository – Adding Anette.Andersson@domino.testlabs.se to result set. 2013-12-17 20:51:25,239 [3] INFO NameRepository – finally – NameRepository :: GetTargetDominoUsers 2013-12-17 20:51:25,241 [3] INFO DominoUserMapRepository – 1 addresses found. 2013-12-17 20:51:25,241 [3] INFO DominoUserMapRepository – Adding anette.andersson@domino.testlabs.se to cache. 2013-12-17 20:51:25,241 [3] INFO DominoUserMapRepository – GetDominoUserMap() exit 2013-12-17 20:51:25,241 [3] INFO DominoFreeBusyConnector – 1 Domino domain users found. 2013-12-17 20:51:25,241 [3] INFO DominoFreeBusyConnector – Filter list to SMTP Domino domain users. 2013-12-17 20:51:25,241 [3] INFO DominoFreeBusyConnector – Get Free/Busy information for each valid user in SMTP Domino domain user list. 2013-12-17 20:51:25,241 [3] INFO DominoFreeBusyConnector – Get live Free/Busy for Anette.Andersson@domino.testlabs.se 2013-12-17 20:51:25,254 [3] INFO DominoLibrary – Sending request to Domino for free busy information. 2013-12-17 20:51:25,263 [3] INFO DominoLibrary – Domino response processing complete. 2013-12-17 20:51:25,275 [3] INFO DominoFreeBusyConnector – Add to result list 2013-12-17 20:51:25,275 [3] INFO DominoFreeBusyConnector – Sort the result list. 2013-12-17 20:51:25,278 [3] INFO DominoFreeBusyConnector – 1 Free/Busy results found 2013-12-17 20:51:25,278 [3] INFO DominoFreeBusyConnector – GetFreeBusyInfo() exit 2013-12-17 20:51:25,280 [3] INFO FreeBusyWcfServiceBase - Email Address: anette.andersson@domino.testlabs.se 2013-12-17 20:51:25,280 [3] INFO FreeBusyWcfServiceBase - Valid User=True, Busy Time count=39 2013-12-17 20:51:25,280 [3] INFO FreeBusyWcfServiceBase – GetFreeBusyForUsers() End Elapsed Time 00:00:01.6876990 Notes from the field Log reader tool – A good log reader, my favorite is the old tool that was included in the SMS 2003 resource kit called trace32.exe. It can be downloaded here. Domino SMTP routing – Until I have published a new article on this topic, see the existing one since it can be difficult to understand on how SMTP routing is working between the systems. See the post about it here: http://www.testlabs.se/blog/2011/01/03/coexistence-between-domino-and-exchange-2010-%e2%80%93-part-1-of-2/ Network Monitoring – Network Monitoring or Wireshark may sometimes be your best friend during troubleshooting network connectivity. Portqry is another tool that could be of great value during initial network verification. Don’t hesitate to comment if you would like to add anything or if you have other experiences, I will add it into the post and link your blog. I have decided that I won’t publish any article about the Migration Manager product. If anyone are interested of writing one, I’m glad to support and review the article. If interested, contact me at: jonas.andersson@testlabs.se. I will take a break from the migration articles for a while now and write about other topics that readers hopefully find interesting reading.
  5. Published: 2013-11-11 Updated: - Version: 1.0 The previous post took us through the technical prerequisites, these should now be ready and in place before installing and configuring Coexistence Manager for Notes (CMN). Before going into any details, if you are planning to do have a coexistence scenario between Domino and Exchange, you may want to consider using Dell Software’s Coexistence Manager for Notes. However, one important thing to mention is that there is a requirement from the vendor, to use certified people for the project. This blog post is based on Coexistence Manager for Notes version 3.5.1.51. Some of you might know that I wrote some articles regarding this topic two years ago, the configuration has changed a bit. I want to share it with the community and I hope you enjoy reading it. Read the other parts: Part 1: Migrations – Overview Part 2: Prerequisites for Domino/Notes migrations Part 3: Migrating Domino/Notes to Exchange 2013 On-premise Part 4: Migrating Domino/Notes to Office 365 Part 5: Migrating Resources Mailboxes, Mail-In databases and Groups Part 6: Prerequisites for Coexistence Manager for Notes with Exchange 2013 On-premise Part 8: Configuring Coexistence Manager for Notes with Office 365 Part 9: Prerequisites for Migration Manager Exchange Part 10: Migrating User Mailboxes from Exchange 2003 to Exchange 2013 using Migration Manager Part 11: Migrating User Mailboxes from Exchange On-premise to Office 365 Installation of Coexistence Manager for Notes (CMN) There is no need for further description on how to proceed with the installation of CMN, select the features that should be used, then it’s a “next-next-finish” installation. Licensing Startup “Quest Coexistence Manager for Notes Management Console” and go to “Common – Licensing” to provide a valid license file. Mail Connector configuration This post is not about how to create the mail flow configuration between Exchange and Domino since I assume, if you’re working and reading this topic, you’re familiar with how to create Send/Receive connectors in Exchange and Domain documents and Connection documents in Domino. I will, however, post an article on how to configure Exchange and Domino regarding the mail flow. Let’s configure CMN regarding mail flow, startup “Quest Coexistence Manager for Notes Management Console” and go to “Mail Connector”. Go to “Inbound Servers”, remove any default values, add all incoming servers, both source and target servers. Just make sure to specify their function (Server type). When all are added, it will look similar to the picture below. Go to “Outbound Servers”, remove any default values. Either use the “Add” button or if you’re about to add the same as the Inbound, then use the “Copy from Inbound Servers” button. After the servers are added, it will look similar as the picture below. For Notes Doc Links, I will use the option “Notes links (Requires Notes client on clients)”, but you should select the option that will provide the best solution in each scenario. I’m using the default settings for Network settings. If needed, TLS can be used and it’s in this window the configuration takes place. In my lab environment, I’m not using TLS. I’m using the default settings for Advanced Message settings. I prefer to use the option “Rewrite Notes Common Names”, so it becomes more user-friendly and easier to read than a long Domino displayname. Other options are not enable, use them if needed. I’m using the default settings for Message Content Limits settings. In the lab environment I’m not using the sub-domain option. However, if needed, here is the place to configure it. Active Mail, it requires Notes client 7.0.3, 7.0.4 or 8.0 on the CMN server. It also requires the Notes client on the clients for being able to use the feature. Default settings in Notification messages. Here is a sample of the “ResourcesMap.tsv” file that’s used for mapping resources so they can be booked from Exchange/Outlook. Import the “ResourcesMap.tsv” file, just verify the imported items and change the “Resource type” if they are not correct or configured. Directory Synchronization configuration Let’s walk through the directory synchronization, which is required to get Free/Busy to work properly. It’s required to provision users as contact objects. With CMN 3.5.x, the directory synchronization uses a new module, which uses SQL for its configuration. Just see my picture below as an example of the SQL configuration. The configuration can be found under “Directory Connector – SQL Settings”. Domino Users synchronization, go to “Directory Connector – Connector Settings”. Press “Add” button and “Next” in the window. Give the connector a friendly name like “Domino to AD – Users”, verify the “Direction” value and press “Next”. Type in Source information: domino server, username, password and LDAP port. Type in Target information: domain controller, username, password and LDAP port. In my scenario, I’ve specified a domain controller, so I enabled that checkbox. Specification of domain controllers are common in scenarios where you want to use the closest domain controller possible for faster reading and writing. Select the object to process – “Users & Contacts”, specify the OU that should be synchronized. Specify the target OU where objects will be created, also specify Target Search Base DN and load the Exchange attributes from AD and add them. If you want to specify a different targetAddress domain (forwarding) use the “Enable Internal Routing Domain” option and specify a domain in the value field. No connector order is selected. A synchronization schedule is created, in my example 5 AM and 2 PM. The appropriate timing depends on how often and how many changes are done within Domino. Press “Finish” to close the final window. Groups synchronization, go to “Directory Connector – Connector Settings”. Press “Add” button and “Next” in the window. Give the connector a friendly name like “Domino to AD – Groups”, verify the “Direction” value and press “Next”. Type in Source information: domino server, username, password and LDAP port. Type in Target information: domain controller, username, password and LDAP port. In my scenario, I’ve specified a domain controller, so I enabled that checkbox. Specification of domain controllers are common in scenarios where you want to use the closest domain controller possible for faster reading and writing. Select the object to process by selecting “Groups” and specify the OU that should be synchronized. Specify the target OU where objects will be created, also specify Target Search Base DN and load the Exchange attributes from AD and add them. If you want to specify a different targetAddress domain (forwarding) enable the option “Enable Internal Routing Domain” and specify a domain in the value field. No connector order is selected. A synchronization schedule is created, in my example 5 AM and 2 PM. The appropriate timing depends on how often and how many changes are done within Domino. Press “Finish” to close the final window. Resources synchronization, go to “Directory Connector – Connector Settings”. Press “Add” button and “Next” in the window. Give the connector a friendly name like “Domino to AD – Resources”, verify the “Direction” value and press “Next”. Type in Source information: domino server, username, password and LDAP port. Type in Target information: domain controller, username, password and LDAP port. In my scenario, I’ve specified a domain controller, so I enabled that checkbox. Specification of domain controllers are common in scenarios where you want to use the closest domain controller possible for faster reading and writing. Select what object to process “Resources”, specify the OU that should be synchronized. Specify the target OU where objects will be created, also specify Target Search Base DN and load the Exchange attributes from AD and add them. If you want to specify a different targetAddress domain (forwarding) enable the option “Enable Internal Routing Domain” and specify a domain in the value field. No connector order is selected. A synchronization schedule is created, in my example 5 AM and 2 PM. The appropriate timing depends on how often and how many changes are done within Domino. Press “Finish” to close the final window. Free/Busy configuration Since we now have the contact objects provisioned and the mail flow working, it’s time for the most involved part of the coexistence, the Free/Busy configuration. Qcalcon configuration The installation of Qcalcon on a Domino server is a standard “next-next-finish” procedure and a Domino server task will be created during the installation. The software can either be installed on an existing server or a dedicated Free/Busy server (I would recommend the latter IF possible). Start the Qcalcon configuration by starting the “Coexistence Management Console”, see picture below. Configure Qcalcon with the following properties (as an example): “Gateway Mail File Name: mail.box” (verify with Domino Administrator on which to use) ”Quest Exchange Free/Busy Connector Service Endpoint: cmn35“ (resolvable DNS name to CMN server) Note: You need to provide a valid license before the software can be used. Domino configuration, go to the CMN server and start the CMN console, then go to “Domino Free/Busy Connector”. Type in Domino configuration; ”Domino Server Name: domino/target” (specify server where Qcalcon is installed) ”Domino User fetch interval in minutes: 15” ”Domino User SMTP domain: target.local” ”Domino ID file path: C:\Temp\mmig.id” (Browse and select the ID file) ”Domino Password: *****” (Type in the password for that ID file) ”Enable Performance counters: Check” Go to “Quest Web Services” Type in Domino configuration; ”Quest Autodiscover Host Name: target.local” ”Quest Domino Free/Busy Connector Host Name: localhost” Don’t forget to create (if not done already as specified in part 6) the AvailabilityAddressSpace, or Free/Busy won’t work as expected. Exchange configuration, let’s finish the Free/Busy configuration by completing the Exchange part by going to “Exchange Free/Busy Connector – Exchange Free/Busy”. Type in Exchange configuration; ”Exchange Server location: EWS Endpoint” (more about these options can be found in the User Guide) ”Exchange Host Name: mail.testlabs.se” ”Exchange Online: Unchecked” ”Exchange Username: sa-cmnfb@testlabs.se” ”Exchange Password: *****” ”Show tentative As Busy: Yes” ”Enable Performance Counters: Enable” Use the Test button to verify that the functionality is working as expected. Note: Certificate needs to be deployed before a successful test. Additional Configurations Certificate/IIS Coexistence Manager relies on certificates since it’s using HTTPS for requests. This is important to understand. The provided “Quest Autodiscover URL” and “Quest EWS URL” is based on the value entered in the “Quest Autodiscover Host Name” field. This common name is used during Free/Busy requests and is required to be in the certificate used in IIS. It should be bound to IIS and the “QuestFreeBusy” website. Once the certificates have been deployed into the CMN server and IIS, use the Test buttons in the CMN console to verify the Quest Autodiscover functionality. In most cases, the autodiscover DNS record is pointed to the Exchange so, in order to test this functionality, use the host file and point it to CMN server. A last thing to verify is that the “QuestFreeBusy” website is enabled for HTTP (80) and HTTPS (443) traffic, since it’s a requirement. Note: If using internal PKI solution, make sure to deploy the whole certificate chain to the involved servers. When it comes to Office 365 deployments, this will be discussed in the next blog post. Autodiscover In most environments, the autodiscover DNS record is pointed to the Exchange. The workaround for proper flow of Free/Busy requests is to add a line into the host file at the CAS server(s). Like the example below: The Autodiscover is used since the mail contacts have a targetAddress with “@target.local” and there is a configured value for that domain in the AvailabilityAddressSpace configuration. Because of that, the request ends up checking these contacts Free/Busy externally via Autodiscover, which is pointed to CMN. EWS/WebServices Just make sure to verify that the value configured in the InternalUrl and ExternalUrl is found in the Exchange certificate. And also, if using Internal PKI, that the whole chain is deployed to the involved servers and clients. Verification of functionality Notes client (source) Mail flow A mail is sent from the Lotus Notes client (8.5.x) to two users that were migrated and now have an Exchange mailbox and are using Outlook 2013. The mail is a standard mail, see picture below. During the transport, these actions are being logged into the CMN.log file on the CMN server, some related entities can be found below: 2013-11-10 14:13:25,914 INFO CMN.logging [5] – Connection received from 172.16.1.16. 2013-11-10 14:13:26,274 INFO CMN.logging [5] – Message Number [1] on Thread [5] from Domino (172.16.1.16:3157) to Exchange (172.16.1.12:25): Connection established. 2013-11-10 14:13:41,900 INFO CMN.logging [Proxy 1] – Message Number [1] on Thread [3] from Domino (172.16.1.16:3157) to Exchange (172.16.1.12:25): Processed Message ID: OFA35F4382.5A84A034-ONC1257C1C.00482E50-C1257C1C.0048A376@target.local – Size: 578 – From: Jonas.Andersson@target.local – To: Anette.Andersson@exchange.testlabs.se, Klas.Andersson@exchange.testlabs.se – Processing Time: 1.792 Seconds – Changes: ActiveMailRemovedExtraneousAttachment, ActiveMailRemovedOnd, MimeModified In the destination mailbox it should look like the picture below And the reply from Outlook ends up in the source mailbox (Notes), just like the picture shows below Calendar Free/Busy A Free/Busy request was done by arranging a new meeting in the Notes client and selecting the migrated users. If the busytime lookup is working as expected, it should look similar to the picture below: During the busytime lookup requests, these actions are being logged into the QCalCon.wlog and ExchangeFreeBusyService.wlog file on the CMN server. Some examples on log entries can be found while doing the busytime lookup, see below: QCalCon.wlog: 2013-11-10 17:24:12,362 [LWPSCHEDGATEWAY] INFO ScheduleRequestManager – Message retrieved from queue 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – ScheduleRequestHandler() enter 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – NotesInitThread 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – Cast thread parameter to SchMsgWrapper instance 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – Release SCHMSG instance from SchMsgWrapper instance 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – Process SCHMSG message 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – SchContainer_DupHandle: Duplicate SCHMSG hContainer handle 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – SchContainer_GetRequest: Get hContainerObject request from message hContainer 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – UserNameList: 2 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager - Anette.Andersson@exchange.testlabs.se 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager - Klas.Andersson@exchange.testlabs.se 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – ClientNameList: 0 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – DominoServerNameChain: 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – Call GetFreeBusyForUsers 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – GetFreeBusyForUsers() enter 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – GetEmailsFromList() enter 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – Create SmtpEmailList 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – Create NameRepository 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – 2 entries in list 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – FullName:Anette.Andersson@exchange.testlabs.se 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – FullName:Klas.Andersson@exchange.testlabs.se 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – ScheduleRequestManager() exit 2013-11-10 17:24:12,362 [11] INFO ScheduleRequestManager – Call ExchangeFreeBusyService net.tcp to get Free/Busy information 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – GetFreeBusyForUsers() exit 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – GetFreeBusyForUsers returned 2 results 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Create SCHED_LIST result instance for user anette.andersson@exchange.testlabs.se 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Is a valid user. 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Allocate 8 bytes to hold SCHED_LIST 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Convert 0 Free/Busy times to TIMEDATE format 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Schedule_NewFromSchedList() 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Create SCHED_LIST result instance for user klas.andersson@exchange.testlabs.se 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Is a valid user. 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Allocate 2600 bytes to hold SCHED_LIST 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Convert 72 Free/Busy times to TIMEDATE format 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Schedule_NewFromSchedList() 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Set SCHMSG flags to SCHMSG_ReplyToRqst 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – MQPut: Place SCHMSG in output queue 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – SchContainer_FreeRequest: Free hContainerObject 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – SchContainer_Free: Free hContainer 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Delete SCHMSG message 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – NotesTermThread 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – Free/Busy request processing took 00:00:01.0212926 2013-11-10 17:24:13,377 [11] INFO ScheduleRequestManager – ScheduleRequestHandler() exit ExchangeFreeBusyService.wlog: 2013-11-10 17:24:12,376 [15] INFO ExchangeFreeBusyConnector – Initialize() Enter 2013-11-10 17:24:12,377 [15] INFO ExchangeConfiguration – User name credential is sa-cmnfb@testlabs.se 2013-11-10 17:24:12,378 [15] INFO ExchangeFreeBusyConnector – Initialize() Exit 2013-11-10 17:24:12,378 [15] INFO FreeBusyWcfServiceBase – GetFreeBusyForUsers() Begin 2013-11-10 17:24:12,378 [15] INFO FreeBusyWcfServiceBase – Time span: 11/07/2013 17:15:00 Local — 04/24/2014 17:15:00 Local 2013-11-10 17:24:12,378 [15] INFO FreeBusyWcfServiceBase – Email addresses: 2013-11-10 17:24:12,378 [15] INFO FreeBusyWcfServiceBase - Anette.Andersson@exchange.testlabs.se 2013-11-10 17:24:12,378 [15] INFO FreeBusyWcfServiceBase - Klas.Andersson@exchange.testlabs.se 2013-11-10 17:24:12,379 [15] INFO ExchangeFreeBusyConnector – GetFreeBusyInfo() Begin 2013-11-10 17:24:12,379 [15] INFO ExchangeFreeBusyConnector - Email Addressees (Count=2), Start=11/07/2013 00:00:00 (Utc), End=04/24/2014 00:00:00 (Utc) 2013-11-10 17:24:12,379 [15] INFO ExchangeFreeBusyConnector - anette.andersson@exchange.testlabs.se 2013-11-10 17:24:12,379 [15] INFO ExchangeFreeBusyConnector - klas.andersson@exchange.testlabs.se 2013-11-10 17:24:12,379 [15] INFO ExchangeConfiguration – User name credential is sa-cmnfb@testlabs.se 2013-11-10 17:24:12,379 [15] INFO EwsWorker – Sending EWS request to Exchange 2013-11-10 17:24:13,117 [15] INFO EwsWorker – Receiving EWS response from Exchange 00:00:00.7369215 2013-11-10 17:24:13,117 [15] INFO EwsWorker – Sending EWS request to Exchange 2013-11-10 17:24:13,184 [15] INFO EwsWorker – Receiving EWS response from Exchange 00:00:00.0662414 2013-11-10 17:24:13,184 [15] INFO EwsWorker – Sending EWS request to Exchange 2013-11-10 17:24:13,247 [15] INFO EwsWorker – Receiving EWS response from Exchange 00:00:00.0627933 2013-11-10 17:24:13,247 [15] INFO EwsWorker – Sending EWS request to Exchange 2013-11-10 17:24:13,313 [15] INFO EwsWorker – Receiving EWS response from Exchange 00:00:00.0654069 2013-11-10 17:24:13,313 [15] INFO ExchangeFreeBusyConnector – GetFreeBusyInfo() End 00:00:00.9331625 2013-11-10 17:24:13,313 [15] INFO FreeBusyWcfServiceBase - Email Address: anette.andersson@exchange.testlabs.se 2013-11-10 17:24:13,313 [15] INFO FreeBusyWcfServiceBase - Valid User=True, Busy Time count=0 2013-11-10 17:24:13,313 [15] INFO FreeBusyWcfServiceBase - Email Address: klas.andersson@exchange.testlabs.se 2013-11-10 17:24:13,313 [15] INFO FreeBusyWcfServiceBase - Valid User=True, Busy Time count=72 2013-11-10 17:24:13,313 [15] INFO FreeBusyWcfServiceBase – GetFreeBusyForUsers() End Elapsed Time 00:00:00.9340514 Outlook 2013 (destination/target) Mail flow A mail is sent from the Outlook 2013 client to a user that has not been migrated and remains in Domino. The mail is a standard mail, see picture below. During the transport, these actions are being logged into the CMN.log file on the CMN server, some related entities can be found below: 2013-11-10 17:37:40,731 INFO CMN.logging [5] – Connection received from 172.16.1.12. 2013-11-10 17:37:40,734 INFO CMN.logging [5] – Message Number [4] on Thread [5] from Exchange (172.16.1.12:32641) to Domino (172.16.1.16:25): Connection established. 2013-11-10 17:37:40,798 INFO CMN.logging [Proxy 4] – Message Number [4] on Thread [12] from Exchange (172.16.1.12:32641) to Domino (172.16.1.16:25): Processed Message ID: 845c8150e7184c1794427a406e6e90e5@TLEX01.testlabs.se – Size: 3332 – From: klas.andersson@testlabs.se – To: Jonas.Andersson@target.local – Processing Time: .002 Seconds – Changes: NoChange In the destination mailbox (Lotus Notes) it should look like the picture below And the reply from Notes ends up in the target mailbox (Outlook), just like the picture shows below Calendar Free/Busy A Free/Busy request was done by arranging a new meeting in the Outlook 2013 client and selecting the Domino users. If the Free/Busy request lookup is working as expected, it should look similar to the picture below: During the busytime lookup requests, these actions are being logged into the QCalCon.wlog and ExchangeFreeBusyService.wlog file on the CMN server. Some examples on log entries can be found while doing the busytime lookup, see below: Autodiscover.wlog 2013-11-10 17:45:29,687 [6] INFO AutodiscoverPage – IsSecureConnection: True 2013-11-10 17:45:29,688 [6] INFO AutodiscoverPage – UserAgent: ASAutoDiscover/CrossForest/EmailDomain//15.00.0712.014 2013-11-10 17:45:29,790 [6] INFO AutodiscoverPage – UserHostName: 172.16.1.12 2013-11-10 17:45:29,790 [6] INFO AutodiscoverPage – UserHostAddress: 172.16.1.12 2013-11-10 17:45:29,883 [6] INFO AutodiscoverPage – Email Address: Jonas.Andersson@target.local 2013-11-10 17:45:29,883 [6] INFO AutodiscoverPage – Quest EWS URL: https://autodiscover.target.local/EWS/Service.asmx EWS.wlog: 2013-11-10 17:45:31,178 [1] INFO Global – Application_Start 2013-11-10 17:45:31,190 [1] INFO Global – Assembly Title: CMX.Apps.FreeBusy.ExchangeWebService 2013-11-10 17:45:31,191 [1] INFO Global – File Version: 3.5.1.51 2013-11-10 17:45:34,771 [6] INFO QuestEWSService – RequestedView: Detailed 2013-11-10 17:45:34,772 [6] INFO QuestEWSService – RequestedViewSpecified: True 2013-11-10 17:45:34,772 [6] INFO QuestEWSService – MergedFreeBusyIntervalInMinutes: 30 2013-11-10 17:45:34,773 [6] INFO QuestEWSService – TimeWindow: 11/03/2013 08:00:00 Unspecified — 12/03/2013 08:00:00 Unspecified 2013-11-10 17:45:34,775 [6] INFO QuestEWSService – TimeZone bias: -60 2013-11-10 17:45:34,776 [6] INFO QuestEWSService - StandardTime: -10-Sunday 5 0 2013-11-10 17:45:34,776 [6] INFO QuestEWSService - DaylightTime: -3-Sunday 5 -60 2013-11-10 17:45:34,776 [6] INFO QuestEWSService - Jonas.Andersson@target.local 2013-11-10 17:45:36,774 [6] INFO QuestEWSService – Response: 2013-11-10 17:45:36,774 [6] INFO QuestEWSService - Email Address: jonas.andersson@target.local, FreeBusy Count: 61 2013-11-10 17:45:36,778 [6] INFO QuestEWSService – 00:00:02.0071483 DominoFreeBusyService.wlog: 2013-11-10 17:45:35,142 [3] INFO FreeBusyWcfServiceBase – GetFreeBusyForUsers() Begin 2013-11-10 17:45:35,143 [3] INFO FreeBusyWcfServiceBase – Time span: 11/03/2013 07:00:00 Utc — 12/03/2013 07:00:00 Utc 2013-11-10 17:45:35,149 [3] INFO FreeBusyWcfServiceBase – Email addresses: 2013-11-10 17:45:35,149 [3] INFO FreeBusyWcfServiceBase - Jonas.Andersson@target.local 2013-11-10 17:45:35,235 [3] INFO SmtpDomainMappings – smtpMappings count:0 2013-11-10 17:45:35,242 [3] INFO DominoFreeBusyConnector – GetFreeBusyInfo() enter 2013-11-10 17:45:35,243 [3] INFO DominoFreeBusyConnector – Get Domino user map. 2013-11-10 17:45:35,328 [3] INFO DominoSingleton – Ctor() enter 2013-11-10 17:45:35,328 [3] INFO DominoSingleton – Create DominoLibrary 2013-11-10 17:45:35,330 [3] INFO DominoSingleton – Initialize DominoLibrary 2013-11-10 17:45:35,411 [3] INFO DominoSingleton – Create UserMapRepository 2013-11-10 17:45:35,412 [3] INFO DominoUserMapRepository – ctor() enter; serverName = domino/target 2013-11-10 17:45:35,412 [3] INFO DominoUserMapRepository – ctor() exit 2013-11-10 17:45:35,412 [3] INFO DominoSingleton – Ctor() exit 2013-11-10 17:45:35,416 [3] INFO DominoUserMapRepository – GetDominoUserMap() enter; smtpDomain = target.local 2013-11-10 17:45:35,416 [3] INFO DominoUserMapRepository – jonas.andersson@target.local not found in cache. 2013-11-10 17:45:35,416 [3] INFO DominoUserMapRepository – 1 cache miss. 2013-11-10 17:45:35,425 [3] INFO NameRepository – GetTargetDominoUsers count:1 2013-11-10 17:45:35,426 [3] INFO NameRepository – Querying Domino Server Name=domino/target Domain=target.local 2013-11-10 17:45:36,718 [3] INFO NameRepository – Completed Domino Query 2013-11-10 17:45:36,718 [3] INFO NameRepository – No error in Domino query 2013-11-10 17:45:36,719 [3] INFO NameRepository – Address To Locate: jonas.andersson@target.local 2013-11-10 17:45:36,720 [3] INFO NameRepository – Domino Type: Person 2013-11-10 17:45:36,721 [3] INFO NameRepository – Domino Internet Address: Jonas.Andersson@target.local 2013-11-10 17:45:36,721 [3] INFO NameRepository – Domino Full Name: CN=Jonas Andersson/O=target 2013-11-10 17:45:36,721 [3] INFO NameRepository – Domino Mail File: mail\janderss.nsf 2013-11-10 17:45:36,721 [3] INFO NameRepository – Domino Mail Domain: target 2013-11-10 17:45:36,721 [3] INFO NameRepository – Domino List Name: 2013-11-10 17:45:36,721 [3] INFO NameRepository – Domino Mail Server: CN=domino/O=target 2013-11-10 17:45:36,721 [3] INFO NameRepository – Adding Jonas.Andersson@target.local to result set. 2013-11-10 17:45:36,721 [3] INFO NameRepository – finally – NameRepository :: GetTargetDominoUsers 2013-11-10 17:45:36,722 [3] INFO DominoUserMapRepository – 1 addresses found. 2013-11-10 17:45:36,722 [3] INFO DominoUserMapRepository – Adding jonas.andersson@target.local to cache. 2013-11-10 17:45:36,722 [3] INFO DominoUserMapRepository – GetDominoUserMap() exit 2013-11-10 17:45:36,722 [3] INFO DominoFreeBusyConnector – 1 Domino domain users found. 2013-11-10 17:45:36,722 [3] INFO DominoFreeBusyConnector – Filter list to SMTP Domino domain users. 2013-11-10 17:45:36,722 [3] INFO DominoFreeBusyConnector – Get Free/Busy information for each valid user in SMTP Domino domain user list. 2013-11-10 17:45:36,722 [3] INFO DominoFreeBusyConnector – Get live Free/Busy for Jonas.Andersson@target.local 2013-11-10 17:45:36,730 [3] INFO DominoLibrary – Sending request to Domino for free busy information. 2013-11-10 17:45:36,737 [3] INFO DominoLibrary – Domino response processing complete. 2013-11-10 17:45:36,749 [3] INFO DominoFreeBusyConnector – Add to result list 2013-11-10 17:45:36,749 [3] INFO DominoFreeBusyConnector – Sort the result list. 2013-11-10 17:45:36,752 [3] INFO DominoFreeBusyConnector – 1 Free/Busy results found 2013-11-10 17:45:36,752 [3] INFO DominoFreeBusyConnector – GetFreeBusyInfo() exit 2013-11-10 17:45:36,754 [3] INFO FreeBusyWcfServiceBase - Email Address: jonas.andersson@target.local 2013-11-10 17:45:36,754 [3] INFO FreeBusyWcfServiceBase - Valid User=True, Busy Time count=61 2013-11-10 17:45:36,754 [3] INFO FreeBusyWcfServiceBase – GetFreeBusyForUsers() End Elapsed Time 00:00:01.6046657 Notes from the field Log reader tool – A good log reader, my favorite is the old tool that was included in the SMS 2003 resource kit called trace32.exe. It can be downloaded here. Domino SMTP routing – Until I have published a new article on this topic, see the existing one since it can be difficult to understand on how SMTP routing is working between the systems. See the post about it here: http://www.testlabs.se/blog/2011/01/03/coexistence-between-domino-and-exchange-2010-%e2%80%93-part-1-of-2/ Network Monitoring – Network Monitoring or Wireshark may sometimes be your best friend during troubleshooting network connectivity. Portqry is another tool that could be of great value during initial network verification. Don’t hesitate to comment if you would like to add anything or if you have other experiences, I will add it into the post and link your blog. Next post will be on the same topic, but using Office 365 instead of On-premise.
  6. I’ve updated a script that was intended for installing prerequisites for Exchange 2010 that were released by a couple of peoples (Anderson Patricio, Pat Richard and Bhargav Shukla). This script have now been updated and applies to Exchange 2013. It will help you with installing all prerequisites (features) plus the FilterPack(s) and the Unified Communications Managed API. It also provides the option to disable the UAC (User Access Control) and the Windows Firewall. You can download the script here Feel free to use it as much as you want, I just want to mention I do not provide support for it and there are no warranty. The script/code can be viewed below: ############################################################################# # Install-Exchange2013PreReqs.ps1 # Configures the necessary prerequisites to install Exchange 2013 on a # Windows Server 2008 R2 server or Windows Server 2012 server # # Updated by: Jonas Andersson # Original written by: Pat Richard, Anderson Patricio and Bhargav Shukla # # Some info taken from # http://www.ucblogs.net/blogs/exchange/archive/2009/12/12/Automated-prerequisite-installation-via-PowerShell-for-Exchange-Server-2010-on-Windows-Server-2008-R2.aspx">http://www.ucblogs.net/blogs/exchange/archive/2009/12/12/Automated-prerequisite-installation-via-PowerShell-for-Exchange-Server-2010-on-Windows-Server-2008-R2.aspx # http://msmvps.com/blogs/andersonpatricio/archive/2009/11/13/installing-exchange-server-2010-pre-requisites-on-windows-server-2008-r2.aspx">http://msmvps.com/blogs/andersonpatricio/archive/2009/11/13/installing-exchange-server-2010-pre-requisites-on-windows-server-2008-r2.aspx # http://www.bhargavs.com/index.php/powershell/2009/11/script-to-install-exchange-2010-pre-requisites-for-windows-server-2008-r2/">http://www.bhargavs.com/index.php/powershell/2009/11/script-to-install-exchange-2010-pre-requisites-for-windows-server-2008-r2/ ############################################################################# # Detect correct OS here and exit if no match if (-not((Get-WMIObject win32_OperatingSystem).OSArchitecture -eq '64-bit') -and (((Get-WMIObject win32_OperatingSystem).Version -eq "6.1.7601") -or (Get-WMIObject win32_OperatingSystem).Version -eq "6.2.9200")){ Write-Host "This script requires a 64bit version of Windows Server 2008 R2 or Windows Server 2012, which this is not." -ForegroundColor Red -BackgroundColor Black Exit } Function Disable-UAC(){ $path = "HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System" $a = Get-ItemProperty $path -Name EnableLUA if ($a | Select-String "0") { Write-Host "UAC is already disabled" -ForegroundColor Green return } if ($a | Select-String "1") { Write-Host "Enabled" -ForegroundColor Red Set-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System" -Name "EnableLUA" -Value 0 Write-host "Registry key HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA has been changed." -ForegroundColor yellow Write-Host "UAC is now disabled" -ForegroundColor Green } } Function Disable-FW(){ $status = netsh advfirewall show allprofiles state if ($status | Select-String "ON") { $enabled = $true } else { $enabled = $false } if ($enabled -eq $true) { netsh advfirewall set allprofiles state off Write-Host "Firewall is now disabled" -ForegroundColor yellow return } if ($enabled -eq $false) { Write-Host "Firewall is already disabled" -ForegroundColor Green } } Function InstallFilterPack(){ if (Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\{95140000-2000-0409-1000-0000000FF1CE}" -ErrorAction SilentlyContinue) { Write-host "FilterPack is already installed." -ForegroundColor yellow return } else { trap { Write-Host "Problem downloading FilterPackx64.exe. Please visit: <a href="http://www.microsoft.com/en-us/download/details.aspx?id=26604">http://www.microsoft.com/en-us/download/details.aspx?id=26604</a> and <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17062"'>http://www.microsoft.com/en-us/download/details.aspx?id=17062"">http://www.microsoft.com/en-us/download/details.aspx?id=17062"</a> break } #set a var for the folder you are looking for $folderPath = 'C:\Temp' #Check if folder exists, if not, create it if (Test-Path $folderpath){ Write-Host "The folder $folderPath exists." } else{ Write-Host "The folder $folderPath does not exist, creating..." -NoNewline New-Item $folderpath -type directory | Out-Null Write-Host "done!" -ForegroundColor Green } # Check if file exists, if not, download it $file1 = $folderPath+"\FilterPack64bit.exe" $file2 = $folderPath+"\filterpack2010sp1-kb2460041-x64-fullfile-en-us.exe" if (Test-Path $file1){ write-host "The file $file1 exists." } else { #Download Microsoft Filter Pack Write-Host "Downloading Microsoft Filter Pack..." -nonewline $clnt = New-Object System.Net.WebClient $url = "<a href="http://download.microsoft.com/download/0/A/2/0A28BBFA-CBFA-4C03-A739-30CCA5E21659/FilterPack64bit.exe"'>http://download.microsoft.com/download/0/A/2/0A28BBFA-CBFA-4C03-A739-30CCA5E21659/FilterPack64bit.exe"">http://download.microsoft.com/download/0/A/2/0A28BBFA-CBFA-4C03-A739-30CCA5E21659/FilterPack64bit.exe"</a> $clnt.DownloadFile($url,$file1) Write-Host "done!" -ForegroundColor Green } if (Test-Path $file2){ write-host "The file $file2 exists." } else { #Download Microsoft Filter Pack SP1 Write-Host "Downloading Microsoft Filter Pack SP1..." -nonewline $clnt = New-Object System.Net.WebClient $url = "<a href="http://download.microsoft.com/download/A/A/3/AA345161-18B8-45AE-8DC8-DA6387264CB9/filterpack2010sp1-kb2460041-x64-fullfile-en-us.exe"'>http://download.microsoft.com/download/A/A/3/AA345161-18B8-45AE-8DC8-DA6387264CB9/filterpack2010sp1-kb2460041-x64-fullfile-en-us.exe"">http://download.microsoft.com/download/A/A/3/AA345161-18B8-45AE-8DC8-DA6387264CB9/filterpack2010sp1-kb2460041-x64-fullfile-en-us.exe"</a> $clnt.DownloadFile($url,$file2) Write-Host "done!" -ForegroundColor Green } #Install Microsoft Filter Packs Write-Host "Installing Microsoft Filter Packs..." $args = "/quiet /norestart" $setup1 = (Start-Process $file1 -ArgumentList $args -Wait -PassThru).ExitCode if ($setup1 -eq 0) { write-host "Successfully installed $file1" -ForegroundColor Green } if ($setup1 -ne 0) { write-host "Failed!" -ForegroundColor Red } $setup2 = (Start-Process $file2 -ArgumentList $args -Wait -PassThru).ExitCode if ($setup2 -eq 0) { write-host "Successfully installed $file2" -ForegroundColor Green } if ($setup2 -ne 0) { write-host "Failed!" -ForegroundColor Red } } } Function InstallUMAPI(){ #Change reg key below! if (Get-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\UCMA4" -ErrorAction SilentlyContinue) { Write-host "Unified Communications Managed API 4.0 Runtime is already installed." -ForegroundColor yellow return } else { trap { Write-Host "Problem downloading UM API. Please visit: <a href="http://www.microsoft.com/en-us/download/details.aspx?id=34992"'>http://www.microsoft.com/en-us/download/details.aspx?id=34992"">http://www.microsoft.com/en-us/download/details.aspx?id=34992"</a> break } #set a var for the folder you are looking for $folderPath = 'C:\Temp' #Check if folder exists, if not, create it if (Test-Path $folderpath){ Write-Host "The folder $folderPath exists." } else{ Write-Host "The folder $folderPath does not exist, creating..." -NoNewline New-Item $folderpath -type directory | Out-Null Write-Host "done!" -ForegroundColor Green } # Check if file exists, if not, download it $file = $folderPath+"\UcmaRuntimeSetup.exe" if (Test-Path $file){ write-host "The file $file exists." } else { #Download Microsoft UM API Write-Host "Downloading Microsoft UM API..." -nonewline $clnt = New-Object System.Net.WebClient $url = "<a href="http://download.microsoft.com/download/2/C/4/2C47A5C1-A1F3-4843-B9FE-84C0032C61EC/UcmaRuntimeSetup.exe"'>http://download.microsoft.com/download/2/C/4/2C47A5C1-A1F3-4843-B9FE-84C0032C61EC/UcmaRuntimeSetup.exe"">http://download.microsoft.com/download/2/C/4/2C47A5C1-A1F3-4843-B9FE-84C0032C61EC/UcmaRuntimeSetup.exe"</a> $clnt.DownloadFile($url,$file) Write-Host "done!" -ForegroundColor Green } #Check/Install Media Foundation feature $mf = Get-WindowsFeature "Server-Media-Foundation" | select * Start-Sleep 2 if ($mf.Installed -eq $False) { Write-Host "Installing Media Foundation feature..." -ForegroundColor Green Add-Windowsfeature Server-Media-Foundation Write-Host "" Write-Host "Installing of Media Foundation feature completed." -ForegroundColor Green Write-Host "" Write-Host "Restart the server and restart the task" -ForegroundColor Red Write-Host "or else the UM API won't be installed" -ForegroundColor Red Write-Host "" return } if ($mf.Installed -eq $True) { #Install Microsoft UM API Write-Host "Installing Microsoft UM API..." -ForegroundColor Green $args = "/quiet /norestart" $setup = (Start-Process $file -ArgumentList $args -Wait -PassThru).ExitCode if ($setup -eq 0) { write-host "Successfully installed $file" -ForegroundColor Green } if ($setup -ne 0) { write-host "Failed!" -ForegroundColor Red } } } } Import-Module ServerManager $opt = "None" # Do { clear if ($opt -ne "None") {write-host "Last command: "$opt -foregroundcolor Yellow} write-host write-host Exchange Server 2013 - Prerequisites script write-host Please, select which role you are going to install.. write-host write-host '1) Client Access Server' write-host '2) Mailbox' write-host '3) Typical (CAS/Mailbox)' write-host write-host '10) Install Microsoft Filter Pack 2.0' write-host ' Required if installing Mailbox Server roles' -foregroundcolor yellow write-host ' Automatically set for options 2 and 3' -foregroundcolor yellow write-host '11) Install Microsoft UM API' write-host ' Required if installing Mailbox Server roles' -foregroundcolor yellow Write-Host '12) Disable UAC' Write-Host '13) Disable Firewall' write-host write-host '15) Restart the Server' write-host '16) End' write-host $opt = Read-Host "Select an option.. [1-14]? " switch ($opt) { 1 { # Windows Server 2008 R2 SP1 if ((Get-WMIObject win32_OperatingSystem).Version -eq "6.1.7601") { Import-Module ServerManager Add-WindowsFeature "Desktop-Experience", "NET-Framework", "NET-HTTP-Activation", "RPC-over-HTTP-proxy", "RSAT-Clustering", "RSAT-Web-Server", "WAS-Process-Model", "Web-Asp-Net", "Web-Basic-Auth", "Web-Client-Auth", "Web-Digest-Auth", "Web-Dir-Browsing", "Web-Dyn-Compression", "Web-Http-Errors", "Web-Http-Logging", "Web-Http-Redirect", "Web-Http-Tracing", "Web-ISAPI-Ext", "Web-ISAPI-Filter", "Web-Lgcy-Mgmt-Console", "Web-Metabase", "Web-Mgmt-Console", "Web-Mgmt-Service", "Web-Net-Ext", "Web-Request-Monitor", "Web-Server", "Web-Stat-Compression", "Web-Static-Content", "Web-Windows-Auth", "Web-WMI" -restart } # Windows Server 2012 if ((Get-WMIObject win32_OperatingSystem).Version -eq "6.2.9200") { Install-WindowsFeature "AS-HTTP-Activation", "Desktop-Experience", "NET-Framework-45-Features", "RPC-over-HTTP-proxy", "RSAT-Clustering", "RSAT-Clustering-CmdInterface", "RSAT-Clustering-Mgmt", "RSAT-Clustering-PowerShell", "Web-Mgmt-Console", "WAS-Process-Model", "Web-Asp-Net45", "Web-Basic-Auth", "Web-Client-Auth", "Web-Digest-Auth", "Web-Dir-Browsing", "Web-Dyn-Compression", "Web-Http-Errors", "Web-Http-Logging", "Web-Http-Redirect", "Web-Http-Tracing", "Web-ISAPI-Ext", "Web-ISAPI-Filter", "Web-Lgcy-Mgmt-Console", "Web-Metabase", "Web-Mgmt-Console", "Web-Mgmt-Service", "Web-Net-Ext45", "Web-Request-Monitor", "Web-Server", "Web-Stat-Compression", "Web-Static-Content", "Web-Windows-Auth", "Web-WMI", "Windows-Identity-Foundation" -restart } } 2 { # Windows Server 2008 R2 SP1 if ((Get-WMIObject win32_OperatingSystem).Version -eq "6.1.7601") { Import-Module ServerManager InstallFilterPack Add-WindowsFeature "Desktop-Experience", "NET-Framework", "NET-HTTP-Activation", "RPC-over-HTTP-proxy", "RSAT-Clustering", "RSAT-Web-Server", "WAS-Process-Model", "Web-Asp-Net", "Web-Basic-Auth", "Web-Client-Auth", "Web-Digest-Auth", "Web-Dir-Browsing", "Web-Dyn-Compression", "Web-Http-Errors", "Web-Http-Logging", "Web-Http-Redirect", "Web-Http-Tracing", "Web-ISAPI-Ext", "Web-ISAPI-Filter", "Web-Lgcy-Mgmt-Console", "Web-Metabase", "Web-Mgmt-Console", "Web-Mgmt-Service", "Web-Net-Ext", "Web-Request-Monitor", "Web-Server", "Web-Stat-Compression", "Web-Static-Content", "Web-Windows-Auth", "Web-WMI" -restart } # Windows Server 2012 if ((Get-WMIObject win32_OperatingSystem).Version -eq "6.2.9200") { InstallFilterPack Install-WindowsFeature "AS-HTTP-Activation", "Desktop-Experience", "NET-Framework-45-Features", "RPC-over-HTTP-proxy", "RSAT-Clustering", "RSAT-Clustering-CmdInterface", "RSAT-Clustering-Mgmt", "RSAT-Clustering-PowerShell", "Web-Mgmt-Console", "WAS-Process-Model", "Web-Asp-Net45", "Web-Basic-Auth", "Web-Client-Auth", "Web-Digest-Auth", "Web-Dir-Browsing", "Web-Dyn-Compression", "Web-Http-Errors", "Web-Http-Logging", "Web-Http-Redirect", "Web-Http-Tracing", "Web-ISAPI-Ext", "Web-ISAPI-Filter", "Web-Lgcy-Mgmt-Console", "Web-Metabase", "Web-Mgmt-Console", "Web-Mgmt-Service", "Web-Net-Ext45", "Web-Request-Monitor", "Web-Server", "Web-Stat-Compression", "Web-Static-Content", "Web-Windows-Auth", "Web-WMI", "Windows-Identity-Foundation" -restart } } 3 { if ((Get-WMIObject win32_OperatingSystem).Version -eq "6.1.7601") { Import-Module ServerManager InstallFilterPack Add-WindowsFeature "Desktop-Experience", "NET-Framework", "NET-HTTP-Activation", "RPC-over-HTTP-proxy", "RSAT-Clustering", "RSAT-Web-Server", "WAS-Process-Model", "Web-Asp-Net", "Web-Basic-Auth", "Web-Client-Auth", "Web-Digest-Auth", "Web-Dir-Browsing", "Web-Dyn-Compression", "Web-Http-Errors", "Web-Http-Logging", "Web-Http-Redirect", "Web-Http-Tracing", "Web-ISAPI-Ext", "Web-ISAPI-Filter", "Web-Lgcy-Mgmt-Console", "Web-Metabase", "Web-Mgmt-Console", "Web-Mgmt-Service", "Web-Net-Ext", "Web-Request-Monitor", "Web-Server", "Web-Stat-Compression", "Web-Static-Content", "Web-Windows-Auth", "Web-WMI" -restart } # Windows Server 2012 if ((Get-WMIObject win32_OperatingSystem).Version -eq "6.2.9200") { InstallFilterPack Install-WindowsFeature "AS-HTTP-Activation", "Desktop-Experience", "NET-Framework-45-Features", "RPC-over-HTTP-proxy", "RSAT-Clustering", "RSAT-Clustering-CmdInterface", "RSAT-Clustering-Mgmt", "RSAT-Clustering-PowerShell", "Web-Mgmt-Console", "WAS-Process-Model", "Web-Asp-Net45", "Web-Basic-Auth", "Web-Client-Auth", "Web-Digest-Auth", "Web-Dir-Browsing", "Web-Dyn-Compression", "Web-Http-Errors", "Web-Http-Logging", "Web-Http-Redirect", "Web-Http-Tracing", "Web-ISAPI-Ext", "Web-ISAPI-Filter", "Web-Lgcy-Mgmt-Console", "Web-Metabase", "Web-Mgmt-Console", "Web-Mgmt-Service", "Web-Net-Ext45", "Web-Request-Monitor", "Web-Server", "Web-Stat-Compression", "Web-Static-Content", "Web-Windows-Auth", "Web-WMI", "Windows-Identity-Foundation" -restart } } 10 { # future - auto detect Internet access write-host 'Can this server access the Internet?' $filtpack = read-host 'Please type (Y)es or (N)o...' switch ($filtpack) { Y { InstallFilterPack } N {Write-warning 'Please download and install Microsoft Filter Pack from here: <a href="http://www.microsoft.com/en-us/download/details.aspx?id=26604">http://www.microsoft.com/en-us/download/details.aspx?id=26604</a> and <a href="http://www.microsoft.com/en-us/download/details.aspx?id=17062'}">http://www.microsoft.com/en-us/download/details.aspx?id=17062'}</a> } } 11 { # future - auto detect Internet access write-host 'Can this server access the Internet?' $umapi = read-host 'Please type (Y)es or (N)o...' switch ($umapi) { Y { InstallUMAPI } N {Write-warning 'Please download and install Microsoft UM API from here: <a href="http://www.microsoft.com/en-us/download/details.aspx?id=34992'}">http://www.microsoft.com/en-us/download/details.aspx?id=34992'}</a> } } 12 { Disable-UAC } 13 { Disable-FW } 15 { Restart-Computer } 16 { Write-Host "Exiting..." Exit } default {write-host "You haven't selected any of the available options. "} }
  7. Hi everyone, Just want to mention that my book published at Packt Publishing will soon be released (mid June). It can be found here: http://www.packtpub.com/microsoft-exchange-server-2013-powershell-2e-cookbook/book I hope you will find it interesting Cheers
  8. Introduction Since Exchange Server 2013 reached RTM the 11th of October, and finally it was published to MSDN the 24th of October. This post is based on the RTM version of Exchange 2013. I decided to write a post that included both the KEMP configuration together with the Exchange 2013 configuration. I’ve also seen that Jaap Wesselius have posted an article regarding this topic already, it’s my hope that I can fill the gap regarding the complete configuration of both Exchange and the load balancer. For illustrating my lab environment, see the picture below. On the left side is the “client” which tries to connect, in the middle is the load balancers and to the right are my two Exchange 2013 servers. I did decide to have one namespace per service for having a better flexibility, however this is NOT required. But the advantage for having it like this is that the load balancer can check the health of each component. If one component is not working, it’s just disabling that service from the corresponding server, and not the whole server. But an disadvantage is a increased cost for the certificate and the load balancer get’s a bit more complex. I’m using the Virtual LoadMaster which resides in different versions (in the end of my post I will provide some links regarding versions etc). Initial configuration My configuration is a two-leg load balancer, where the first leg is placed as an administrative IP (management IP) and the other leg (NIC) is placed into my server/client segment. The initial configuration is done by providing a license key. Go to System Configuration –> Interfaces –> eth0 for configuring the IP address of the first network card. System Configuration –> Local DNS Configuration –> Hostname configuration for giving the VLM a hostname. System Configuration –> Local DNS Configuration –> DNS configuration for configuring the VLM with a domain and DNS server. System Configuration –> Route Management –> Default Gateway for configuring the VLM with a default gateway. Often it’s required to have the VLM understand other networks and can route traffic to them, for configuring additional route go to System Configuration –> Route Management –> Additional Routes. Don’t forget to configure the date and time on the VLM, go to System Configuration –> System Administration –> Date/Time. I’ve configured to use “ntp.lth.se” as my NTP server, it’s recommended to use the NTP option. When the configuration is done, a good tip is to take a backup of it, go to System Configuration –> System Administration –> Backup/Restore. High Availability configuration Kemp is providing a high availability cluster of two load balancing nodes, where one is active and one is passive (standby). I’ve been playing around with it and it works really good. The passive kicks in right away when the active one is broken or restarted/shutdown. During a restart of the active node the passive becomes the active node. In general, they share a cluster IP/name where the configuration is done and on each LB node the local settings can be done such as configuring date/time, IP addresses etc. Start with the first node, for configuring this go to System Configuration –> Miscellaneous Options –> HA Parameters. Set it to “HA Mode: HA (First) Mode”. Go to System Configuration –> Interfaces –> eth0. Give the load balancer cluster a IP address and also provide the IP address for the second node. Don’t forget to press the “Set Shared address” and “Set Partner address” buttons for saving the configuration. Then go back to System Configuration –> System Administration –> System Reboot. Restart the first node. When the first node is back online, continue with the second node. Go to System Configuration –> Miscellaneous Options –> HA Parameters. Set it to “HA Mode: HA (Second) Mode”. Example of my first node. Example of my second node. Creating and configuring load balancing services I will create two examples for load balancing services, one for OWA and one for Outlook Anywhere. Using these examples, you can easily creating services by yourself for the other ones. OWA Go to Virtual Services –> View/Modify Services –> Add New. Type in the IP address for the service in the Virtual Address field, together with port, protocol and name. Press “Add this Virtual Service”. Make sure that “Force L7” is checked, but the “L7 Transparency” is unchecked. Since Exchange 2013 doesn’t require persistence anymore, make sure that the option is set to “None”. For the load method/Scheduling method, I’m using Round-Robin which is pretty much spreading the load on all servers. Under “Real Servers”, let’s configure the health checks. Make sure it’s set to use HTTPS protocol. This together with URL: /owa. Don’t forget to press the “Set URL” button for saving the settings. Let’s press the “Add New…” button under “Real Servers”. Add your Exchange 2013 Client Access servers. When all servers are added, press the Back button. When everything is setup it should look like the figure below. When you’re satisfied with the configuration, press the Back button. The services should then show up as green if the protocols are available. Outlook Anywhere Go to Virtual Services –> View/Modify Services –> Add New. Type in the IP address for the service in the Virtual Address field, together with port, protocol and name. Press “Add this Virtual Service”. Make sure that “Force L7” is checked, while the “L7 Transparency” is unchecked. Since Exchange 2013 doesn’t require persistence anymore, make sure that the option is set to “None”. For the load method/Scheduling method, I’m using “Round-Robin” which is spreading the load to the servers. Under “Real Servers”, let’s configure the health checks. Make sure it’s set to use HTTPS protocol. This together with URL: /rpc. Don’t forget to press the “Set URL” button for saving the settings. Let’s press the “Add New…” button under “Real Servers”. Add your Exchange 2013 Client Access servers. When all servers are added, press the Back button. Everything is now setup for load balancing the Outlook Anywhere function. In the services console, it should look like below if the health is successfully verified. Note: In my lab environment I’ve decided to not use L7 transparency since I don’t have any use for it. It is used when the Client Source IP address needs to show up at the CAS Servers. This can sometimes be important when using SMTP filters. So for proper load balancing, the traffic needs to flow through the load balancer, both back and forth. Therefore you need to change the Default Gateway settings of your servers, when you are activating the L7 Transparency. Final tests Let’s start with testing the load balancing functions so that Outlook is able to connect and that the connections are spread throughout the servers. Here’s my final configuration, for clarifying that I’m using five different VIP’s, one for each service. The figure below shows that Outlook 2013 profile is getting connected, I was using the autodiscover feature for configuring the Outlook profile. Both the InternalHostname and the ExternalHostname is configured to: outlook.testlabs.se in my scenario, on both my servers. For authentication I’m using NTLM. Since Outlook 2013 was worked fine, it’s up to OWA to show up. I reached the form-based authentication page and put in my credentials and finally got to the Inbox. Did this a couple of times, together with login into the Admin Center for getting some more sessions in the load balancer. This for checking so that the VLM spreads the load between the servers in a good way. Below are two figures that shows how the sessions are spread between the servers. To me this looks really good! The first figure shows the servers and how the sessions are spread between them. The second figure does show the services instead of the servers, this together with the total amount of connections last minute and up to the last hour. These two figures together shows how the load is spread, since this is just a lab environment I don’t have an large amount of connections. It would be really interesting to see in a large enterprise environment how the load is spread between the servers. Helpful links General documentation http://www.kemptechn...m/documentation Sizing tool for load balancer (Exchange 2010) http://www.kemptechn...hange-2010.html Deployment guide http://www.kemptechn...de_5_1_v1.6.pdf Compare Load Balancer models http://www.kemptechn...d-balancer.html Exchange Load Balancers http://www.kemptechn...hange-2010.html Virtual Load Balancers http://www.kemptechn...m-overview.html Multi-Site Load Balancers http://www.kemptechn...s/overview.html Thanks for reading! I hope that this was informative and interesting to read, please feel free to provide feedback Regards, Jonas Andersson
  9. In this series of posts, you can read about the fresh release of Exchange 2013 beta/Preview. The posts are done as “how-to” posts with configuration examples from both Exchange Administration Console (EAC) and Exchange Management Shell (EMS). Earlier parts can be found below: Part 1: Installation guide Part 2: Basic configuration Part 3: Continue of configuration, URL’s etc. At the end of the post, I will link to some interesting TechNet articles around High Availability, Disaster Recovery, Site resilience and Public Folder migration. Note: My posts around Exchange 2013 Preview/beta are based on Beta information and it could be changed before it will be released (RTM). Database Availability Group (DAG) If this expression is new to you, here are some background information. The DAG is the new cluster technology from Exchange 2010 and also included in 2013. It give us the opportunity to have a mailbox database replicated between two or more servers, the DAG can have utilize up to 16 copies of each database (16 different servers). The advantage of this is that if one server fails, it’s easy and very fast for doing switchover/failover to another server. Some interesting changes around databases are that each database runs under it’s own process in Windows. Store (ESE) is totally rewritten, again.. which means you can’t use databases from older versions of Exchange directly on Exchange 2013. I have also read that IOPS requirements for databases have been reduced with another 50% from Exchange 2010, but I haven’t read it officially so maybe it’s just a rumor. We’ll see what happens when it’s being release and probably Microsoft will release an update mailbox calculator. DAG is available for both Standard and Enterprise version of Exchange, and supported to run on both Windows 2008 R2 and Windows Server 8. Though all DAG members needs to run the same OS version. Let’s get ready to create the DAG and add the Databases as copies on each DAG member/node. Using EAC: It’s time to like the new EAC “console”. Running “ipconfig” on both mailbox servers, for checking the IP addresses. Both for the MAPI network and the Replication network. Go into Control Panel and check the network interfaces, Login to the EAC, go to Servers and select Database Availability Group. Press Add button (+). Type in DAG name, Witness Server, Witness directory and DAG IP. Press Save. When the DAG is created, select it and Press Edit. Check the option “Configure database availability group network manually”. Press Save. It’s now time for adding the mailbox servers into the DAG, this by pressing “Manage membership” button. Press the Add button (+) and add the mailbox servers. Add the mailbox servers that should reside in the DAG. Press OK. Press Save. The configuration now gets saved, failover clustering was installed on mailbox servers. Press Close. Next thing to do it the DAG Networks, as you can see in the right bottom corner, a network called “MapiDagNetwork” has been created. I want to have the control over these networks so I will create my own. Start by pressing “New DAG Network”. I’m about to create two new networks. I will give the first network a name like MAPI Network, and assign the Subnet to it where the clients are supposed to connect. Press Save. My second network will be called Replication Network, since that it’s purpose and also assign it to the correct Subnet. Press Save. Since we now have created those two network, let’s remove the automatic created one by pressing “Remove” button. Press OK. The MAPI Network is not supposed to be used as replication network, so let’s disable that function by pressing “Disable Replication” on the MAPI network. Press OK. The DAG should now show two networks called MAPI and Replication. The MAPI Network should not be enabled for replication. Final DAG configuration The last step (just a recommendation) is to enable the DAC mode, this for preventing split brain syndrome. Which means that you end up with having same database mounted on two (or more) different servers. More info about DAC mode can be found on the link in the end of the post. This can’t be done through EAC (maybe that will change to RTM). So let’s start up Exchange Management Shell (EMC). Set-DatabaseAvailabilityGroup –Identity DAG01 –DatacenterActivationMode DagOnly Database copies On each mailbox database we now need to add a copy to another server for having the redundancy. In the menu, go to Databases and select one database, then press the Add database copy button. Specify mailbox server that at the moments doesn’t hold a copy of the database and add it by pressing the browse button. Press Save. Note: In this menu you also have the option to configure lag time (if using lagging node). The database now get’s copied (Seeding). Then do the same procedure on all of your databases. Press Close, when the operation is done. Do the same procedure on all of your databases. The seeding operation is running. Press Close. It might take a while (some minutes..) until it get’s Healthy and everything has been checked and verified. In my test environment it took around 15min to be fine. It should look like the picture below when everything is completed. Using PowerShell: The Web interface is nice to work with. But I prefer the PowerShell, because I have the full control over what’s going on. Let’s start with creating the DAG by using the command below: New-DatabaseAvailabilityGroup –Name DAG01 –WitnessServer TLCAS01 –WitnessDirectory C:\FSW_DAG01 –DatabaseAvailabilityGroupIpAddresses 172.16.1.15 Configure the DAG so that the networks can be manually configured: Set-DatabaseAvailabilityGroup –Identity DAG01 –ManualDagNetworkConfiguration $True Add the mailbox servers into the DAG: Add-DatabaseAvailabilityGroupServer –Identity DAG01 –MailboxServer TLMB01 Add-DatabaseAvailabilityGroupServer –Identity DAG01 –MailboxServer TLMB02 Enable DAC mode for the DAG: Set-DatabaseAvailabilityGroup –Identity DAG01 –DatacenterActivationMode DagOnly List the DAG Networks: Get-DatabaseAvailabilityGroupNetwork Create two new DAG Networks, one for Mapi and one for Replication: New-DatabaseAvailabilityGroupNetwork –DatabaseAvailabilityGroup DAG01 –Name Mapi –Description “Mapi Network” –ReplicationEnabled $False –Subnets “172.16.1.0/24” New-DatabaseAvailabilityGroupNetwork –DatabaseAvailabilityGroup DAG01 –Name Replication –Description “Replication Network” –ReplicationEnabled $True –Subnets “10.0.0.0/8” Remove the automated created network, it will not be used: Remove-DatabaseAvailabilityGroupNetwork –Identity DAG01\MapiDagNetwork Database copies On each mailbox database we now need to add a copy to another server for having the redundancy. Specify a mailbox server that at the moments doesn’t hold a copy of the database and add it by running the following commands. Add-MailboxDatabaseCopy –Identity DB01 –MailboxServer TLMB02 Add-MailboxDatabaseCopy –Identity DB02 –MailboxServer TLMB02 Add-MailboxDatabaseCopy –Identity DB03 –MailboxServer TLMB02 Verify the replication status on each mailbox server: Get-MailboxDatabaseCopyStatus –Server TLMB01 Get-MailboxDatabaseCopyStatus –Server TLMB02 Public Folders The Public Folder databases are now gone, and transferred to “normal” mailboxes instead. The advantage of this is that the mailbox itself can now be replicated using DAG technology. This doesn’t mean that the public folder contents is replicated, it’s still required that you configure the public folder replication for the contents. With “normal” mailbox I mean that they reside in the mailbox databases, just like user mailboxes does. However they can in someway be compared to shared and room, those are also special mailboxes. If you decide to use the Public Folders in Exchange 2013, the first step will be to create a mailbox that holds the public folder hierarchy. This will be the writeable copy, you can have copies of the hierarchy. But you can only have one that is allowed to make changes/writeable. How can the hierarchy mailbox be created? Using EAC: Go to Public Folders section, this is the first warning/error message you will receive. It means that you don’t have any public folder hierarchy (mailbox) created yet. Go to the second public folder selection called “Public Folders Mailboxes”. Add (+), create the first mailbox for the public folders, so it’s hierarchy can be saved. Give the mailbox a friendly name, example: PF_Hierarchy, place it into an organizational unit and select a mailbox database where it should be saved into. Press Save. Now when the hierarchy is created, let’s create some test folders too. Go back to “Public Folders”, press the Add (+) button. Give the public folder a name. Press Save. If you want to configure any storage quota on the public folder content, press Edit and configure it. Statistics can also be found under Edit selection, which sometimes is valuable. Just for testing purposes I did mail-enable the folder. By pressing the Enable button. Press Yes. Let’s check the properties for the folder again, now we see that we have lots of new settings. Here’s a small example how the Mail Flow settings looks like. Using PowerShell: Start up Exchange Management Shell, the following commands will be used for creating the public folder hierarchy and contents folder. Create the hierarchy by running the following command New-Mailbox –Name PF_Hierarchy –Alias PF_Hierarchy –Database DB01 –OrganizationalUnit Users This mailbox, like shared/room mailboxes is also disabled by default. This for not having the possibility to logon as this user. Let’s create the folder named Testlabs New-PublicFolder –Name Testlabs Finally, mail enable the public folder Enable-MailPublicFolder –Identity \Testlabs We have public folders located in Exchange 2007/2010, what about them? In the end of this post, you can find a link to a TechNet article, it provides you with a great step-by-step guide. I haven’t tried to migrate public folder contents from earlier versions of Exchange since SP3 for Exchange 2010 is required for having coexistence between Exchange 2010 and Exchange 2013. SP3 is right now under development/testing and no official information can be found. When I get my hands on SP3, this will be one of the first things to try out. Client Access Server Array In my previous blog post I did write about some news regarding MAPI and RPC, where I did mention what changes been made. It can be found here. The “new” Client Access Server role can now been seen as more of a traditional Front-End server. It utilize as a front-end connection point and redirects/proxies (depending on method) the clients to it’s correct mailbox server. After the architectural change around the CAS role, it’s now “stateless” which means there’s no need for the load balancer to configure affinity/sticky session. For example, it means that the clients is not required to have the connection established to the same CAS server for having the OWA to work. This means that all CAS servers now will serve all clients with connections to it’s mailbox endpoint server. How to create a client access array? Right now, I don’t see any specific reason for creating the CAS Array, since the traffic will be proxied from the CAS servers to the correct active Mailbox servers. In an upcoming blog post I will cover how to configure the load balancing for Exchange 2013. Upcoming topics: load balancing Exchange 2013 using different load balancers, database fail-over, move mailbox reports, disaster recovery etc. But first it’s time for 3 weeks of vacation, until then. Keep on reading the posts and you’re more than welcome to comment on them. Thanks for reading, I hope it did gave you some valuable information. More information: High Availability http://technet.micro...exchg.150).aspx DAC mode http://technet.micro...y/dd979790.aspx Client Access Server http://technet.micro...14(v=exchg.150) Public Folder migration scenario http://technet.micro...86(v=exchg.150)
  10. Here we go, this is the first part of Exchange 2013 Preview/beta. It's will walk you through the installation procedure using Windows 2008 R2 SP1. Since Exchange Server 2013 beta was released a couple of days ago I’m glad to announce that my first installation is done and here’s a complete walk through. My setup is basic, using one server as domain controller, Windows 2008 R2. Initially for Exchange I’m using 3 servers, 1 server for the CAS role and 2 servers for the Mailbox role. There are some prerequisites that need to be installed/removed before the installation of Exchange can take place. Note: It’s now recommended to install the Mailbox server first. So I’m starting with that server. Step 1. Install the administration pack using the commands below, make sure to restart the server before proceeding to step 2. Import-Module ServerManager Add-WindowsFeature RSAT-ADDS Step 2. Install the Windows features that Exchange uses, for Mailbox and CAS server use the command below: Import-Module ServerManager Add-WindowsFeature Desktop-Experience, NET-Framework, NET-HTTP-Activation, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Web-Server, WAS-Process-Model, Web-Asp-Net, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI Step 3. When the feature is completed. Continue with the installation of the required components, use the links below to download the components. .NET Framework 4.5 RC Windows Management Framework 4.0 Unified Communications Managed API 4.0, Core Runtime 64-bit Office 2010 Filterpack x64 Office 2010 Filterpack SP1 x64 KB 974405 (Windows Identity Foundation) KB 2619234 (RPC over HTTP) KB 2533623 (Remote code execution) Note: Make sure to uninstall the Visual C++ 11 Beta Redistributable (x64) before starting the Exchange 2013 installation. You can have a look at the setup.exe parameters using setup.exe /? setup.exe /help:install Step 4. Start the installation using unattended installation for the Mailbox server role setup.exe /mode:install /roles:Mailbox, ManagementTools /IAcceptExchangeServerLicenseTerms /InstallWindowsComponents /OrganizationName:Testlabs /TargetDir:"D:\Program Files\Microsoft\Exchange Server\V15" The installation process starts up and prepare the organization for Exchange 2013, install the necessary Windows components. The schema prep can also be done manually using setup.exe /preparead, I’ve chosen to go with the default behavior. When for the Mailbox server role installation is successfully finished it will tell you to restart the server. Step 5. Start the installation of the Windows features for the CAS server role Import-Module ServerManager Add-WindowsFeature RSAT-ADDS Add-WindowsFeature Desktop-Experience, NET-Framework, NET-HTTP-Activation, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Web-Server, WAS-Process-Model, Web-Asp-Net, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI Make sure to restart the server after the Windows features got installed. Step 6. Start the installation of the CAS server role setup.exe /mode:install /roles:ClientAccess, ManagementTools /IAcceptExchangeServerLicenseTerms /InstallWindowsComponents /OrganizationName:Testlabs /TargetDir:"D:\Program Files\Microsoft\Exchange Server\V15" Since this is the second server, the schema prep is already done so the installation will skip that step. When it’s finished it will look like the picture below, a restart of the server is required. The installation of both servers are now completed. Next blog post will be around how to configure Exchange 2013. Thanks for reading, looking forward to your comments about the post and also about Exchange 2013 in general. More information about the prerequisites can be found here. What’s new in Exchange 2013 Next blog post, Part 2: How to do the Basic configuration
  11. Yesterday I did write an article of how to install the new beta/preview of Exchange 2013. Follow the link below to read it Part 1 have now been published here, read it at the link below http://www.windows-noob.com/forums/index.php?/topic/6024-exchange-server-2013-preview-part-1-installation-guide/ http://www.testlabs....e-installation/
×