Office 365: Postilaatikoiden siirto pilveen


Office 365: Postilaatikoiden siirto pilveen



Onsight on käyttänyt Microsoftin Office 365 pilvipalveluita pari vuotta, itseasiassa beta- vaiheesta lähtien:

office365beta

Lync Online on ollut meillä tuotantokäytössä jo pitkään, samoin SharePoint Online. Exchange-palvelimessa teimme jo vanhalla 2010 versiolla hybridiasennuksen, mutta emme vielä siirtäneet omia sähköpostilaatikoitamme pilveen, lukuun ottamatta paria testipostilaatikkoa. Parin vuoden käytön jälkeen päätimme vihdoin siirtää myös omat sähköpostilaatikkomme pilveen. Siirron pitäisi onnistua ilman katkoksia, koska meillä on jo hybridiympäristö pystyssä. Valitsimme kuitenkin siirron ajankohdaksi viikonlopun, jotta se mahdollisimman vähän häiritsisi työntekoa ja mahdollisten ongelmien ilmetessä olisi sitten aikaa korjata niitä.

Siirron ajankohdaksi valikoitu elokuun viimeisen päivän, eli 31.8.2014. Ennen siirtoa muutin DNS-palvelimista MX-tietueiden TTL-arvot minimiin (600 sek), jotta tarvittaessa voi nopeastikin tehdä muutoksia sähköpostin ohjaukseen. Tämän jälkeen tarkistin Data Protection Manager -palvelimesta, että sähköpostien varmuuskopiot ovat ajan tasalla.

Aloitin työt ajamalla Exchange 2013 SP1 palvelimessa Hybrid Configuration Wizardin varmistaakseni että kaikki halutut domainit ovat listalla. Tämä päätyi kuitenkin seuraavaan virheilmoitukseen:

exchange-hybrid-virheilmoitus

Logitiedostosta ei löytynyt kovinkaan paljon lisätietoa:

[08/31/2014 07:25:57]   INFO : Successfully connected to Tenant

[08/31/2014 07:25:57]   INFO : Task=’Check Tenant Prerequisites’ Step=’CheckPrereqs’ START

[08/31/2014 07:25:57]   INFO : Hybrid Engine will now test tenant version.

[08/31/2014 07:25:57]   INFO : Session=Tenant Cmdlet=Get-OrganizationConfig START

[08/31/2014 07:25:58]   INFO : Session=Tenant Cmdlet=Get-OrganizationConfig FINISH Time=562.358ms

[08/31/2014 07:26:11]   ERROR : Subtask CheckPrereqs execution failed: Check Tenant Prerequisites Deserialization fails due to one SerializationException: Microsoft.Exchange.Compliance.Serialization.Formatters.BlockedTypeException: The type to be (de)serialized is not allowed: Microsoft.Exchange.Data.Directory.DirectoryBackendType,Microsoft.Exchange.Data.Directory, Version=15.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 at Microsoft.Exchange.Compliance.Serialization.Formatters.TypedSerializationFormatter.TypeBinder.BindToType(String assemblyName, String typeName) at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Bind(String assemblyString, String typeString) at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name) at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable) at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record) at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run() at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream) at Microsoft.Exchange.Compliance.Serialization.Formatters.TypedBinaryFormatter.Deserialize(Stream serializationStream, SerializationBinder binder) at Microsoft.Exchange.Data.SerializationTypeConverter.DeserializeObject(Object sourceValue, Type destinationType)

The type to be (de)serialized is not allowed: Microsoft.Exchange.Data.Directory.DirectoryBackendType,Microsoft.Exchange.Data.Directory, Version=15.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 at Microsoft.Exchange.Compliance.Serialization.Formatters.TypedSerializationFormatter.TypeBinder.BindToType(String assemblyName, String typeName) at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Bind(String assemblyString, String typeString) at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name) at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable) at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record) at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run() at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream) at Microsoft.Exchange.Compliance.Serialization.Formatters.TypedBinaryFormatter.Deserialize(Stream serializationStream, SerializationBinder binder) at Microsoft.Exchange.Data.SerializationTypeConverter.DeserializeObject(Object sourceValue, Type destinationType)

[08/31/2014 07:26:11]   INFO : Task=’Check Tenant Prerequisites’ Step=’CheckPrereqs’ FINISH Result=False Time=13453.3694ms

Virheilmoituksesta pisti silmään seuraava lause: Subtask CheckPrereqs execution failed: Check Tenant Prerequisites, johtuiko tämä siis jostain puuttuvasta DNS-asetuksesta tai sertifikaatista? Katsoin asetukset läpi ja en löytänyt puutteita, joten seuraavaksi hakukoneella etsimään apua.

Microsoft Office 365 Community -keskustelupalstalta löytyi muitakin henkilöitä, joille oli tullut sama virheilmoitus. Viat olivat alkaneet 14.7. kun Microsoft oli tehnyt päivityksen Exchange Onlineen. Ongelmaan luvattiin tehdä korjaus, joka olisi saatavilla 28.7.2014.

Current Status: Engineers have isolated the root cause of the issue and are currently working to develop a fix to mitigate impact. Customer Impact: Affected customers may encounter an error when using the Hybrid Configuration Wizard. The error states, ”ERROR : Subtask CheckPrereqs execution failed: Check Tenant Prerequisites”. Incident Start Time: Monday, July 14, 2014 at 7:00 AM UTC Preliminary

Root Cause: An update to the environment caused impact to the Hybrid Configuration Wizard.

FIX: Engineers addressed the underlying cause of the issue and developed a fix available via support on Tuesday, July 28, 2014, at 4:00 AM UTC

Päivitys julkaistiin Exchange Team Blogissa 30.7.2014 (http://blogs.technet.com/b/exchange/archive/2014/07/30/important-update-available-for-exchange-server-2013-hybrid-deployments.aspx), mutta kun kävin nyt elokuussa katsomassa sivua, niin tämä päivitys oli jo poistettu ja tilalle oli tullut kehotus asentaa Exchange Server 2013 Cumulative Update 6.

CU6-päivityspaketin koko oli yli 1,3 gigaa ja sen latautuminen Microsoftilta oli erittäin hidasta. Ehdin latauksen aikana käydä lukemassa Knowledge Base (http://support.microsoft.com/kb/2961810) artikkelin uudesta päivityksestä. Siellä kerrottiin, että CU6 päivitys korjaa juuri tuon ongelman, mikä meillä tuli ja asiasta oli tehty vielä oma KB-artikkeli (http://support.microsoft.com/kb/2988229 – Hybrid Configuration wizard error ”Subtask CheckPrereqs execution failed” for Exchange Server 2013).

CU6-päivitys oli ilmestynyt 26.8.2014, eli se oli vain muutamia päiviä vanha. Tämän takia päätin vielä lukea Exchange Team Blogista kommentit päivitykseen liittyen (http://blogs.technet.com/b/exchange/archive/2014/08/26/released-cumulative-update-6-for-exchange-server-2013.aspx).

Kommenteista selvisi, että päivityksen asentaminen vaatii Active Directory Scheman ja konfiguraation päivittämisen, eli kyseessä ei ole ihan pieni päivitys. Microsoft oli lisännyt myös varoituksen tietokantojen failoveriin liittyen: We have learned that customers using Exchange Server 2013 and Exchange Server 2007 co-existence can experience an issue causing Exchange Server 2013 CU6 databases to failover. Tämä onneksi koski vain organisaatioita joilla oli myös Exchange 2007 käytössä, joten minun ei tarvinnut tästä välittää.

Käyttäjien kommenteista huomioni kiinnittyi seuraavaan kommenttiin:

Jeff Guillet [MCM, MVP, Author, Blogger]:

I would hold off on CU6 if you’re a 2013 hybrid customer, too. See http://www.expta.com/2014/08/dont-deploy-exchange-2013-cu6-if-youre.html

Tähän oli myös Microsofilta tullut vastausta 30.8.2014:

Brent Alinger [MSFT]

@Jeff Guillet – You are correct, a solution is in the works for this (even over a holiday weekend).

Jeffin blogista selvisi, että CU6-päivitys rikkoo pahasti Exchange Hybridin toiminnan:

Microsoft has maintained that customers will always be able to manage their hybrid environments from on-prem. Hybrid servers are supposed to bridge the administrative gap, providing a single pane of glass through which customers can manage both on-prem and Exchange Online environments.

That was until Exchange 2013 CU6…

With CU6, admins can no longer use the Exchange Admin Center (EAC) to create new Office 365 mailboxes, move mailboxes to Exchange Online, or create In-Place Archive mailboxes. Admins either need to use the Exchange Management Shell (EMS) or logon to the Office 365 Portal to perform these actions. In addition, when you click the Office 365 tab it normally takes you to the Office 365 signon portal so you can manage your Office 365 tenant Instead, it opens a new website for the Office 365 marketing page. These are huge problems for most hybrid customers and there’s no mention of this anywhere in the CU6 release notes.

I expect Microsoft to publish an article soon regarding these bugs, but with a long Labor Day weekend ahead of us I wouldn’t expect anything sooner that Tuesday. I do expect that CU7 will correct these bugs. In the meantime, I recommend that hybrid customers do not deploy CU6 at this time. If you’ve already deployed CU6 in your environment, there’s no way to role back.

Lopputulos oli, että en uskaltanut CU6 -päivitystä asentaa ja postilaatikoiden siirto Exchange Onlineen siirtyy tulevaisuuteen. Syyskuun ensimmäisellä viikolla koulutan kolmen päivän 20346 Managing Office 365 Identities and Services -kurssin ja ainakin voin nyt Exchange Hybrid osioon tuoda sitten uutta tietoa mitä ei kurssimateriaalista löydy.

[2.9.2014] Microsoft julkaisi Powershell-skriptin, jonka pitäisi korjata Office 365 -portaalin näkyminen Exchangen Control Panelissa. Päivitys on ladattavissa täältä: http://support.microsoft.com/kb/2997355

 



Twitter: @anttiroine