I wrote a simple script to automate the process of user account creation in AD and to enable them for OCS with EV, which I am sharing at this blog... Before I start talking about the script further, I'd request everyone to read the following disclaimer carefully.
Disclaimer: Run the script in your environment at your own risk. This script re-writes proxyAddresses, so modify the script to have proper proxyAddresses value if you have Exchange setup. Please don’t run this script in production at any cost without testing it in your test environment, and without further modifying it to suit your requirements.
About the script: This script takes a CSV file as an input with following parameters of the user...
Display Name, SAMAccountName, UserPrincipalName, TelephoneNumber, Description, SIP Address.
The script will do followings…
· It will create the user.
· It’ll read display name from the file and write FirstName, LastName and DisplayName of the user.
· It’ll set the TelephoneNumber of the user.
· It’ll enable the user for Office Communications server
· It’ll set the SIP address (msRTCSIP-PrimaryUserAddress)
· It’ll assign the user to a pool (msRTCSIP-PrimaryHomeServer)
· It’ll enable the user for Enterprise Voice (msRTCSIP-OptionFlags)
· It’ll assign the Line URI (msRTCSIP-Line)
Steps to run the script:
Step 1:
Copy the following script and save it as “createNenableUsers.vbs”.
‘=======================================
dim Header,FileName,fs,fl,objOU
set fs=CreateObject("Scripting.FileSystemObject")
set fl=fs.OpenTextFile("C:\scripts\User_Accounts-ADS-CSV.csv")
Header=fl.ReadLine
arHdr=split(Header,",")
Header=""
' DN of the OU where USers are supposed to be created
lDapPath="OU=UC,dc=ucdom,dc=local"
for i=0 to ubound(arHdr)
Header=Header & arHdr(i) & vbTab
next
wscript.echo Header
Set objOU = GetObject("LDAP://" & lDapPath)
on error resume next
while fl.AtEndOfStream=False
errorsOccured=0 'no errors
userLine=fl.ReadLine
arUser=split(userLine,",")
Set objUser = objOU.Create("User", "cn=" & arUser(0))
'assuming that fields in CSV files are: CN,sAMAccountName,UserPrincipalName,Telephone Number,Description
'Generate firstname(givenName),lastname(sn),displayname (displayname)
arUinfo=split(arUser(0)," ")
objUser.Put "givenName",arUinfo(0)
objUser.Put "sn",arUinfo(1)
objUser.Put "displayName",arUser(0)
objUser.Put "sAMAccountName",arUser(1)
objUser.Put "UserPrincipalName",arUser(2)
objUser.Put "telephoneNumber",arUser(3)
objUser.Put "description",arUser(4)
objUser.Put "msRTCSIP-PrimaryUserAddress",arUser(5)
objUser.Put "proxyAddresses",arUser(5)
objUser.Put "msRTCSIP-Line","Tel:+" & arUser(3)
objUser.SetInfo
if err.number <> 0 then
wscript.echo "[Error] processing user: [" & arUser(0) & "] " & err.description
errorsOccured=1 'errors occured
err.clear
end if
objUser.SetPassword "Password@123"
objUser.accountDisabled=FALSE
objUser.put "msRTCSIP-UserEnabled",TRUE
objUser.Put "pwdLastSet", 0
objUser.Put "msRTCSIP-PrimaryHomeServer","CN=LC Services,CN=Microsoft,CN=UCOCSR2,CN=Pools,CN=RTC Service,CN=Services,CN=Configuration,DC=ucdom,DC=local"
objUser.Put "msRTCSIP-OptionFlags",384
objUser.SetInfo
if err.number <> 0 then
wscript.echo "[Error] processing user password/account settings: [" & arUser(0) & "] " & err.description
errorsOccured=1 'errors occured
err.clear
end if
if errorsOccured=0 then
wscript.echo userLine & "...Processed."
else
wscript.echo userLine & "...Processing..."
end if
err.clear 'clear last error.
wend
fl.close
set fs=nothing
‘===============================================
Step 2: Modify location of the input file…
set fl=fs.OpenTextFile("C:\scripts\User_Accounts-ADS-CSV.csv")
Step 3: Modify the LDAP path, where you want to create the users..
lDapPath="OU=UC,dc=ucdom,dc=local"
Step 4: Modify the following line to set the default password…
objUser.SetPassword "Password@123"
Step 5: change the Pool DN
objUser.Put "msRTCSIP-PrimaryHomeServer","CN=LC Services,CN=Microsoft,CN=UCOCSR2,CN=Pools,CN=RTC Service,CN=Services,CN=Configuration,DC=ucdom,DC=local"
Step 6: After modifying the script as per your setup… run the following command...
Cscript createNenableUsers.vbs
Note: You should run the command from a location where this script is located.
I am sure you would need to modify the script as per your need, if you encounter any problem while doing it... Leave a comment and if time permits, I’ll respond with a reply.
In an OCS VOIP deployment, call routing works fine. But it breaks down when the caller ID is blocked in certain circumstances.
I was working with one of the customers, everything was working just fine when caller ID was not blocked at the gateway end. When caller ID was blocked at the gateway end, the call routing was failing for the caller, whose ID was blocked.
Took mediation server log and could see following SIP log...
05/01/2009|15:42:42.693 19C:958 INFO :: Sending Packet - 10.129.3.43:5061 (From Local Address: 10.128.99.40:1165) 1271 bytes:
05/01/2009|15:42:42.693 19C:958 INFO :: SIP/2.0 488 Not Acceptable Here
Via: SIP/2.0/TLS 10.129.3.34:5061;branch=z9hG4bK348BF8E1.9C327907F0A24A00;branched=TRUE;ms-internal-info="cvrvQTOYB3PPrJyrA8PyG00ZaDTm0HeTKck0nEAgAA"
Via: SIP/2.0/TLS 10.129.2.57:52753;branch=z9hG4bKb35a8c7f;received=10.129.3.4;ms-received-port=52753;ms-received-cid=7E55B00
From: <sip:+1anonymous@contoso.com;user=phone>;epid=D879D48995;tag=c7e98f73c2
To: <sip:14083250000;phone-context=LocProf.contoso.com@contoso.com;user=phone>;epid=d3b7ada48f;tag=b26f9e40aa
Call-ID: 0546352d-011d-410b-9f80-ea5af6594146
CSeq: 37918 INVITE
Record-Route: <sip:Pool1.contoso.com:5061;transport=tls;ms-fe=BOS1FE02.contoso.com;opaque=state:F:Ci.R7e55800:Ieh.DOx_ldQyXFPaMlxTby7XcZtPI4-TcXqAeNynRKY7-a2rsHeTKcCGjeHwAA;lr;ms-route-sig=byiG0-l6h58Elb5oFW_pmBGtmCE_sHeTKcCGjeHwAA>;tag=35891F36E65216F9F7278C395DE32773
User-Agent: UCCAPI/3.5.6907.9 OC/3.5.6907.9 (Microsoft Office Communicator 2007 R2)
Ms-client-diagnostics: 52001; reason="General processing error"
Proxy-Authorization: Kerberos qop="auth", realm="SIP Communications Service", opaque="A2019AEB", targetname="sip/BOS1FE02.contoso.com", crand="89df02b3", cnum="19", response="602306092a864886f71201020201011100ffffffff46902b6f0190b95825dfcf471ad19783"
Content-Length: 0
05/01/2009|15:42:42.693 19C:958 INFO :: End of Sending Packet - 10.129.3.43:5061 (From Local Address: 10.128.99.40:1165) 1271 bytes
Everything in the above log was just fine except following line...
From: <sip:+1anonymous@contoso.com;user=phone>;epid=D879D48995;tag=c7e98f73c2
Actually when the Gateway was blocking the caller ID, it was adding "+1" to the From field. "+1anonymous" is not acceptable for MOC. And thats why OCS was dropping this call, saying that the SIP Method is not acceptable here.
When we got rid of +1 from from field, problem got resolved.
Recently I worked on an issue where internal users could dial into conferencing atendant, but PSTN users cant. Dial-In conferencing was configured properly.
When a PSTN user tries to join the conference, OCS does provide option to dial the conference ID but it will never listen it. OCS 2007 R2 was configured with CISCO call manager for Enterprise Voice. CISCO Call manager either couldn't learn DTMF or pass it to the OCS mediation server.
I could see following mediation server log...
TL_INFO(TF_PROTOCOL) [10]154C.0684::05/07/2009-15:20:30.636.00000a91 (MediationServer,GatewayCall.GatewayParticipateComplete:gatewaycall.cs(949))( 0000000003D2EFF0 )$$START-MEDIATIONSERVER
MediationCall: fe0263c95f8147e8b869ce8ab84741d3
CallId: ba5d3b00-a021fc77-69-16246c0a@1.1.1.2
From: sip:XXXXXXXXXX@1.1.1.2
To: sip:AAAAA@1.1.1.1
Direction: Inbound
Start-Line: Gateway side invite dialog established successful. Remote Participant Uri: sip:XXXXXXXXXX@1.1.1.2, Local Participant Uri: sip:AAAAA@1.1.1.1
$$END-MEDIATIONSERVER
TL_INFO(TF_PROTOCOL) [10]154C.0684::05/07/2009-15:20:30.641.00000a99 (MediationServer,GatewayCall.GatewayParticipateComplete:gatewaycall.cs(961))( 0000000003D2EFF0 )$$START-MEDIATIONSERVER
MediationCall: fe0263c95f8147e8b869ce8ab84741d3
CallId: ba5d3b00-a021fc77-69-16246c0a@1.1.1.2
From: sip:XXXXXXXXXX@1.1.1.2
To: sip:AAAAA@1.1.1.1
Direction: Inbound
Start-Line: GatewayCall ID is ba5d3b00-a021fc77-69-16246c0a@1.1.1.2, From Tag is 83d98ea5-6a32-4f7e-927e-eae47c44a90f-116351926, To Tag b14fb1c879.
$$END-MEDIATIONSERVER
TL_INFO(TF_PROTOCOL) [8]154C.16CC::05/07/2009-15:21:00.841.00001e3e (S4,SipMessage.DataLoggingHelper:sipmessage.cs(581))
<<<<<<<<<<<<Incoming SipMessage c=[<SipTcpConnection_310339F>], 1.1.1.1:5060<-1.1.1.2:40027
BYE sip:nbc-tst-ocsmds1.ocs.com:5060;maddr=1.1.1.1;transport=Tcp SIP/2.0
FROM: <sip:XXXXXXXXXX@1.1.1.2>;tag=83d98ea5-6a32-4f7e-927e-eae47c44a90f-116351926
TO: <sip:AAAAA@1.1.1.1>;tag=b14fb1c879;epid=3E375620E6
CSEQ: 102 BYE
CALL-ID: ba5d3b00-a021fc77-69-16246c0a@1.1.1.2
MAX-FORWARDS: 70
VIA: SIP/2.0/TCP 1.1.1.2:5060;branch=z9hG4bK10a141b38a1
CONTENT-LENGTH: 0
DATE: Thu, 07 May 2009 15:21:27 GMT
USER-AGENT: Cisco-CUCM6.1
------------EndOfIncoming SipMessage
TL_INFO(TF_PROTOCOL) [10]154C.1574::05/07/2009-15:21:00.846.00001eba (MediationServer,GatewayCall.OnGatewayStateChanged:gatewaycall.cs(1328))( 0000000003D2EFF0 )$$START-MEDIATIONSERVER
MediationCall: fe0263c95f8147e8b869ce8ab84741d3
CallId: ba5d3b00-a021fc77-69-16246c0a@1.1.1.2
From: sip:XXXXXXXXXX@1.1.1.2
To: sip:AAAAA@1.1.1.1
Direction: Inbound
Start-Line: GatewayCall SignalingState is disconnected, reason is: TerminatedRemotely
$$END-MEDIATIONSERVER
TL_INFO(TF_COMPONENT) [10]154C.1574::05/07/2009-15:21:00.866.00001f26 (MediationServer,MediationCall.Terminate:mediationcall.cs(216))( 000000000038DC1B )$$START-MEDIATIONSERVER
MediationCall: fe0263c95f8147e8b869ce8ab84741d3
CallId: ba5d3b00-a021fc77-69-16246c0a@1.1.1.2
From: sip:XXXXXXXXXX@1.1.1.2
To: sip:AAAAA@1.1.1.1:5060
Direction: Inbound
Start-Line: Mediation Call Terminate successfull.
$$END-MEDIATIONSERVER
TL_INFO(TF_COMPONENT) [10]154C.1574::05/07/2009-15:21:00.916.00001fcc (MediationServer,MediationCall.DisposeConference:mediationcall.cs(258))( 000000000038DC1B )$$START-MEDIATIONSERVER
MediationCall: fe0263c95f8147e8b869ce8ab84741d3
CallId: ba5d3b00-a021fc77-69-16246c0a@1.1.1.2
From: sip:XXXXXXXXXX@1.1.1.2
To: sip:AAAAA@1.1.1.1:5060
Direction: Inbound
Start-Line: Conference Disposed.
$$END-MEDIATIONSERVER
Couldn't see CISCO call manager passing DTMF signal to the Mediation server. I thought its better time to engage CISCO support professional... She could figure out the problem at Call Manager end. everything worked fine after she fixed the DTMF issue at Call Manager end.
The Office Communications Server 2007 R2 Capacity Planning Toolkit
provides a set of tools and documentation to simplify capacity planning for
Office Communications Server 2007 R2. The Capacity Planning Toolkit can be used
as a complement to the Microsoft Office Communications Server 2007 R2 Planning
Guide.
This release of the Office Communications Server 2007 R2 Capacity
Planning Toolkit contains tools and documentation to simplify your hardware
planning, provide you with increased knowledge and best practices for
performance tuning, and improve your ability to verify the performance of your
intended Office Communications Server 2007 R2 deployments.
The Capacity
Planning Toolkit is intended for use by IT professionals in a test environment
prior to production deployment. These tools should never be used against a
live production environment.
You can download this toolkit from following location....
http://www.microsoft.com/downloads/details.aspx?FamilyID=f8cbddd6-7608-4bbe-9246-16e96c62bef4&displaylang=en
This is one of the best features in the new release of Office Communications Server. There was Audio conferencing in OCS 2007 but the concept of bridge was missing. You couldn't create an audio room to invite the conference participants. One had to initiate the conference and invite others to let them join.
Office Communications Server admins missed this feature and often they integrated third party conferencing applications to enable this feature.
But now with the release of OCS 2007 R2... users would be able to create the conference room and share the details with others to join a conference. It means a user can join the conference if he\she does have proper details of conference.
An OCS user will have option to create both types of room - A conference for only AD authenticated participants and a conference which would allow anonymous users as well.
An OCS user will have option to create these conferences through Outlook.
Schedule a
conference with advanced options
By default, anyone with the conference calling number and your conference
ID can join your conference. If you want to restrict who can join your dial-in
conference, configure the following advanced Access options when
scheduling the conference:
·
Open Authenticated. Allow only participants that are in your organization to join the
meeting.
·
Closed Authenticated. Allow only invited participants within your organization to join the
meeting.
A sample conference entry information...

Install the Conferencing Add-In
Before you can schedule a conference that includes support for dial-in conferencing, you must install the Conferencing Add-in for Microsoft Outlook that was included with the Office Communications Server 2007 R2 installation media. Remove any earlier versions of the Microsoft Office Live Meeting client and Live Meeting add-in. Also ensure that Outlook is not running, and then install the more recent version of the add-in.
Microsoft Communicator 2007 R2 Attendant
================================
Microsoft Communicator 2007 R2 Attendant is an intuitive, integrated,
call management application that facilitates accurate & rapid call handling
and routing for front-line business professionals.
With Microsoft Communicator 2007 R2 Attendant you can handle
large call volumes, accept, manage and place calls on behalf of other contacts,
and use consultative, search and note-taking functionality to increase the
effectiveness of your daily collaboration.
This application is quite useful for the Enterprise voice enabled users. It gives much flexibility to manage the calls at the client end. After having Microsoft Communicator 2007 R2 Attendant as a client application, you wont miss your any phone device.It's a standalone call management client and alternative to Office Communicator 2007 R2. Its an optimized version for call management.
As a unified communication professional I have had some customers saying that the MOC 2007 is not sufficient to provide call management facilities to the users. These customers will definitely wear a smily after using this application. This is a smart application for a UC enabled user and it will make life of a UC enabled user much more easier.


Microsoft Office Communicator 2007 R2 Attendant Features
Single-screen UI for multi-call handling
Rich presence in contact list and groups
Integrated conversation history & rapid-reply
Confirmed blind transfer & call recovery
Conversation & contact categories, subject line
Templates for rapid conversation creation
Client-side Music on Hold
Repeat caller notification
Summary
=============================
Enterprises can have mixed deployment of OCS 2007 and OCS 2007 R2 in which they install the OCS 2007 Admin Tools to manage servers/users for OCS 2007. If they attempt to use the OCS 2007 Admin Tools to manage users who are on an OCS 2007 R2 pool they will get the following misleading error:
"This user is enabled on a previous version of the product, and cannot be administered with this version of the Office Communications Server User Property Page. Please use the appropriate version of LCS MMC to administer the user. You may use the Office Communications Server Move User Wizard to move LCS 2005 SP1 users to Office Communications Server."
The OCS 2007 Admin Tools are only for managing users on an OCS 2007 pool.
The OCS 2007 R2 Admin Tools are only for managing users on an OCS 2007 R2 pool.
During my job as unified communications engineer, one of the
frequent problems I encounter is "Outlook Integration Error" warning
alert, appearing in Microsoft Office Communicator 2007.
Assuming that you have outlook 2007 and Microsoft office
Communicator 2007 installed on the client, I follow the following steps to
ensure that the issue gets resolved.
1. I ensure that MOC 2007 and Outlook 2007 are properly patched.
2. Check if the SIP Address and Primary email address are same. If
they aren't same, follow the following kb.
http://support.microsoft.com/kb/951644
3. Ensure that the Exchange 2007 web services are configured
and behaving properly. The Autodiscover service should be configured on https
in order to ensure that the Microsoft Office Communicator gets free\busy
information properly.
=========================================================================================================
Anish K Pandey (Exchange Support Engineer -
anishp@microsoft.com) talks further about how to resolve the
"Outlook Integration Error" if it is caused by the Exchange Web services.
Before
we begin, we should understand how Autodiscover in Exchange 2007 works. Here is
the whitepaper link for Autodiscover: http://technet.microsoft.com/en-us/library/bb332063.aspx
and to understand Availability Service here is the link: http://technet.microsoft.com/en-us/library/bb232134.aspx.
Note: Autodiscover should be working over HTTPS
for the Office Communicator to get the Free/Busy information via Availability
service.
Scenario 1:
In the case where an Internal MS Certificate
OR Self Signed Certificate is configured on Client Access Server. There are few
things which we should keep in mind.
As the Internal
MS Certificate OR Self Signed Certificate is not trusted publicly, we have to
install the ROOT CA on every client where we are using Outlook 2007 SP1 &
Office Communicator. Outlook clients can get the AVAILABILITY service on HTTP,
I mean if Autodiscover fails on HTTPS then it would fall back to HTTP and find
the SCP (Service Connection Point), however Office Communicator will not fall
back on HTTP as it only works on HTTPS to get the Availability service which
in-turn updates the free/busy information. (as mentioned earlier, in absence of
free\busy information the MOC 2007 will report "Outlook Integration
Error".)
Secondly we
should have the Autodiscover & EWS virtual directories in IIS on Windows
Integrated Authentication method.
We should also
make sure that URLs for ClientAccessServer, EWS are set properly. Please refer
kb article: http://support.microsoft.com/kb/940726
(I have fixed many cases with this article).
Scenario 2:
In the case where a 3rd Party
Certificate is being used (like VeriSign, Go Daddy etc) then we just have to
follow the above step 2 & 3 as the 3rd Party certificates
(no need to install the ROOT CA on each and every Windows based client
machines, as Windows CE does have these certs by default) are publicly trusted.
=========================================================================================================
Outlook
DLLs used by Microsoft Office Communicator
Following table talks about the supported number of connections in different topologies defined in the planning guide of OCS 2007.
You can find the planning guide here... http://www.microsoft.com/downloads/details.aspx?familyid=723347c6-fa1f-44d8-a7fa-8974c3b596f4&displaylang=en
|
Topology
|
Supported Performance
|
|
Stand-alone Access Edge Server
|
15,000 client connections
|
|
Stand-alone Web Conferencing Edge Server
|
3,000 client connections
|
|
Stand-alone A/V Edge Server
|
1,500 concurrent audio/video sessions
|
|
Collocated Access Edge & Web Conferencing Edge
Server
|
Access Edge Server:
5,000 client connections
Web Conferencing Edge Server: 1,500 client
connections
|
|
Collocated Access Edge, Web Conferencing Edge &
A/V Edge Servers (Consolidated Edge Topology)
|
Access Edge Server:
5,000 client connections
Web Conferencing Edge Server: 1,000 client connections
A/V Edge Server 500 concurrent audio/video sessions
Note A/V
experience may be degraded if sessions approach the maximum limit. We
recommend that you deploy a separate A/V Edge Server for the optimal A/V
experience
|
Here we assume that the topologies consists of servers as per following table:
|
Topology
|
Servers Required
|
Maximum Users Supported
|
|
Standard Edition Server
|
1 Standard Edition server
(Optional) Archiving Server collocated
|
5,000
|
|
Enterprise
pool: Consolidated Configuration
|
4 Enterprise Edition Front-End servers running all
server roles
1 Backend SQL Server
(Optional) 1 Archiving Server
|
30,000
|
|
Enterprise pool: Expanded configuration
With Mid-Range Performance SQL Backend
|
4 Front-End Servers
2 Web Conferencing Servers
2 A/V Conferencing Servers
2 IIS Servers
1 Backend SQL Server
(Optional) 1 Archiving Server
|
50,000
|
|
Enterprise pool: Expanded configuration
With High Performance SQL Backend
|
8 Front-End Servers
4 Web Conferencing Servers
4 A/V Conferencing Servers
2 IIS Servers
1 Backend SQL Server
(Optional)2 Archiving Servers
|
125,000
|
When any external or Internal user calls a user in OCS-UM enabled environement, The OCS Server selects the UM server for Voice mail facility. Following steps explain how does this happen -
- OCS will determine SIP Address of the dialed number
- It will check if the user is enabled for Unified Messaging. The attribute it will query is "MSExchUMEnabledFlag"
- If the user is enabled for UM, It will query proxyAddress (EUM type) of the user.
- OCS Server will find out the dial plan name from EUM Proxy Address
- OCS Server will query Dial Plan object to find out the list of Exchange UM servers assigned to it.
- OCS Server will select the Exchange UM Server based on routing logic
- If it doesn't get response from the first Exchange UM Server it selected, It will select the second Exchange UM Server
Routing to UM server involves determining which UM server is able to service the request of the user and how to route the call to that particular UM server
The routing feature has following characteristics:
-
Determine the UM server to route the call.
-
If more than one UM server is linked to the dial plan then try a different server if the first server does not respond.
-
Generate request that UM can understand and process.
-
Establish media session between UM server and UC client.
There is a seamless integration between Exchange and OCS. so the exchange client (Outlook) and OCS client (MOC) needs to share the DLLs before they could access each others information. This article talks about those outlook DLLs which communicator uses for different purposes.
The following (Outlook) files are held "in use" when Communicator 2005 or Communicator 2007 is running:
• Contab32.dll ---This is for the address book.
• Emsmdb32.dll ---This is an exchange extensions dll used for the Mailbox
• Mspst32.dll -- For store access (PST, and I believe OST)
• Mso.dll -- general Office functionality common to all applications, for example, toolbars, file open/save UI, etc.
• Olmapi32.dll
• Riched20.dll -- rich-text editing code
If Communicator 2007 is running, the following file is also held "in use"
•Msores.dll -- similar to mso.dll above, but res files should contain all of the language-specific resources, such as language-specific strings that appear in
dialog boxes, errors, etc.
If there is any problem with Outlook-communicator integration, the very first thing we need to check if these two are updated with latest patch or not!
Communicator and outlook both should be properly updated in order to ensure that both perform the integration features without any problem.
Just to make it available handy...
How to prepare schema for LCS\OCS
LCScmd.exe /forest /action:Schemaprep
How to verify if schema is prepared for LCS\OCS
LCScmd.exe /forest /action:checkschemaprepstate
How to prepare the forest for LCS\OCS
LCScmd.exe /forest /action:ForestPrep
How to verify if the forest is prepared for LCS\OCS
LCScmd.exe /forest /action:CheckForestPrepState
How to prepare the domain for LCS\OCS
LCScmd.exe /domain:myopwv.com /action:DomainPrep
How to verify if the domain is prepared for LCS\OCS
LCScmd.exe /domain:myopwv.com /action:CheckDomainPrepState
OCS 2007 supportability issues on Windows Server 2008
Normalization of the dialed number into E.164 format has been an interesting thing always! I am not going to explain the normalization rules here.. What we are going to discuss is the end point where Normalization rule does take place to translate the dialed number into E.164 format..
Each user is assigned a location Profile, and upon dialing a phone number, the ordered list of normalization rules associated with the user's location profile are applied. If a first match to a normalization rule is found, the client translates the phone number into E.164 format before the SIP request is sent to the user's home pool. If a match is not found, the phone number is still sent to the user's home pool, but it is tagged as a dial string because it couldn't be normalized.
The dial string that the client sends to Office communications Server includes a phone-context attribute that specifies the name of the user's location profile. the server attempts to resolve the phone number by using the specified location profile normalization rules.
Note: During in-bound provisioning the clients cache normalization rule from ocs server based on their location profile. same rule they apply while doing normalization of any number.
So the translation of number with the help of normalization rules happens at the communicator and communications server both end. It depends on the situation. If communicator could normalize the number then the normalized number will be sent to the Office Communications server. If the communicator cant normalize due to any reason the number will be again tried to normalize at the Office Communications Server end.
See how does Reverse Name Lookup work!
when an External User makes call to the internal user(Inbound Logic)
Note: Its strongly recommended to migrate LCS 2003 setup to LCS 2005 sp1 before migrating to OCS 2007. Still we have some workaround to acheive the same.
I recently encountered a situation where the customer had already installed OCS 2007 in his LCS 2003 Active Directory. Now they didnt have any other option than searching for workaround to move their users directly from LCS 2003 to OCS 2007.
Main problem behind direct migration from LCS 2003 to OCS 2007 is that you dont have any tool to migrate users from LCS 2003 to OCS 2007.
If you have LCS 2005 sp1 setup, the LCS server will apear in OCS 2007 console. You can see LCS users in OCS 2007 console. You can right click the LCS users and select to move the users to OCS 2007. We dont have this luxury with LCS 2003 setup.
You have only one option to manually changing home server of a user from LCS 2003 to OCS 2007. If you do this you will loose the contact list of this user.
So the solution includes taking backup of the contact list from LCS 2003 and importing it to the OCS 2007 database. Sequence will follow as this:
a) Take backup of LCS 2003 users contact list using OCS 2007 dbimpexp.exe tool.
b) Change Home server FQDN from LCS 2003 to OCS 2007 FQDN. You need to do it either manually or using any script.
c) Restore the contact list to the OCS 2007 database using dbimpexp.exe tool of OCS 2007.
This operation is not supported by Microsoft and involves more manual operations... but still you can achive it!
Related Links
Move Users to a Different Live Communications Server or Pool
How to export and import contact list (dbimpexp.exe)
This artcile talks about how can you enable your MOC 2007 to have the status "Appear Offline". Once you have this status, you can set yourself to appear offline while you are online.
By default presence status in your office communicator will look like as follow.

If you want to add more custom status, click here…
I followed this link to set following 4 different status in the office communicator.

There might be times when you want to login in office communicator but you don’t want to appear online. You would like to set the status as “appear offline”. Since you dont have this option by default in MOC 2007, you need to modify following group policy before you could get this option in MOC 2007.

The policy name is “Enable the state Appear Offline” in the group policy. You need to enable it and ensure that the policy gets applied. (You might want to run gpupdate /force after applying this change).
Note: You will get above group policy setting after importing Communicator.adm template in the group policy object.
You can enable “Appear offline” status in office communicator using registry editor as well.
You need to create following registry DWORD and set its value as 1 to enable it.
The DWORD name is EnableAppearOffline, type is REG_DWORD and location is
My Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Communicator.
After making above change, exit from office communicator (from system tray) and relaunch it.
After signing back into Microsoft Office Communicator 2007, you should be able to see “Appear offline” status as follow.

And thats it!!!
Related Article:
How to set custom status in MOC 2007
How to be visible to defined contacts only
MOC 2007 Group Policies