Sunday, January 31, 2010
MCITP: Server Administrator (Windows 2008)
Just passed 70-649 today with score 1000!! Not expecting that, but hey, I am officially an MCITP: Server Administrator
Monday, January 18, 2010
Passed Exam 70-646
With the score 925!! Not bad for the first exam of year 2010!
Keep going forward, next one is 70-649
Keep going forward, next one is 70-649
Sunday, January 10, 2010
Citrix Xen Application DataStore Move
To move SQL database from the old server to the new server:
- Stop IMA service on all Citrix servers
- Take a full backup of the data store DB from the old server
- Restore the backup to the new SQL server
- Edit the MF20.DSN ODBC file on Zone data collector server
- Change the old server to the new server
- Run the following command
C:> dsmaint config /user:sql-username /pwd:sql-password /dsn:"C:\Program Files\Citrix\Independent Management Architecture\MF20.dsn"
C:> dsmaint recreatelhc
- Start the IMA service
- Do the same thing for the rest of the servers
Sunday, December 20, 2009
Exchange 2010 Migration - Part 6
To uninstall the existing Exchange 2007 mailbox role, the public folder database of it has to be removed
Part 6 - Exchange 2007 Public Folder Removal
Environment:
1 x Exchange 2007 SP2 (Mailbox)
1 x Exchange 2010 (CAS, Hub and UM)
1 x Exchange 2010 (Mailbox)
Move all the replica from the 2007 to 2010. From the Mailbox server of 2007, run this command:
[PS] MoveAllReplicas.ps1 -server -NewServer
Then try to remove the Public Folder database from the Exchange 2007. You might get the following error:
Object is read only because it was created by a future version of Exchange ...
If you do, you need to run the following PS from the Exchange 2010:
[PS] C:\>Remove-PublicFolderDatabase -Identity "\Second Storage Group\Public Folder Database"
If the removal is done, you can start deleting the Storage Group and uninstall the Exchange 2007 Mailbox role
Part 6 - Exchange 2007 Public Folder Removal
Environment:
1 x Exchange 2007 SP2 (Mailbox)
1 x Exchange 2010 (CAS, Hub and UM)
1 x Exchange 2010 (Mailbox)
Move all the replica from the 2007 to 2010. From the Mailbox server of 2007, run this command:
[PS] MoveAllReplicas.ps1 -server
Then try to remove the Public Folder database from the Exchange 2007. You might get the following error:
Object is read only because it was created by a future version of Exchange ...
If you do, you need to run the following PS from the Exchange 2010:
[PS] C:\>Remove-PublicFolderDatabase -Identity "
If the removal is done, you can start deleting the Storage Group and uninstall the Exchange 2007 Mailbox role
Thursday, December 17, 2009
Exchange 2010 Migration - Part 5
Exchange 2010 has a built in support for MWI and I am using a Cisco Phone which has MWI feature
Part 5 - Exchange 2010 MWI (Message Waiting Indicator)
Existing Environment:
1 x Exchange 2007 SP2 (Mailbox)
1 x Exchange 2010 (CAS, Hub and UM)
1 x Exchange 2010 (Mailbox)
If you do not enable the MWI of your SIP trunk between your Exchange UM and CUCM, you will get this event log warning:
The Unified Messaging server failed to deliver the MWI notification '1/7 (unread/read)' for the UM-enabled mailbox '(3037b9d1-3554-45af-8a68-077e54104120)' associated with UM extension 'xxxxx'. Additional information: Microsoft.Exchange.UM.UMCommon.MwiNoTargetsAvailableException: There are no more targets available to send an MWI message for user .
To get it working, you need to do the following:
Part 5 - Exchange 2010 MWI (Message Waiting Indicator)
Existing Environment:
1 x Exchange 2007 SP2 (Mailbox)
1 x Exchange 2010 (CAS, Hub and UM)
1 x Exchange 2010 (Mailbox)
If you do not enable the MWI of your SIP trunk between your Exchange UM and CUCM, you will get this event log warning:
The Unified Messaging server failed to deliver the MWI notification '1/7 (unread/read)' for the UM-enabled mailbox '(3037b9d1-3554-45af-8a68-077e54104120)' associated with UM extension 'xxxxx'. Additional information: Microsoft.Exchange.UM.UMCommon.MwiNoTargetsAvailableException: There are no more targets available to send an MWI message for user .
To get it working, you need to do the following:
- Login to CUCM, go to System - Security Profile - SIP Trunk Security Profile
- Find the SIP Trunk Security Profile that is being used by the SIP trunk between Exchange UM and CUCM
- Edit it and make sure the option Accept Unsolicited Notification is enable and reset the trunk
Exchange 2010 Migration - Part 4
Since my mailbox been migrated to the Exchange 2010 mailbox, I wasn't been able to receive my voicemail through my Outlook
Existing Environment:
1 x Exchange 2007 SP2 (Mailbox)
1 x Exchange 2010 (CAS, Hub and UM)
1 x Exchange 2010 (Mailbox)
Part 4 - UM and Hub Transport Issue
The following error occurred on my UM/Hub Transport server:
The Unified Messaging server failed to submit a message to Hub Transport server 'Hub01' due to the following error: Unexpected SMTP server response. Expected: 220, actual: 500, whole response: 500 5.3.3 Unrecognized command
According to some forums, this occurs because the communication between the UM and Hub Transport server is using TLS and I don't have a valid SSL certificate.
To fix this, either buy a valid certificate and assign it to the UM and SMTP service or do the following:
Existing Environment:
1 x Exchange 2007 SP2 (Mailbox)
1 x Exchange 2010 (CAS, Hub and UM)
1 x Exchange 2010 (Mailbox)
Part 4 - UM and Hub Transport Issue
The following error occurred on my UM/Hub Transport server:
The Unified Messaging server failed to submit a message to Hub Transport server 'Hub01' due to the following error: Unexpected SMTP server response. Expected: 220, actual: 500, whole response: 500 5.3.3 Unrecognized command
According to some forums, this occurs because the communication between the UM and Hub Transport server is using TLS and I don't have a valid SSL certificate.
To fix this, either buy a valid certificate and assign it to the UM and SMTP service or do the following:
- Find the Receive Connector (within Server Configuration - Hub Transport) that most likely to be used by the UM to communicate with the Hub Transport. Usually it will use the more specific network addresses from the network tab of its properties
- On the Authentication tab, untick all TLS related options. Make sure Exchange Server authentication is selected
- On the Permission Groups tab, make sure Exchange servers is selected
- Restart Transport and UM Exchange services
Sunday, December 13, 2009
Exchange 2010 Migration - Part 3
Since my user account has been migrated to Exchange 2010, my iPhone ActiveSync is broken.
Existing Environment:
1 x Exchange 2007 SP2 (Mailbox)
1 x Exchange 2010 (CAS, Hub and UM)
1 x Exchange 2010 (Mailbox)
Part 3 - ActiveSync Issue
The following event log will be seen on the CAS server:
Exchange ActiveSync doesn't have sufficient permissions to create the "CN=User,OU=Users,DC=domain,DC=local" container under Active Directory user "Active Directory operation failed on dc.domain.local. This error is not retriable. Additional information: Access is denied.Active directory response: 00000005: SecErr: DSID-03151E04, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0".Make sure the user has inherited permission granted to domain\Exchange Servers to allow List, Create child, Delete child of object type "msExchangeActiveSyncDevices" and doesn't have any deny permissions that block such operations.
It turns out that the AD user account is a member of the protective group (e.g. Domain Admins).
To fix this, remove the user from the protective group, go to the user's properties - security - Advanced and tick "Include inheritable permissions from this object's parent"
I had to remove my exchange account from my iPhone and re-add it back to make it work.
Existing Environment:
1 x Exchange 2007 SP2 (Mailbox)
1 x Exchange 2010 (CAS, Hub and UM)
1 x Exchange 2010 (Mailbox)
Part 3 - ActiveSync Issue
The following event log will be seen on the CAS server:
Exchange ActiveSync doesn't have sufficient permissions to create the "CN=User,OU=Users,DC=domain,DC=local" container under Active Directory user "Active Directory operation failed on dc.domain.local. This error is not retriable. Additional information: Access is denied.Active directory response: 00000005: SecErr: DSID-03151E04, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0".Make sure the user has inherited permission granted to domain\Exchange Servers to allow List, Create child, Delete child of object type "msExchangeActiveSyncDevices" and doesn't have any deny permissions that block such operations.
It turns out that the AD user account is a member of the protective group (e.g. Domain Admins).
To fix this, remove the user from the protective group, go to the user's properties - security - Advanced and tick "Include inheritable permissions from this object's parent"
I had to remove my exchange account from my iPhone and re-add it back to make it work.
Tuesday, December 01, 2009
Exchange 2010 Migration - Part 2
Existing Environment:
1 x Exchange 2007 SP2 (CAS,Hub and UM)
1 x Exchange 2007 SP2 (Mailbox)
1 x Exchange 2010 (CAS, Hub and UM)
1 x Exchange 2010 (Mailbox)
Part 2 - Migrate Users
From Exchange Management Console - Add a local move request to move user mailbox
I have CUCM that was setup with SIP trunk to the 2007 UM, so I need to re-point it to the 2010 UM - Change CUCM SIP Trunk to 2010 UM's IP Address
Generate SSL Cert for 2010 CAS - Go to IIS 7 of the CAS and generate CSR. Replace the self-signed SSL cert with the new one
I am using ISA 2006 to publish Outlook Web App and ActiveSync - Change owa and ecp authentication to Basic. Do this from EMC - Server Configuration - Client Access
Change ISA OWA publishing rule to point to the new 2010 CAS
Change ISA OWA publishing rule to add /ecp/* to the paths of the publishing rule
1 x Exchange 2007 SP2 (CAS,Hub and UM)
1 x Exchange 2007 SP2 (Mailbox)
1 x Exchange 2010 (CAS, Hub and UM)
1 x Exchange 2010 (Mailbox)
Part 2 - Migrate Users
From Exchange Management Console - Add a local move request to move user mailbox
I have CUCM that was setup with SIP trunk to the 2007 UM, so I need to re-point it to the 2010 UM - Change CUCM SIP Trunk to 2010 UM's IP Address
Generate SSL Cert for 2010 CAS - Go to IIS 7 of the CAS and generate CSR. Replace the self-signed SSL cert with the new one
I am using ISA 2006 to publish Outlook Web App and ActiveSync - Change owa and ecp authentication to Basic. Do this from EMC - Server Configuration - Client Access
Change ISA OWA publishing rule to point to the new 2010 CAS
Change ISA OWA publishing rule to add /ecp/* to the paths of the publishing rule
Monday, November 30, 2009
Exporting Active Directory Group Membership
Save this code as a .vbs file:
Dim objGroup, objUser, objFSO, objFile, strDomain, strGroup, Domain, Group
'user Input box
strDomain = Inputbox ("Enter the FQDN Domain name, e.g. domain.com", "Domain Name", "Domain Name")
strGroup = InputBox ("Enter the NetBIOS Group name, e.g. mygroup", "Group Name", "Group Name")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("C:\temp\" & strGroup & ".txt")
Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")
For Each objUser In objGroup.Members
objFile.WriteLine objUser.Fullname & " (" & objUser.Name & ")"
Next
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing
Set objUser = Nothing
Set objGroup = Nothing
Wscript.Echo "Group Membership Exported to the file: " & "C:\temp\" & strGroup & ".txt"
Dim objGroup, objUser, objFSO, objFile, strDomain, strGroup, Domain, Group
'user Input box
strDomain = Inputbox ("Enter the FQDN Domain name, e.g. domain.com", "Domain Name", "Domain Name")
strGroup = InputBox ("Enter the NetBIOS Group name, e.g. mygroup", "Group Name", "Group Name")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("C:\temp\" & strGroup & ".txt")
Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroup & ",group")
For Each objUser In objGroup.Members
objFile.WriteLine objUser.Fullname & " (" & objUser.Name & ")"
Next
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing
Set objUser = Nothing
Set objGroup = Nothing
Wscript.Echo "Group Membership Exported to the file: " & "C:\temp\" & strGroup & ".txt"
Saturday, November 28, 2009
Exchange 2010 Migration - Part 1
Existing Environment:
1 x Exchange 2007 SP2 (CAS,Hub and UM)
1 x Exchange 2007 SP2 (Mailbox)
1 x Exchange 2010 (CAS, Hub and UM)
Part 1 - Install Mailbox Role of Exchange 2010
OS: Windows 2008 R2 x64
Add .NET framework 3.5.1 features
Install filter 1.0 pack x64
Run As Administrator: Cmd
Go to Scripts folder of Exchange installation CD/Folder
ServerManagerCmd -ip Exchange-MBX.xml -Restart
Note: the above command is for Windows 2008 SP2, but works fine for 2008 R2
Add "Exchange Trusted Subsystem" as the local admin group in all Exchange 2007 Servers and reboot them, otherwise you will get "access denied" error when trying to view the OWA/ActiveSync configuration from 2010 console
To be continue...
1 x Exchange 2007 SP2 (CAS,Hub and UM)
1 x Exchange 2007 SP2 (Mailbox)
1 x Exchange 2010 (CAS, Hub and UM)
Part 1 - Install Mailbox Role of Exchange 2010
OS: Windows 2008 R2 x64
Add .NET framework 3.5.1 features
Install filter 1.0 pack x64
Run As Administrator: Cmd
Go to Scripts folder of Exchange installation CD/Folder
ServerManagerCmd -ip Exchange-MBX.xml -Restart
Note: the above command is for Windows 2008 SP2, but works fine for 2008 R2
Add "Exchange Trusted Subsystem" as the local admin group in all Exchange 2007 Servers and reboot them, otherwise you will get "access denied" error when trying to view the OWA/ActiveSync configuration from 2010 console
To be continue...
Wednesday, October 28, 2009
Tuesday, October 27, 2009
VMware Workstation Network Issue
If you try to copy a large file from within the VM to another machine on the network and get the following error: Specified Network is no longer available, then add the following line to your VM's vmx file:
ethernet0.txbw.limit=100000
ethernet0.rxbw.limit=100000
ethernet0.txbw.limit=100000
ethernet0.rxbw.limit=100000
Wednesday, October 14, 2009
Exchange 2007 Cmdlet - Remove a particular email domain from the org
The fastest way to remove @target.local from AD objects across the Org:
Get-Mailbox -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-Mailbox -emailaddresses $b }
Get-DistributionGroup -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-DistributionGroup -emailaddresses $b }
Get-DynamicDistributionGroup -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-DynamicDistributionGroup -emailaddresses $b }
Get-MailContact -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-MailContact -emailaddresses $b }
Get-MailPublicFolder -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-MailPublicFolder -emailaddresses $b }
Get-MailUser -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-MailUser -emailaddresses $b }
#Get-Recipient -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-Recipient -emailaddresses $b }
Get-Mailbox -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-Mailbox -emailaddresses $b }
Get-DistributionGroup -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-DistributionGroup -emailaddresses $b }
Get-DynamicDistributionGroup -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-DynamicDistributionGroup -emailaddresses $b }
Get-MailContact -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-MailContact -emailaddresses $b }
Get-MailPublicFolder -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-MailPublicFolder -emailaddresses $b }
Get-MailUser -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-MailUser -emailaddresses $b }
#Get-Recipient -organizationalunit 'dc=domain,dc=local' | % { $a = $_.emailaddresses; $b = $_.emailaddresses; foreach($e in $a) { if ($e.tostring() -match "target.local") { $b -= $e; } } ; $_ Set-Recipient -emailaddresses $b }
Sunday, October 11, 2009
Register 32-Bit OCX on 64-Bit Windows
A simple thing to do, but if you do not know, you will get an error when trying to register 32-bit OCX/Dll on 64-Bit Windows.
Copy the OCX/Dll file to C:\Windows\SysWow64
C:\Windows\SysWow64\regsvr32.exe C:\Windows\SysWow64\thefile.ocx
Copy the OCX/Dll file to C:\Windows\SysWow64
C:\Windows\SysWow64\regsvr32.exe C:\Windows\SysWow64\thefile.ocx
Wednesday, September 23, 2009
Microsoft Teched 2009 @ Gold Coast
Friday, September 04, 2009
Simple Trick - CAG SSL Certificate Installation
It is a very painfull process to install an SSL certificate to the Citrix Access Gateway appliance.
The easiest way is to generate the CSR from any IIS server, generate/purchase the SSL certificate using that CSR and install the signed certificate/public key to the IIS where the CSR was generated from.
Next is to export that certificate (including the private key) from IIS as PFX format
Next is to convert this PFX format certificate to PEM format using the tool (Google this: pfx2pem)
Install this PEM format certificate to CAG
The easiest way is to generate the CSR from any IIS server, generate/purchase the SSL certificate using that CSR and install the signed certificate/public key to the IIS where the CSR was generated from.
Next is to export that certificate (including the private key) from IIS as PFX format
Next is to convert this PFX format certificate to PEM format using the tool (Google this: pfx2pem)
Install this PEM format certificate to CAG
Sunday, August 09, 2009
CUCM + Trixbox + Linksys SPA3102 (Part 1)
This is a basic guide how to create a small VOIP network at home. I am using Cisco Unified Communication Manager, Trixbox and Linksys SPA3102 as the main infrastructure. Furthermore, Cisco IP Phone 7941G-GE, Cisco IP Phone CIPC and X-Lite are the IP Phones installed.
The configuration is basically having CUCM to handle 1XXX extensions and Trixbox to handle 2XXX extensions. Tribox is central IP PBX to handler outgoing and incoming calls.
The main goals for this Part#1 are:
Here is the data/voice layout:

The version being used is:
CUCM: 6.0.1.2000-4
Trixbox: 2.8.0.1
SPA3102 Firmware: 5.1.10(GW)
DHCP Setting
Add the following DHCP options point to the CUCM IP address
Options 66
Options 150
Cisco Unified CM Configuration
Enable Services
Go to Cisco Unified Serviceability -> Tools -> Service Activation, enable the following services:
Cisco CallManager
Cisco Tftp
Cisco IP Voice Media Streaming App
Start Services
Go to Cisco Unified Serviceability -> Control Center -> Feature Services, start the following services:
Cisco CallManager
Cisco Tftp
Cisco IP Voice Media Streaming App
Auto Registration
Go to Cisco Unified CM Administration -> System -> Cisco Unified CM
Starting Directory Number*: 1000 (for example)
Ending Directory Number*: 1500 (for example)
Un-tick "Auto-Registration Disabled on this Cisco Unified Communication Manager" checkbox
Cisco Unified CM Group Configuration
Go to Cisco Unified CM Administration -> System -> Cisco Unified CM Group
Create a new Group
Give a name
Tick "Auto-registration Cisco Unified Communications Manager Group" checkbox
Add the CUCM Server to the group member
Phone NTP Reference
Go to Cisco Unified CM Administration -> System -> Phone NTP Reference
Add a new Reference
Assign an IP Address
Mode* = default
Date/Time Group
Go to Cisco Unified CM Administration -> System -> Date/Time Group
Create a new Group
Give a name
Select time Zone, separator, date format and time format
Select NTP References from the configuration above
Device Pool
Go to Cisco Unified CM Administration -> System -> Device Pool
Create a new Device Pool
Give a name
Cisco Unified Communications Manager Group* = #select from the one created above
Region* = default
SRST Reference* = Use Default Gateway
SIP Trunk Security Profile
Go to Cisco Unified CM Administration -> System -> Security Profile -> SIP Trunk Security Profile
Create a new Profile
Give a name
Incoming Transport Type*= TCP_OR_UDP
Outgoing Transport Type*= USER_DATAGRAM_PROTOCOL
Incoming Port*= 5060
Create SIP Trunk
Go to Cisco Unified CM Administration -> Device -> Trunk
Add a new SIP Trunk
Give a name
Device Pool* = #select from the one created above
Route Group
Go to Cisco Unified CM Administration -> Call Routing -> Route/Hunt -> Route Group
Add a new one
Give a name
Add the SIP Trunk created above to the member of the Route Group
Route List
Go to Cisco Unified CM Administration -> Call Routing -> Route/Hunt -> Route List
Add a new one
Give a name
Cisco Unified Communications Manager Group* = #select from the one created above
Route Option = Route this pattern
Tick "Provide Outside Dial Tone" checkbox
Add a new oneRoute Pattern* = 0.!
Gateway/Route List* = #select from the one created above
Route Option = Route this pattern
Trixbox Configuration
Create SIP Trunk to CUCM
Go to PBX -> PBX Settings -> Trunks
Add SIP Trunk
Trunk Name = CUCM
Peer Details:
disallow=all
type=friend
host= #cucm-address
allow=ulaw&alaw
nat=no
canreinvite=yes
qualify=yes
User Context: CUCM-IN
User Settings:
context=from-internal
host=#cucm-address
type=friend
Create SIP Trunk to VOIP Provider
Go to PBX -> PBX Settings -> Trunks
Add SIP Trunk
Outbound Caller ID: "Name"
Dial Rules:
612+NXXXXXXX
04.
0011.
61+13XXXX
61+1800XXXXXX
#Note: Dial rules are created because my VOIP Provider requires the number format to be International format
Trunk Name = voip
Peer Details:
allow=alaw&ulaw&gsm
canredirect=no
canreinvite=no
disallow=all
host= #voip-address
insecure=very
secret= #password
type=peer
username= #username
User Context: User
User Details:
canreinvite=no
context=fromtrunk
fromuser= #username
qualify=no
secret= #password
type=user
username= #username
Registration String:
#username:#password@#void-address/#username
Create SIP Trunk to PSTN
Go to PBX -> PBX Settings -> Trunks
Add SIP Trunk
Outbound Caller ID: "DID"
Maximum Channels: 1
Trunk Name: pstn
Peer Details:
disallow=all
allow=ulaw
canreinvite=no
context=fromtrunk
dtmfmode=rfc2833
host= #spa3102-address
incominglimit=1
nat=never
port=5061
qualify=yes
secret= #password
type=friend
username=pstn
Create Outbound Routes
#There will be 3 route patterns:
Dial 9, to go to VOIP
Dial 0, to go to PSTN
Dial 1XXX to go to SIP Phones registered with CUCM
Go to PBX -> PBX Settings -> Outbound Routes
Add Route
Name: VOIP
Dial Patterns: 9.
Trunk Sequence: SIP/Pennytel
Add Route
Name: PSTN
Dial Patterns: 0.
Trunk Sequence: SIP/pstn
Add Route
Name: CUCM
Dial Patterns: 1XXX
Trunk Sequence: SIP/CUCM
Allowing Incoming SIP Calls
Go to PBX -> PBX Settings -> General Settings
Allow Anonymous Inbound SIP Calls: Yes
Create Ring Groups
# This will allow incoming call to ring both my Cisco IP Phone (ext 1000) and my analog phone which connected to my SPA3102 (ext 2000)
Go to PBX -> PBX Settings -> Ring Groups
Give description
Ring strategy: ringall
Extension List:
2000
1000#
Create Inbound Routes
Go to PBX -> PBX Settings -> Inbound Routes
#Make sure to leave the DID and Caller ID number blank - this will accept all incoming routes
Set Destination:
Ring Group: #select the one created above
The configuration is basically having CUCM to handle 1XXX extensions and Trixbox to handle 2XXX extensions. Tribox is central IP PBX to handler outgoing and incoming calls.
The main goals for this Part#1 are:
- To be able to make a phone call between IP Phones by dialling their extension numbers (e.g. 1000 -> 1001, 1000 -> 2001, 1000 -> 2000, 2000 -> 1001, etc)
- Dial 9, followed by the numbers, to dial outside world via VOIP
- Dial 0, followed by the numbers, to dial outside world via PSTN
- To be able to receive incoming call from either PSTN or VOIP DID number and rings my IP Phone(s)
Here is the data/voice layout:
The version being used is:
CUCM: 6.0.1.2000-4
Trixbox: 2.8.0.1
SPA3102 Firmware: 5.1.10(GW)
DHCP Setting
Add the following DHCP options point to the CUCM IP address
Options 66
Options 150
Cisco Unified CM Configuration
Enable Services
Go to Cisco Unified Serviceability -> Tools -> Service Activation, enable the following services:
Cisco CallManager
Cisco Tftp
Cisco IP Voice Media Streaming App
Start Services
Go to Cisco Unified Serviceability -> Control Center -> Feature Services, start the following services:
Cisco CallManager
Cisco Tftp
Cisco IP Voice Media Streaming App
Auto Registration
Go to Cisco Unified CM Administration -> System -> Cisco Unified CM
Starting Directory Number*: 1000 (for example)
Ending Directory Number*: 1500 (for example)
Un-tick "Auto-Registration Disabled on this Cisco Unified Communication Manager" checkbox
Cisco Unified CM Group Configuration
Go to Cisco Unified CM Administration -> System -> Cisco Unified CM Group
Create a new Group
Give a name
Tick "Auto-registration Cisco Unified Communications Manager Group" checkbox
Add the CUCM Server to the group member
Phone NTP Reference
Go to Cisco Unified CM Administration -> System -> Phone NTP Reference
Add a new Reference
Assign an IP Address
Mode* = default
Date/Time Group
Go to Cisco Unified CM Administration -> System -> Date/Time Group
Create a new Group
Give a name
Select time Zone, separator, date format and time format
Select NTP References from the configuration above
Device Pool
Go to Cisco Unified CM Administration -> System -> Device Pool
Create a new Device Pool
Give a name
Cisco Unified Communications Manager Group* = #select from the one created above
Region* = default
SRST Reference* = Use Default Gateway
SIP Trunk Security Profile
Go to Cisco Unified CM Administration -> System -> Security Profile -> SIP Trunk Security Profile
Create a new Profile
Give a name
Incoming Transport Type*= TCP_OR_UDP
Outgoing Transport Type*= USER_DATAGRAM_PROTOCOL
Incoming Port*= 5060
Create SIP Trunk
Go to Cisco Unified CM Administration -> Device -> Trunk
Add a new SIP Trunk
Give a name
Device Pool* = #select from the one created above
Route Group
Go to Cisco Unified CM Administration -> Call Routing -> Route/Hunt -> Route Group
Add a new one
Give a name
Add the SIP Trunk created above to the member of the Route Group
Route List
Go to Cisco Unified CM Administration -> Call Routing -> Route/Hunt -> Route List
Add a new one
Give a name
Cisco Unified Communications Manager Group* = #select from the one created above
Route Option = Route this pattern
Tick "Provide Outside Dial Tone" checkbox
Add a new oneRoute Pattern* = 0.!
Gateway/Route List* = #select from the one created above
Route Option = Route this pattern
Trixbox Configuration
Create SIP Trunk to CUCM
Go to PBX -> PBX Settings -> Trunks
Add SIP Trunk
Trunk Name = CUCM
Peer Details:
disallow=all
type=friend
host=
allow=ulaw&alaw
nat=no
canreinvite=yes
qualify=yes
User Context: CUCM-IN
User Settings:
context=from-internal
host=#cucm-address
type=friend
Create SIP Trunk to VOIP Provider
Go to PBX -> PBX Settings -> Trunks
Add SIP Trunk
Outbound Caller ID: "Name"
Dial Rules:
612+NXXXXXXX
04.
0011.
61+13XXXX
61+1800XXXXXX
#Note: Dial rules are created because my VOIP Provider requires the number format to be International format
Trunk Name = voip
Peer Details:
allow=alaw&ulaw&gsm
canredirect=no
canreinvite=no
disallow=all
host=
insecure=very
secret=
type=peer
username=
User Context: User
User Details:
canreinvite=no
context=fromtrunk
fromuser=
qualify=no
secret=
type=user
username=
Registration String:
Create SIP Trunk to PSTN
Go to PBX -> PBX Settings -> Trunks
Add SIP Trunk
Outbound Caller ID: "DID"
Maximum Channels: 1
Trunk Name: pstn
Peer Details:
disallow=all
allow=ulaw
canreinvite=no
context=fromtrunk
dtmfmode=rfc2833
host=
incominglimit=1
nat=never
port=5061
qualify=yes
secret=
type=friend
username=pstn
Create Outbound Routes
#There will be 3 route patterns:
Dial 9, to go to VOIP
Dial 0, to go to PSTN
Dial 1XXX to go to SIP Phones registered with CUCM
Go to PBX -> PBX Settings -> Outbound Routes
Add Route
Name: VOIP
Dial Patterns: 9.
Trunk Sequence: SIP/Pennytel
Add Route
Name: PSTN
Dial Patterns: 0.
Trunk Sequence: SIP/pstn
Add Route
Name: CUCM
Dial Patterns: 1XXX
Trunk Sequence: SIP/CUCM
Allowing Incoming SIP Calls
Go to PBX -> PBX Settings -> General Settings
Allow Anonymous Inbound SIP Calls: Yes
Create Ring Groups
# This will allow incoming call to ring both my Cisco IP Phone (ext 1000) and my analog phone which connected to my SPA3102 (ext 2000)
Go to PBX -> PBX Settings -> Ring Groups
Give description
Ring strategy: ringall
Extension List:
2000
1000#
Create Inbound Routes
Go to PBX -> PBX Settings -> Inbound Routes
#Make sure to leave the DID and Caller ID number blank - this will accept all incoming routes
Set Destination:
Ring Group: #select the one created above
Wednesday, August 05, 2009
Exchange 2007 Room Mailbox
To create a meeting room mailbox with Cmdlet:
New-Mailbox -Name 'My Meeting Room' -Alias 'MeetRoom01' -OrganizationalUnit 'domain.com/Users' -UserPrincipalName 'MeetRoom01@domain.com' -SamAccountName 'MeetRoom01' -FirstName 'Meet' -Initials '' -LastName 'Room 01' -Database 'MyExchange\SG\DB' -Room
To make the room auto answer accepting the invitation:
Set-MailboxCalendarSettings -Identity "MeetRoom01" -AutomateProcessing AutoAccept
To share the meeting room resources (e.g. calendar):
Add-MailboxPermission -Identity 'MeetRoom01' -User 'DOMAIN\Domain Users' -AccessRights 'FullAccess'
New-Mailbox -Name 'My Meeting Room' -Alias 'MeetRoom01' -OrganizationalUnit 'domain.com/Users' -UserPrincipalName 'MeetRoom01@domain.com' -SamAccountName 'MeetRoom01' -FirstName 'Meet' -Initials '' -LastName 'Room 01' -Database 'MyExchange\SG\DB' -Room
To make the room auto answer accepting the invitation:
Set-MailboxCalendarSettings -Identity "MeetRoom01" -AutomateProcessing AutoAccept
To share the meeting room resources (e.g. calendar):
Add-MailboxPermission -Identity 'MeetRoom01' -User 'DOMAIN\Domain Users' -AccessRights 'FullAccess'
Tuesday, August 04, 2009
Windows 2008 UAC
I have SQL 2008 x64 (mixed mode) installed on Windows 2008 x64. When trying to login to SQL using my Domain Admins account, I get the following error:
Login failed for user 'DOMAIN\username'. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT: X.X.X.X]
answer? "Run as administrator" the SQL Server Management Studio!!
Apparently UAC does not pass your user group membership properly to the SQL Server Management Studio.
Login failed for user 'DOMAIN\username'. Reason: Token-based server access validation failed with an infrastructure error. Check for previous errors. [CLIENT: X.X.X.X]
answer? "Run as administrator" the SQL Server Management Studio!!
Apparently UAC does not pass your user group membership properly to the SQL Server Management Studio.
Monday, July 20, 2009
VCP VI3
is now officially VCP VI3... Harder that I thought - wondering what is next?