Search This Blog

Tuesday 8 November 2011

Lync 2010 - “sorry, but i can't seem to connect you to your conference right now. please try your call again, goodbye

Scenario
Multiple Lync Standard edition servers / 3 x Central Sites / each with Edge Servers, PSTN Gateways, (In this scenario we have  multiple Cisco Call Manager CUCM)

Symptom
Dial In conferencing, multiple pools / regions.
You may create a new conference in which Dial in numbers connect to other pools other than the one you created your conference on.

In this scenario if you dial the local Conference server / Mediation server that hosts the dial in number, all is well,  However if you dial in to the conference from another pool / mediation server. Then you may receive the below announcement.

“sorry, but i can't seem to connect you to your conference right now. please try your call again goodbye"

Further debugging on (AVmcu,CAAServer, CASServer,SIPStack) you may see entries in the logs like:
"cannot transfer the call to another pool"
or
"sip/2.0 488 not acceptable here"
or
"reject the incoming dial out from mcu"



Resolution
The problem is with the "enable refer support" option on the Lync Trunk Configuration, Untick this option on your Trunks, and all will be well.
MS Tests show that Refer does not work in the case of Lync-to-CUCM integration. Some call transfer scenarios do not work with Refer support. 
Basically, that’s all we need for Direct SIP integration with CUCM.

Full Details on how to configure Lync 2010 and Cisco Call manager can be found in this great document by: Danny Cheung & Taimoor Husain
Integrating Microsoft Lync Server 2010 and Cisco Unified Communications Manager
http://blogs.technet.com/b/nexthop/archive/2011/07/17/integrating-lync-server-2010-and-cisco-unified-communications-manager.aspx

Thursday 3 November 2011

Lync Server 2010 - SQL Express open failed | could not open file e:\sql10_main_t\sql\mkmastr\databases\objfre\i386\model.mdf

Don't ask why, or How.. I have no Idea.  Anyway..  This cost me at least 6 hours of my life, and learning things about sql I never cared to know..(Sorry DBA`s)

Scenario
1 x Lync Server, Standard.  For testing  (EASY,  30 mins, done!!)

So at the beginning of the install, we put good old SQL Express on,  Job done..  REALLY,  Really !!! ?

So, when we try and Publish the CMS,  it fails, so restart SQL Server/ reboot
Further checking, in the event logs you will see fcb::open failed: could not open file e:\sql10_main_t\sql\mkmastr\databases\objfre\i386\model.mdf
Even further digging into SQL Debug logs, you may find
watson bucket for exception based failure has been created  / external component has thrown an exception.

Anyway we can't start SQL or Install the CMS.  And after much , Much Head banging, a couple of tears of insane laughter and anger, I came across the below blog......,
I low and Behold.. The Client  supplied a DEBUG Version of windows 2008 R2..  SIigghhh :(


SQL Server 2008 Install on Windows Server 2008 fails with "External Component has thrown an exception

Friday 30 September 2011

Lync Server 2010 - Configure Multi-Site Simple URL`s

Simple URL ScopeYou can configure your simple URLs to have global scope, or you can specify different simple URLs for each central site in your organization. If both a global simple URL and a site simple URL are specified, the site simple URL has precedence.
In most cases, Microsoft recommend that you set simple URLs only at the global level, so that a user’s Meet simple URL does not change if they move from one site to another. The exception would be organizations that need to use different telephone numbers for dial-in users at different sites. Note that if you set a one simple URL (such as the Dial-in simple URL) at a site to be a site-level simple URL, you must also set the other simple URLs at that site to be site-level as well.
You can set only global simple URLs in Topology Builder. To set a simple URL at the site level, you must use the Set-CsSimpleURLConfiguration cmdlet.

Example

We have 3 Global Sites, Each site requires to be autonomous from each geographical region. (i.e. if  the UK had a major failure, US, HK would not be effected.......

so we want to set each region with its local meeting and Dialin URL`s

Site 1 (USA) = https://lync.us.abc.com
Site 2 (UK)   = https://lync.uk.abc.com
Site 2 (HK)   = https://lync.hk.abc.com

Using Lync Powersehell we would need to run the following commands to create our site specific url`s.  (Red TXT = Change as required)

 $simpleUrlEntry1 = New-CsSimpleUrlEntry -Url "https://lync.uk.abc.com/dialin"
 $simpleUrlEntry2 = New-CsSimpleUrlEntry -Url "
https://lync.uk.abc.com/meet"
 
 $simpleURL1 = New-CsSimpleUrl -Component "dialin" -Domain "*" -SimpleUrlEntry $simpleUrlEntry1 -ActiveUrl "
https://lync.uk.abc.com/dialin"
 $simpleURL2 = New-CsSimpleUrl -Component "meet" -Domain "abc.com" -SimpleUrlEntry $simpleUrlEntry2 -ActiveUrl "
https://lync.uk.abc.com/meet"
 
 New-CsSimpleUrlConfiguration -Identity site:LYNC-UK -SimpleUrl @{Add=$simpleUrl1, $simpleUrl2}


 ---------------------------------------------------------------------------

 $simpleUrlEntry1 = New-CsSimpleUrlEntry -Url "
https://lync.hk.abc.com/dialin"
 $simpleUrlEntry2 = New-CsSimpleUrlEntry -Url "
https://lync.hk.abc.com/meet"
 
 $simpleURL1 = New-CsSimpleUrl -Component "dialin" -Domain "*" -SimpleUrlEntry $simpleUrlEntry1 -ActiveUrl "
https://lync.hk.abc.com/dialin"
 $simpleURL2 = New-CsSimpleUrl -Component "meet" -Domain "abc.com" -SimpleUrlEntry $simpleUrlEntry2 -ActiveUrl "
https://lync.hk.abc.com/meet"
 
 New-CsSimpleUrlConfiguration -Identity site:LYNC-HK -SimpleUrl @{Add=$simpleUrl1, $simpleUrl2}



 ---------------------------------------------------------------------------


 $simpleUrlEntry1 = New-CsSimpleUrlEntry -Url "
https://lync.us.abc.com/dialin"
 $simpleUrlEntry2 = New-CsSimpleUrlEntry -Url "
https://lync.us.abc.com/meet"
 
 $simpleURL1 = New-CsSimpleUrl -Component "dialin" -Domain "*" -SimpleUrlEntry $simpleUrlEntry1 -ActiveUrl "
https://lync.us.abc.com/dialin"
 $simpleURL2 = New-CsSimpleUrl -Component "meet" -Domain "abc.com" -SimpleUrlEntry $simpleUrlEntry2 -ActiveUrl "
https://lync.us.abc.com/meet"
 
 New-CsSimpleUrlConfiguration -Identity site:LYNC-US -SimpleUrl @{Add=$simpleUrl1, $simpleUrl2}



Lync 2010 - error publishing SQL Reporting HTTP 401 Unauthorised

Problem
When trying to publish Lync 2010 SQL reports to a Windows 2008 R2 / SQL 2008 R2 server.
you receive error "HTTP 401 Unauthorised"

Cause
This is because by Default SQL 2008 R2 / Windows 2008 R2 is set to auto negotiate the authentication method. The problem is, that it will try and use "kerberos" authentication which by design is far more secure, which in turns can cause restrains on certain actions .
Full Details

Resolution
Force SQL Reporting to use NTLM Authentication.

Use NTLM. NTLM will generally work in cases where Kerberos authentication fails. To use NTLM, remove RSWindowsNegotiate from the RSReportServer.config file and verify that only RSWindowsNTLM is specified. If you choose this approach, you can continue to use a domain user account for the Report Server service even if you do not define an SPN for it.


Monday 18 July 2011

ISA 2006 EE setup failed while initializing configuration agent Enterprise Array

Issue

Whist Trying to add an ISA 2006 Server/Node to an Existing Enterprise Array, You may receive the following error during the final stages of setup.

"setup failed while initializing configuration agent"


Reason
This is due to a non standard ISAPI or Web filter installed within the array or a  Corrupt Rule / Protocol within ADAM


Resolution
Temporally Remove the Non-Standard Filter via Add/remove programs. i.e Messagelabs Client Side Proxy, Websense Web Filter.,  Add the Node into the array, and re-Install Custom Filters

Further Debugging to Find Corrupt ADAM Object please refer to MS Blog.
http://blogs.technet.com/b/isablog/archive/2009/02/17/error-installing-a-replica-of-isa-server-2006-css.aspx - Ori Yosefi

Tuesday 8 March 2011

Migrating from Enterprise Vault to Exchange 2010 SP1 Archiving - Takeaways

While I have a little down time, I thought I would feedback on some interesting points encountered during a recent Migration from Enterprise Vault 6 SP3 to Exchange 2010 On-Line Personal Archives and some areas what you will have to consider on any migration.  All in all it went very well and proves Microsoft  can offer a basic Archiving solution to customers who may feel EV is just A little OTT for them.

I have attached some useful command highlights that were used in migration process that I used and passed over to the customer which you may find of use.

So,  what were the pain points? All be it any pain that was encountered was down to short comings (Product Features) of EV that handicapped us in making the transition seamless.
1ST Challenge
The main challenge was the way EV stored and used Shortcuts, i.e. If a user moved a EV shortcut to a subfolder or another folder outside the “inbox”  the only thing that was moved was the shortcut, the
actual Item in the vault retained its position and hierarchy when it was first archived. So the problem here is that if we have users who had complex mailboxes and religiously moved stubs around  (which is always true for a few users)
that when we restored “directly” from the vault into the online archive we was restoring all the data in its original folder hierarchy.  Now this is just more of an inconvenience than anything but we all know how user perception is when moving a new system.  (Note: Users Inbox was not affected, just the archive)


Solution 1
Unfortunately to an extent there is very little we could do to “fix up” the issue and to a degree to coin a common phrase “it is what it is” !!. however we did find a way to alleviate / negate as much as possible the issue. The way we did this was to Restore 6 months of archive back into the users inbox, This re-attached the stubs correctly in its current hierarchy and then just let Exchange archive it naturally to the users new archive, thus retaining the folder structure as much as possible, well at least 6 months’ worth. !! We then pumped the remaining archive straight into exchange, thus having some legacy folder structures but nowhere near as obvious to most users.


2nd Challenge
Of course now we have all of the EV Archive in our “On-Line Archive” but we still have 50,000 stubs in users inbox pointing to the old archive. I am told in later versions of EV  (We had 6.0 SP3) that shortcuts can be removed using EV Policy’s and targeted to Specific users / OU`s., Unfortunately this was not possible in the version we had and the only way to remove the stubs using EV was in “mass”. Which was of no use as the transition will be on-going for a period of time.


Solution 2
A good thing that EV does is that it clearly differentiates its shortcuts from a “standard” e-mail in the way of having its own message class (IPM.Note.EnterpriseVault.Shortcut). So with this in mind I managed to find a use for the good old managed folder/content policy that MS tried to take away from 2010, ( only thing now that in 2010 SP1 it is all in PowerShell.) I did look at seeing if we could use retention policy’s but these cannot be based on messageclass.
so we were able to make a content policy which we could temporally assign to a specific mailbox(S) and remove all stubs.

Other side notes that cropped up, is that the some clients like to keep all archive for users, even if they deleted the stub. So a valid question was asked “can the archive be made read only ?”  Unfortunately this is not possible as yet, but 1 or 2 are asking for it so watch out SP3 ? SP4 !! ?. 

Command Highlights
Here are some of the “best of” bits I have highlighted for you.


Exclude Archive Databases from provisioning when moving /creating live MB`s
Get-MailboxDatabase serverex1-dag01-arc* | Set-MailboxDatabase -IsExcludedFromProvisioning $true
Import Single PST to Mailbox
New-MailboxImportRequest -Mailbox student1 –IsArchive -FilePath file://fileshare01/Vault%20Migrations/Student1_Export_0001.pst –BadItemLimit 10
Import Multiple PST`s to Single mailbox
Dir file://filshare01vaultmigrations/rileys/*.pst | %{ New-MailboxImportRequest -Mailbox rileys –IsArchive –BadItemLimit 10 -FilePath $_.FullName }
Import Multiple PST to Matching Mailbox  (Based on PST Name been the Alias)
Dir file://fileshare01/VaultMigrations | %{ New-MailboxImportRequest -Name PSTImport -BatchName–BadItemLimit 10 Imports -Mailbox $_.BaseName -FilePath $_.FullName –IsArchive }

Remove Stubs
1. Create PolicyNew-ManagedFolder -Name 'Remove EV Stubs' -DefaultFolderType All -Comment 'Removes all EV Shortcuts from Mailbox' -MustDisplayComment $true
               
New-ManagedContentSettings -FolderName "Entire Mailbox" -MessageClass IPM.Note.EnterpriseVault.Shortcut -Name RemoveEVStubs -RetentionEnabled $true -RetentionAction Permanentlydelete  -AgeLimitForRetention "1"

New-ManagedFolderMailboxPolicy -Name "RemoveEVShortcuts" -ManagedFolderLinks "Entire Mailbox"

2. Assign Set-Mailbox -Identity student1 -ManagedFolderMailboxPolicy "RemoveEVShortcuts"

3.  RunStart-ManagedFolderAssistant -identity student1
4. Remove Set-Mailbox -Identity student1 -ManagedFolderMailboxPolicy $null

Checking the Import Progress
Get-MailboxImportRequest | Get-MailboxImportRequestStatistics | ft name,status,TargetAlias,PercentComplete,EstimatedTransferSize,BytesTransferred  -auto