Sunday, March 28, 2010

Adobe Reader preview handler on 64-bit Windows 7

Found this http://www.pretentiousname.com/adobe_pdf_x64_fix/index.html fixer – and it simply works!

Now I can preview the PDF documents in Windows Explorer (Alt+P if you do not know the feature) without having to fire up Adobe Reader and needing one more window :)

Wednesday, March 24, 2010

News on Microsoft Communications Server “Wave "14”

So news on Wave 14 starts coming in from VoiceCon in Orlando. Here is a set of partner related news including the new Microsoft solution for Survivable Branch Appliances (SBA) and not least a new range of IP phones from Aastra and Polycom (With a much better price point than the current Tanjay).

PARTNERS ANNOUNCE SOLUTIONS TO COMPLEMENT MICROSOFT COMMUNICATIONS SERVER “14”

It will be even more interesting to see how much information on Wave 14 that Gurdeep Singh Pall (Vice President of UCG) announces at his Keynote presentation today at 11:15 AM – 12:00 PM EST  ;-)

You can register for a Live WebCast directly from Orlando at VoiceConTV.

Friday, March 05, 2010

Update Rollup 2 for Exchange 2010 has RTW’ed

The awaited Rollup fixes amongst other things several PO3 and IMAP issues and an update to Push Notifications.

Read more at KB979611 or proceed directly to the download site (And if you haven’t already done so – remember to look at Exchange 2010 Unified Messaging it ROCKZ ;-)

Tuesday, March 02, 2010

OCS 2007 R2 Audio Conferencing Deep Dive tonight

FYI - I’m presenting an Audio Conferencing Deep Dive tonight (March 2nd 20.00 CET and 11:00 AM Pacific )

http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032441774&Culture=en-US

Event Overview

Are you familiar with Microsoft Office Communications Server 2007 R2 dial-in conferencing and want to go deeper into the technical details? Or, are you thinking about deploying dial-in conferencing but have not yet done so? Attend this webcast for a demonstration of how Communications Server 2007 R2 works in practice, and get a detailed look at component interactions and call flows.

Presenter: Dennis Lundtoft Thomsen, Technical Evangelist, Inceptio Learning Solutions ApS

Dennis Thomsen works for Inceptio Learning ApS as a technical evangelist, educating Microsoft partners worldwide on bleeding edge technologies. He blogs, twitters, and writes articles on unified communications (UC), and he is writing a book on Microsoft UC to be published in the third or fourth quarter of 2010. Dennis's work focuses on large-scale enterprise and hosted Microsoft Unified Communications projects. He holds several Microsoft certifications and an Executive Master of Business Administration (MBA) degree with specialization in management of technology. Dennis was awarded a Microsoft Most Valuable Professional (MVP) award in 2007, 2008, and 2009.

View other sessions from Unified Communications: Control Your Infrastructure

It’s a level 2-300 presentation and it’s my first webcast, so don’t expect to much ;-)

Wednesday, February 17, 2010

OCS Voice Exam 71-404 period extended 2 weeks

Due to extreme winter weather conditions, Microsoft is extending Beta Exam 71-404, OCS 2007 R2 Voice Specialization for another two weeks.

Register for FREE with code OCR2J for BETA Exam 71-404  Prometric sites http://www.prometric.com/Microsoft/default.htm.

Candidates should plan for up to four hours to take the Beta exam and provide feedback on every question (versus the typical two hours to take Released version exams.)

It is highly recommended that candidates for Exam 74-404 (Beta 71-404) have experience with OCS 2007 R2 and have completed the Unified Communications Voice Ignite v 2.0 (R2) Workshop. A preparation guide for the exam is available at  http://www.microsoft.com/learning/en/us/exam.aspx?ID=74-404&locale=en-us

I’ve heard good feedback from people who have taken the Beta exam – so go ahead and try (Last available date is February 26th ;-)

Monday, February 15, 2010

Tuesday, February 09, 2010

Information Overload and Social Impact of UC

Michael J. Killian has created a 3-series post on his view on Unified Communications, Information Overload, the Social Behavior Impacts and Social Networking in The Enterprise.

Interesting and well written perspectives for anyone interested in the non-technical side of working with Unified Communications!

Thursday, February 04, 2010

NET acquires SmartSIP from Evangelyze

Good news for users of NET Gateways for their OCS implementations (and future customers ;-) NET has acquired the smartSIP product from Evangelyze -

The SmartSIP product line includes both the SmartSIP and SmartVoIP products. SmartSIP enables UC presence and interoperability for SIP phones while providing integration for Microsoft's Office Communications Server with IP-PBXs and integration for ITSP voice providers. SmartVoIP, a 2008 Internet Telephony Product of the Year, is an extension of SmartSIP that provides branch office integration with Microsoft Office Communications Server.

Read the full press release here.

Invoking the PowerShell Debugger from Script

With PowerShell v2, a new and much improved command line debugger was introduced. The old one is still around though. Anyway, more information can be found in the help subject about_Debuggers.

The strange part is that Set-PsDebug –Step invokes the old debugger and there does not seem to be a way of invoking the new one. You can only invoke the new one by setting a breakpoint. Even though, breakpoints are a very useful feature which I use a lot, I would also like to do it from inside a script.

I have played around with some ways of doing this.

First, a self-contained function

Function Invoke-Debugger{
function debug{}
$bp=Set-PSBreakPoint -Command debug
debug
$bp | Remove-PSBreakpoint
}

function test{
write-host 1
Invoke-Debugger
write-host 2
}

test





It works great, but has the downside, that the current execution pointer is inside the Invoke-Debugger function -




1
Entering debug mode. Use h or ? for help.

Hit Command breakpoint on 'debug'

x.ps1:4 debug
7 $docs>>> l

1: Function Invoke-Debugger{
2: function debug{}
3: $bp=Set-PSBreakPoint -Command debug
4:* debug
5: $bp | Remove-PSBreakpoint
6: }
7:
8: function test{
9: write-host 1
10: Invoke-Debugger
11: write-host 2
12: }
13:
14: test





No matter how I try to tweak it, I end up in the same way.



Next, lets try using a two part approach (setting the breakpoint and doing some action to invoke it) -




$null=Set-PSBreakpoint -Variable InvokeDebugger

function test{
write-host 1
$InvokeDebugger=1
write-host 2
}

test



This is much better, now the execution pointer is right in the code -



1
Hit Variable breakpoint on '$InvokeDebugger' (Write access)

x.ps1:5 $InvokeDebugger=1
9 $docs>>> l

1: $null=Set-PSBreakpoint -Variable InvokeDebugger
2:
3: function test{
4: write-host 1
5:* $InvokeDebugger=1
6: write-host 2
7: }
8:
9: test
10:





Eventually, this led me to this piece of code. It is easier to write than the variable assignment and you can also define an easy-writeable alias for it -




function Invoke-Debugger{}
New-Alias id Invoke-Debugger
$null=Set-PSBreakPoint –Command Invoke-Debugger

function test{
write-host 1
id
write-host 2
}

test







The execution pointer is right at the call. If you include any statements in Invoke-Debugger, this will not work as well while ‘step’ will take execution into the function -















1
Hit Command breakpoint on 'Invoke-Debugger'

x.ps1:9 id
13 $docs>>> l

4: New-Alias id Invoke-Debugger
5: $null=Set-PSBreakPoint –Command Invoke-Debugger
6:
7: function test{
8: write-host 1
9:* id
10: write-host 2
11: }
12:
13: test
14:







This method also enables you to make conditional break using straight, normal code (compared to making the logic in the –action argument of Set-PSBreakPoint) -




filter test{
write-host "got $_"
if ($_ -eq 3) {id}
}

1..5 | test







and the output -




got 1
got 2
got 3
Hit Command breakpoint on 'Invoke-Debugger'

x.ps1:9 if ($_ -eq 3) {id}
14 $docs>>> l

4: New-Alias id Invoke-Debugger
5: $null=Set-PSBreakPoint –Command Invoke-Debugger
6:
7: filter test{
8: write-host "got $_"
9:* if ($_ -eq 3) {id}
10: }
11:
12: 1..5 | test
13:





You can include the Invoke-Debugger function and the Set-PSBreakPoint in your profile, so they are available in all our scripts.



Happy debugging..

Friday, January 29, 2010

One stop shop for all your OCS patches

Microsoft has created a really useful Updates Resource Center with all the latest and greatest patches listed for both Office Communications Server and the clients.

You can also find the updates at this RSS feed.

Note this is meant as a One Stop Shop, it is NOT the place where you’ll be notified first on a new OCS/OC patch.

Good work Microsoft ;-)

Monday, January 25, 2010

Interesting webcast from AudioCodes on OCS integration futures

Besides not being totally honest on what “other vendors” can do (E.g. NET and others provides most of these features and more on top), there were a lot of different interesting news -

They spoke about Direct Connect (Formerly known as “Advanced Gateway” functionality) that apparently is supported in all their gateways from MP11x series to the Mediant (Se their Application Note that doesn’t detail QoE / ICE support however).  The good thing about direct connect is that you get rid of the need to buy and deploy Mediation Server’s  (Bad news are that it’s officially unsupported – so AudioCodes / NET has to support these configurations directly)

Other more interesting functionality was support for third party PBX handsets (Again like NET VX1200 series) on remote locations and survivability for these (If they support it).  Also their own AudioCodes endpoints support registration to OCS, by proxying through their gateways to OCS (Which then handles call control). This includes support for Wideband and future support for presence.

Also Still time to see the #AudioCodes US prez running today at 12:00 noon (EST) / 09:00am (PST) - register here http://bit.ly/8LrYlL. And a recorded webcast should also become available soon (I will update link to it).

Sunday, January 24, 2010

Comments on the OCS 2007 R2 Workload Architecture Poster

The recently RTW’ed Architecture Poster provides a very good overview of port and certificate requirements in the different OCS workloads.

This poster of Office Communications Server 2007 R2 describes the traffic flow of protocols and ports used in each workload. Communications Server 2007 R2 supports the following workloads: IM and Presence, Conferencing, Application Sharing, and Enterprise Voice. These filtered views can assist you in architecting your deployment of Communications Server 2007 R2. The different server roles are described along with server certificate requirements. Firewall and DNS configuration requirements are also described.

I like this Poster and the idea/work put in to it and will certainly print one out for the walls in my home office. It provides a visually good overview of the Port usage and signaling/media flows used in OCS.

I have a few comments to the drawing though -

Application Sharing Workload

  • Red arrow depicting RDP/SRTP shows inbound traffic to 50,000-59,999. This is not correct – only outbound is required to endpoint. The only place this would be required is for traffic to an OCS 2007 “R1” Edge Server.
  • “A/V Edge must have publicly routable IP addresses” – true if implemented in loadbalanced config as shown (But not required for standalone Edge).

Enterprise Voice Workload

  • Red arrow depicting RDP/SRTP shows inbound traffic to 50,000-59,999. This is not correct – only outbound is required to endpoint. The only place this would be required is for traffic to an OCS 2007 “R1” Edge Server
  • I’m sure G.711 is not used through the A/V Edge as any packet loss would kill it ;-) Siren maybe used for conferencing scenarios.

A/V and Web Conferencing Workload

  • Arrows for HTTPS traffic are not correct – they should point towards the LM endpoints, as they are used for downloads of content e.g. slides.
Firewall configuration and ports on the Edge Server. Even though not OCS specific I would personally add port 53 for DNS (To internal or external depending on config) and port 80 to both external and internal (As this port is used for CRL checks). If not in the drawing then in the “Firewall Configuration” text box.
 
I generally like the idea about the DNS and Certificate portion in this poster, but IMHO it is to simplified. If a future update is planned the I think it should have its own page/poster to really handle the different scenarios and namespace requirements in OCS. So for certificates I would still point to the Whitepaper on Deploying Certificates in OCS 2007 and OCS 2007 R2, which does a better job of explaining the complexity of certificates usage/naming in OCS.

Friday, January 22, 2010

BETA Exam 71-404 OCS 2007 R2 – UC Voice Specialization, Will Be Available January 25, 2010

The Voice Specialization exam for OCS 2007 R2 is finally getting closer to release with the launch of the Beta Exam.

Exam 74-404 (Beta Exam 71-404) is designed to validate the skills and experience of technical professional to design, deploy, and administer Microsoft Voice solutions in production based on Microsoft® Office Communications Server 2007 Release 2  (OCS 2007 R2) and including interoperability with OCS 2007, Microsoft® Exchange Server 2007 Unified Messaging, Microsoft® Windows Server Active Directory, gateways and Private Branch Exchanges (PBX’s).

It is highly recommended that candidates for Exam 74-404 have experience with OCS 2007 R2 and have completed the Unified Communications Voice Ignite v 2.0 (R2) Workshop. A preparation guide for the exam will be available soon. Click here for more details.  

Do remember that Inceptio Learning Solutions provide fully qualified UC Voice Ignite Workshops on-site at your company/training provider (almost) anywhere in the world (Contact my.initials@inceptio.dk for further info).

Happy testing ;-)

Wednesday, January 20, 2010

Maybe I should redefine “Office 2010 x64 fully working with OC” ?

I have now been working with Office 2010 x64 a week or so as per my post Office 2010 x64 now fully working with OC and LiveMeeting Add-in. I have some intermittent problems though – when I log-in everything works fine, then on occassion I get an -

image

The problem appears after a while and then disappears again later. Integration seems to work fine except that this problem appears from time to time – did anyone get the same error or no error at all? (Perhaps with only one Exchange mailbox – I have two Exchange mailboxes which has other issues – so it may be part of this problem).

Monday, January 18, 2010

Reference Variables

If you want to change a value inside a function, you have to use reference variables. They do not work the same way as they do in C, C# or VbScript.

This is a simple example -

function a([ref]$v) {
"a1 v=$($v.value)"
$v.value++
"a2 v=$($v.value)"
}

$x=0
"begin x=$x"
a ([ref]$x)
"end x=$x"







Note that must use [ref] when declaring the argument and also when calling. Note also that you must use ([ref]$x) in the call. Finally, you can see that [ref] actually converts the variable into a PSReference object and that you must use .Value to set/get the value.



But what if you want to transfer the reference variable across multiple function calls? Well, the logical approach is this -




function b([ref]$v) {
"b1 v=$($v.value)"
$v.value++
"b2 v=$($v.value)"
}

function a([ref]$v) {
"a1 v=$($v.value)"
$v.value+=10
b ([ref]$v)
"a2 v=$($v.value)"
}

$x=0
"begin x=$x"
a ([ref]$x)
"end x=$x"







The pattern is simply repeated. Just like you would in other languages. But THIS WILL NOT WORK. As the first call creates a PSReference object, using ([ref]$v) creates another level of redirection and things will fail. The correct solution is -




function b([ref]$v) {
"b1 v=$($v.value)"
$v.value++
"b2 v=$($v.value)"
}

function a([ref]$v) {
"a1 v=$($v.value)"
$v.value+=10
b $v
"a2 v=$($v.value)"
}

$x=0
"begin x=$x"
a ([ref]$x)
"end x=$x"





Note that in the second call, $v – a PSReference object – is simply transferred.



Bottom line: Avoid [ref] when you can. Return values or use scoped variables when possible. Remember that it is very easy to return multiple values from a function and assign them to different variables -




function c{
"Per"
"Denmark"
44
}
$Name,$Country,$ShoeSize=c



Saturday, January 16, 2010

Simple script for extracting CDR records from OCS Monitoring Server

Andre Blumberg created instructions and a small script for extracting CDR records for outbound calls. Find it here and do remember to provide your feedback for him (So we all can benefit from your/Andre’s enhancements to the script ;-)

Friday, January 15, 2010

Office 2010 x64 now fully working with OC and LiveMeeting Add-in

First part of the solution was the January Office Communicator Update to 6907.83 that solved the Outlook integration issues/error (Which forced me to “downgrade” to 32 bit Office).

The last part of this solution was the release of the 64-bit LiveMeeting add-in which can be found here and while you’re at it the update to the LiveMeeting console can be found here.

Before upgrading do remember that there is a problem with file uploading in LiveMeeting – only supported file format is native PowerPoint files. Also remember the workaround to make updating OC running 64 bit OS work correctly.

Happy installing/upgrading to 64 bit  ;-)

Wednesday, January 13, 2010

Workaround for Client Version Filtering problem using 32 bit OC on X64 OS

My colleague Claus-Ole also found and fixed the problem, but Michael Sneeringer (A OCS MCM) was kind enough (hint, hint) to describe the problem and solution in Client Version Filtering on Windows x64.

Thursday, January 07, 2010

OCS Wave 14 features

FYI - Curtis Johnstone has revealed some of the essential OCS Wave 14 features – find them in his post OCS in 2010 - The UC 14 Wave.

As an MVP I’m under NDA so I can’t add to the above, but what I can say is that the future for OCS looks promising ;-)

Tuesday, December 08, 2009

MS PM comments on CUCiMOC(kup) and the joint Cisco / Microsoft support statement

Take a look at the blog post Cisco: Just Like Any Other Office Communications Server ISV?   for some official words (finally) from Microsoft on Cisco’s CUCiMOC and Microsoft Office Communications Server integration.

He hits the nail on the many questions I have raised at customers, including the supportability problems in terms of integration at the desktop level with program version dependencies and especially the (lost) user experience when using CUCiMOC. Furthermore Currently Cisco is setting a Version 8.0 / Q3 CY10 date for supporting Windows 7 (And also with limited support for 64 bit).

Furthermore (as he also notes) it is important to note the dependencies and lost features (RDP Sharing, Audio/Video/Webconferencing etc – that you would need to buy from Cisco).

Read the joint support statement here  and Haberkorns blog post for more info.