Sunday, March 31, 2013

Removing orphaned replicas in VMware View 4.6 with sviconfig.exe

I recently had to perform some maintenance with a client’s VMware View 4.6 prior to migrating them to a newly built 5.1 environment and one of the items on my list to do was to clean up their existing VMware View LUNs on their SAN.  This environment has had quite a few issues over the last few months with pools not being removed properly either due to lack of space on the SAN or some type of corruption so not to my surprise, there were 20 replicas listed in vCenter even though there was only 2 VMware View desktop pools where each master template only had 2 snapshots:

image

It’s obvious that most of them are no longer used so I went ahead and used the following KB in an attempt to identify them:

Finding and removing unused replica virtual machines in VMware View (2009844)
http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=2009844

What was unfortunate was that the unused-replica-1.txt file generated with the procedure shown was empty which meant I was left to manually identify which replicas were orphaned.  What turned out to be in my favour was that the only 2 pools in the environment were newly created 2 weeks ago which meant I could identify which ones are old by manually browsing the datastore that contained the replicas and checking the date.  If the date of the files were older than the day that the pools were created, the replicas were probably not being used.  Note how the Modified field in the following screenshot above is dated 9/5/2012 which goes back about 6 months from today:

image

The problem with VMware View replicas is that all of them are protected so if you make an attempt to delete them in vCenter, you will see the Remove from Inventory and Delete from Disk options grayed out:

imageimage

The following VMware KB provides instructions on how to use the sviconfig.exe executable to unprotect the replicas so that you can delete them:

Cannot remove source and replica virtual machines associated with View Composer desktop pools (1008704)
http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=1008704

It’s important to note that the parameter requirements are different for View Composer 2.7 (View 5 and earlier) and 3.0 (View 5.1).  The environment in this example is VMware 4.6 so I will use the following command:

sviconfig -operation=UnprotectEntity -VcUrl=https://<VirtualCenter address>/sdk -Username=<VirtualCenter account name> -Password=<VirtualCenter account password> -InventoryPath=/<Datacenter name>/vm/VMwareViewComposerReplicaFolder/<Replica Name> -Recursive=true

The items required to be modified are highlighted in RED and after substituting the requirement parameters, your command should look something like the following:

sviconfig -operation=UnprotectEntity -VcUrl=https://vc-01.domain.net/sdk -Username=domain\lukterence -Password=Tah23a-5 -InventoryPath=/DC1/vm/VMwareViewComposerReplicaFolder/replica-509dd5c1-1e66-4f84-ab9a-a79c89a05fb8 -Recursive=true

You should receive an output similar to the following upon successfully executing the cmdlet with the correct substitution:

C:\Program Files (x86)\VMware\VMware View Composer>sviconfig -operation=UnprotectEntity -VcUrl=https://vc-01.domain.net/sdk -Username=domain\lukterence -Password=Tah23a-5 -InventoryPath=/DC1/vm/VMwareViewComposerReplicaFolder/replica-509dd5c1-1e66-4f84-ab9a-a79c89a05fb8 -Recursive=true

WARNING: Unprotecting VC managed entities will allow operations

(power on, delete, migrate) that can cause existing linked clones connected

to those managed entities to fail to work correctly.

Establishing connection to the VC server.

VC server connection established successfully.

Looking for the entity on the VC server.

VirtualMachine found.

VirtualMachine with MoId vm-19032 sucessfully unprotected.

SviConfig finished successfully.

Successfully unprotected entities: 1

Fail to unprotect entities: 0

C:\Program Files (x86)\VMware\VMware View Composer>

image

With the command successfully executed, you should now be able to delete the replica:

image

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

Note that if you make a typo or provided an incorrect parameter when using the sviconfig.exe command, you won’t get an explanation pointing out the mistake you made.  The following is a mistake I made when originally executing the command where I accidentally used the / for my domain\user credentials:

C:\Program Files (x86)\VMware\VMware View Composer>sviconfig -operation=UnprotectEntity -VcUrl=https://vc-01.domain.net/sdk -Username=domain/lukterence -Password=Tah23a-5 -InventoryPath=/DC1/vm/VMwareViewComposerReplicaFolder/replica-509dd5c1-1e66-4f84-ab9a-a79c89a05fb8 -Recursive=true

This operation will remove the protection from a VC entity.
Currently only VirtualMachine and Folder entities are supported.

WARNING: Unprotecting VC entities will allow operations
(power on, delete, migrate) that can cause existing linked clones connected
to those managed entities to fail to work correctly. Use this operation with
caution.


Usage:
SviConfig
  -operation=UnprotectEntity
  -VcUrl=<Virtual Center service URL>
  -Username=<VC account name>
  -Password=<VC account password>
  -InventoryPath=<Entity inventory path>
  -Recursive=true|false

All parameters are not allowed to be an empty string.
The following parameters are required:
   VcUrl - The URL of the Virtual Center server, where the protected
           virtual machine is located.
   Username - The username that will be used to connect to the VC server.
   Password - The password for the username to connect to the VC server.
   InventoryPath - The VC entity inventory path.
The following parameters are optional:
   Recursive - If the entity is folder, setting this parameter to 'true' will
               unprotect recursively folder's content (VMs and folders). If
               the entity is VM, this parameter will be ignored. Default value
               is 'false'.

A virtual machine can be created under the default vmFolder or under user
specified folder (vmFolder subfolder).
A folder can be created under vmFolder (to organize VMs) or under hostFolder
(to organize hosts).

InventoryPath syntax is the following:
1. To unprotect a VM, that is in the vmFolder:
   /<datacenter_name>/vm/<vm_name>
2. To unprotect a VM, that is in a folder:
   /<datacenter_name>/vm/<folder_name>/<vm_name>
3. To unprotect a folder, created under vmFolder:
   /<datacenter_name>/vm/<folder_name>
4. To unprotect a folder, created under hostFolder
   /<datacenter_name>/host/<folder_name>

<datacenter_name> - the name of the datacenter
<folder_name> - the name of the folder
<vm_name> - the name of the virtual machine
/vm/ - represents vmFolder and is mandatory
/host/ - represents hostFolder and is mandatory

If one of the above names contains space, the whole path should be enclosed in
quotation marks.

For more information regarding VC inventory, see "VMware Infrastructure SDK
Programming Guide".

Examples:
1. To unprotect a VM, that is in the vmFolder:
   SviConfig -operation=UnprotectEntity -VcUrl=
https://my.vc/sdk
     -Username=User1 -Password=123 -InventoryPath=
     "/My Datacenter/vm/SVI-clone-1"

2. To unprotect a replica, that is in the 'MyReplicaFolder' folder:
   SviConfig -operation=UnprotectEntity -VcUrl=
https://my.vc/sdk
     -Username=User1 -Password=123 -InventoryPath="/My Datacenter/vm/
     MyReplicaFolder/replica-248863dd-616e-4dc5-8fc9-c8f47e5ea64e"

3. To unprotect the replica folder 'MyReplicaFolder':
   SviConfig -operation=UnprotectEntity -VcUrl=
https://my.vc/sdk
     -Username=User1 -Password=123 -InventoryPath=
     "/My Datacenter/vm/MyReplicaFolder"

4. To unprotect the replica folder 'MyReplicaFolder' and all the replica VMs
in it:
   SviConfig -operation=UnprotectEntity -VcUrl=
https://my.vc/sdk
     -Username=User1 -Password=123 -InventoryPath=
     "/My Datacenter/vm/MyReplicaFolder" -Recursive=True

5. To unprotect a folder 'Dev hosts', created under hostFolder:
   SviConfig -operation=UnprotectEntity -VcUrl=
https://my.vc/sdk
     -Username=User1 -Password=123 -InventoryPath=
     "/My Datacenter/host/Dev hosts"

ExitStatus:
  0  - operation ends successfully.
  2  - invalid credentials.
  9  - invalid URL.
  10 - VC can not be accessed.
  11 - entity is not found.
  12 - unknown entity type.
  13 - release failed.

C:\Program Files (x86)\VMware\VMware View Composer>

Notice how the output displays the instructions for how to use sviconfig.exe but not tell you the mistake made.

Saturday, March 30, 2013

Problems activating BlackBerry z10 with BES 10 BlackBerry Device Service with the error: “Check your login information and try again.”

Problem

You’re trying to activate a new BlackBerry z10 device with a newly deployed BES 10 BlackBerry Device Service server but as you enter the activation password:

image

The activation proceeds to the:

Contacting server

Don’t close Settings until complete.

… phase:

image

Then fails with:

Activation Error

Check your login information and try again.

image

Solution

I reviewed all of the event logs on the BlackBerry Device Service server but could not find any errors logged and searching on the internet did not provide additional information so I placed a call into BlackBerry’s support and was told by the engineer that the BlackBerry plan provisioned by the carrier was set to Standard and that we needed to request a change to Advanced.  We contacted the carrier to have the plan changed and that ended up fixing the issue.

Deleting XenDesktop 5.6 desktop catalog virtual desktops in vSphere 5.1 fails with error: “Failed to remove the virtual machine; domain\VDIName001$.; A specified parameter was not correct.”

Problem

You’ve recently upgraded your vSphere environment from 5.0 to 5.1 with the following component versions:

vCenter Server: 5.1.0 Build 947673

ESXi Server: 5.10 Build 838463

… but noticed that when you attempt to delete existing desktop catalog virtual desktops in Desktop Studio, you receive the following error:

Failed to remove the virtual machine; domain\VDIName001$.; A specified parameter was not correct.

image

The details of the error are as follows:

Exception:
    System.Reflection.TargetInvocationException Exception has been thrown by the target of an invocation.
       at Citrix.Console.Common.CallbackEventArguments.OperationCompleteSynchronizer`1.GetResults()
       at Citrix.Console.Common.CallbackEventArguments.OperationCompleteSynchronizer`1.WaitForResults()
       at Citrix.Console.Desktops.UI.Dialogs.DeleteDesktopsWizardViewModel.Commit()
   
   
Inner exception:
    System.Reflection.TargetInvocationException Exception has been thrown by the target of an invocation.
       at Citrix.Console.Common.CallbackEventArguments.OperationCompleteSynchronizer`1.GetResults()
       at Citrix.Console.PowerShellSdk.DesktopService.Scripts.DeleteMachinesScript.<ExecuteNext>d__1c.MoveNext()
       at Citrix.Console.PowerShellInteraction.PowerShellScript`1.<ExecuteNext>d__9.MoveNext()
       at Citrix.Console.InteractionCore.ScriptBase.<ExecuteImplementation>d__1.MoveNext()
       at Citrix.Console.InteractionCore.Scheduler.ExecuteNext(ScriptExecution execution)
   
    ScriptHistory : Delete Desktop
    This script calls DeleteVirtualMachinesScript and deletes Broker desktops.
    3/29/2013 11:49:15 AM
   
    Get-ConfigRegisteredServiceInstance -Version 1 -InterfaceType 'SDK' -MaxRecordCount 2147483647 -AdminAddress 'svrctxddc01.Domain.internal' | Test-ConfigServiceInstanceAvailability -MaxDelaySeconds 1 -ForceWaitForOneOfEachType -AdminAddress 'svrctxddc01.Domain.internal'
   
    Get-ConfigRegisteredServiceInstance -Version 1 -InterfaceType 'SDK' -MaxRecordCount 2147483647 -AdminAddress 'svrctxddc02.Domain.internal' | Test-ConfigServiceInstanceAvailability -MaxDelaySeconds 1 -ForceWaitForOneOfEachType -AdminAddress 'svrctxddc02.Domain.internal'
   
    Get-AcctServiceStatus -AdminAddress 'svrctxddc01.Domain.internal'
   
    Get-PvsVmServiceStatus -AdminAddress 'svrctxddc02.Domain.internal'
   
    Get-ConfigServiceStatus -AdminAddress 'svrctxddc01.Domain.internal'
   
    Get-ProvServiceStatus -AdminAddress 'svrctxddc02.Domain.internal'
   
    Get-BrokerServiceStatus -AdminAddress 'svrctxddc01.Domain.internal:80'
   
    Get-HypServiceStatus -AdminAddress 'svrctxddc01.Domain.internal'
   
    Get-LicServiceStatus -AdminAddress 'svrctxlic01.Domain.internal'
   
    Set-Variable -Name 'MCSVirtualMachineNames' -Value @('S-1-5-21-1384921881-3793137998-3288394186-42162','S-1-5-21-1384921881-3793137998-3288394186-42163','S-1-5-21-1384921881-3793137998-3288394186-42164','S-1-5-21-1384921881-3793137998-3288394186-42165','S-1-5-21-1384921881-3793137998-3288394186-42166')
   
    Get-ProvVM -MaxRecordCount 2147483647 -Filter {(ADAccountSid -in $MCSVirtualMachineNames)} -AdminAddress 'svrctxddc02.Domain.internal'
   
    Remove-Variable -Name 'MCSVirtualMachineNames'
   
    Remove-BrokerMachine -InputObject @(3,7,6,5,4) -Force -DesktopGroup 1 -AdminAddress 'svrctxddc01.Domain.internal:80'
   
    Remove-BrokerMachine -InputObject @(3,7,6,5,4) -Force -AdminAddress 'svrctxddc01.Domain.internal:80'
   
    Unlock-ProvVM -ProvisioningSchemeUid 7d32a020-cefc-4cb3-a8e0-e87494212edd -VMID @('42117274-c8a2-65b7-a2e3-f9b07aa57c2b','421174f9-3065-a6c1-4a81-dd8854220b42','4211a8ed-1cc3-5f95-a1ab-e0f3ef00bba4','42114b74-f25d-5fcd-d950-79b83b4a9fd1','42112e90-0508-44b6-973d-a0d3e011254d') -AdminAddress 'svrctxddc02.Domain.internal'
   
    Remove-ProvVM -ProvisioningSchemeUid 7d32a020-cefc-4cb3-a8e0-e87494212edd -VMName @('CTX-VDI001','CTX-VDI002','CTX-VDI003','CTX-VDI004','CTX-VDI005') -RunAsynchronously -AdminAddress 'svrctxddc02.Domain.internal'
   
    Add-ProvTaskMetadata -TaskId 3e16ca94-6348-45e5-89b9-8d187ba646ed -Property 'Citrix_DesktopStudio_TaskGroupId' -Value 'fb546f2e-7382-4809-a834-21408545d625' -AdminAddress 'svrctxddc02.Domain.internal'
   
   
   
Inner exception:
    System.Reflection.TargetInvocationException Exception has been thrown by the target of an invocation.
       at Citrix.Console.Common.CallbackEventArguments.OperationCompleteSynchronizer`1.GetResults()
       at Citrix.Console.PowerShellSdk.Shared.Scripts.DeleteVirtualMachinesScript.<ExecuteNext>d__1e.MoveNext()
       at Citrix.Console.PowerShellInteraction.PowerShellScript`1.<ExecuteNext>d__9.MoveNext()
       at Citrix.Console.InteractionCore.ScriptBase.<ExecuteImplementation>d__1.MoveNext()
       at Citrix.Console.InteractionCore.Scheduler.ExecuteNext(ScriptExecution execution)
   
    ScriptHistory : Delete Desktop
    This script calls DeleteVirtualMachinesScript and deletes Broker desktops.
   1/1/0001 12:00:00 AM
   
    Get-ConfigRegisteredServiceInstance -Version 1 -InterfaceType 'SDK' -MaxRecordCount 2147483647 -AdminAddress 'svrctxddc01.Domain.internal' | Test-ConfigServiceInstanceAvailability -MaxDelaySeconds 1 -ForceWaitForOneOfEachType -AdminAddress 'svrctxddc01.Domain.internal'
   
    Get-ConfigRegisteredServiceInstance -Version 1 -InterfaceType 'SDK' -MaxRecordCount 2147483647 -AdminAddress 'svrctxddc02.Domain.internal' | Test-ConfigServiceInstanceAvailability -MaxDelaySeconds 1 -ForceWaitForOneOfEachType -AdminAddress 'svrctxddc02.Domain.internal'
   
    Get-AcctServiceStatus -AdminAddress 'svrctxddc01.Domain.internal'
   
    Get-PvsVmServiceStatus -AdminAddress 'svrctxddc02.Domain.internal'
   
    Get-ConfigServiceStatus -AdminAddress 'svrctxddc01.Domain.internal'
   
    Get-ProvServiceStatus -AdminAddress 'svrctxddc02.Domain.internal'
   
    Get-BrokerServiceStatus -AdminAddress 'svrctxddc01.Domain.internal:80'
   
    Get-HypServiceStatus -AdminAddress 'svrctxddc01.Domain.internal'
   
    Get-LicServiceStatus -AdminAddress 'svrctxlic01.Domain.internal'
   
    Set-Variable -Name 'MCSVirtualMachineNames' -Value @('S-1-5-21-1384921881-3793137998-3288394186-42162','S-1-5-21-1384921881-3793137998-3288394186-42163','S-1-5-21-1384921881-3793137998-3288394186-42164','S-1-5-21-1384921881-3793137998-3288394186-42165','S-1-5-21-1384921881-3793137998-3288394186-42166')
   
    Get-ProvVM -MaxRecordCount 2147483647 -Filter {(ADAccountSid -in $MCSVirtualMachineNames)} -AdminAddress 'svrctxddc02.Domain.internal'
   
    Remove-Variable -Name 'MCSVirtualMachineNames'
   
    Remove-BrokerMachine -InputObject @(3,7,6,5,4) -Force -DesktopGroup 1 -AdminAddress 'svrctxddc01.Domain.internal:80'
   
    Remove-BrokerMachine -InputObject @(3,7,6,5,4) -Force -AdminAddress 'svrctxddc01.Domain.internal:80'
   
    Unlock-ProvVM -ProvisioningSchemeUid 7d32a020-cefc-4cb3-a8e0-e87494212edd -VMID @('42117274-c8a2-65b7-a2e3-f9b07aa57c2b','421174f9-3065-a6c1-4a81-dd8854220b42','4211a8ed-1cc3-5f95-a1ab-e0f3ef00bba4','42114b74-f25d-5fcd-d950-79b83b4a9fd1','42112e90-0508-44b6-973d-a0d3e011254d') -AdminAddress 'svrctxddc02.Domain.internal'
   
    Remove-ProvVM -ProvisioningSchemeUid 7d32a020-cefc-4cb3-a8e0-e87494212edd -VMName @('CTX-VDI001','CTX-VDI002','CTX-VDI003','CTX-VDI004','CTX-VDI005') -RunAsynchronously -AdminAddress 'svrctxddc02.Domain.internal'
   
    Add-ProvTaskMetadata -TaskId 3e16ca94-6348-45e5-89b9-8d187ba646ed -Property 'Citrix_DesktopStudio_TaskGroupId' -Value 'fb546f2e-7382-4809-a834-21408545d625' -AdminAddress 'svrctxddc02.Domain.internal'
   

   
Inner exception:
    Citrix.Console.Models.CallbackEventArguments.ScriptException Failed to remove the virtual machine; Domain\CTX-VDI001$.; A specified parameter was not correct.
   
    Failed to remove the virtual machine; Domain\CTX-VDI002$.; A specified parameter was not correct.
   
    Failed to remove the virtual machine; Domain\CTX-VDI003$.; A specified parameter was not correct.
   
    Failed to remove the virtual machine; Domain\CTX-VDI004$.; A specified parameter was not correct.
   
    Failed to remove the virtual machine; Domain\CTX-VDI005$.; A specified parameter was not correct.

image

Reviewing the Recent Tasks in vCenter shows the following errors:

A specified parameter was not correct.

image

You notice that while the virtual desktops are deleted from with Desktop Studio, the virtual machines are not deleted in vCenter and their respective Active Directory accounts are not removed.

Solution

Citrix has released a patch on March 18, 2013 to correct this problem but prior to patching the environment, I would recommend to manually delete the orphaned virtual machines in vCenter as well as their respective Active Directory accounts.  Once that’s done, proceed to download and install the patch found here:

Hotfixes Update 4 - For Citrix XenDesktop 5.6 Controller x64 - English
http://support.citrix.com/article/CTX136580

Note that I wanted to start fresh so I proceeded to delete the desktop catalog after I patched the environment but noticed that the base disk wasn’t deleted so I manually removed that as well.  This may not be consistent but definitely worthwhile to check.

Monday, March 25, 2013

Installing Blackberry Enterprise Service 10 - Blackberry Device Service 6.2

I had a client who recently got his hands on a new Blackberry z10 device to test out and while he didn’t feel it was much of a priority to get a new BES 10 up, it quickly became one after his boss saw the device.  I’ve just completed the install and felt that it was pretty much the same as the old BES 5 which was quite easy to do but thought it would be a good idea to document and blog it to show what the step by step process looks like. I haven’t gotten to installing the Universal Device Server for iOS and Android phones but will do soon.  The following is what was required to get Blackberry Enterprise Service 10’s Blackberry Device Service 6.2 deployed in an environment that already has BES 5.

First off, the deployment guide I used can be found here:

Blackberry Device Service
http://docs.blackberry.com/en/admin/subcategories/?userType=2&category=BlackBerry+Device+Service

image

image

Also note that I intend on installing Blackberry Device Service and Universal Device Service on the same server so I simply gave it a generic name.  More information about collocating the 2 services together can be found in the following KB:

Installing BlackBerry Device Service, Universal Device Service, and BlackBerry Management Studio on the same host server
http://btsc.webapps.blackberry.com/btsc/viewdocument.do;jsessionid=6BC84FE31517A1D15907D5ABED8981EC?externalId=KB32547&sliceId=2&cmd=displayKC&docType=kc&noCount=true&ViewedDocsListHelper=com.kanisa.apps.common.BaseViewedDocsListHelperImpl

Setup BlackBerry Windows Server 2008 R2 Server

Begin by adding your BES service account to the local administrators group on the server:

image

image

Continue by opening Start –> Administrative Tools –> Local Security Policy:

clip_image002[4]

Navigate to Security Settings –> Local Policies –> User Rights Assignment:

Review the configuration for Allow log on locally to see whether the besadmin account already has these permissions as it usually does because the Administrators group usually in there but if not, add it in:

clip_image002[6]

Continue by granting the besadmin account the Log on as a service permission:

clip_image002[8]

image

Setup Separate SQL Server

With the server permissions configured, proceed with opening SQL Server Management Studio and connect to the database instance you plan to use to host the Blackberry Device Service database (I’m not going to use a local SQL Express install but if you are, you can skip this step).  Navigate to Security –> Login then right click and select New Login…:

image

Select the domain besadmin account:

image

Click on the Server Roles and grant the account dbcreator permissions (this is temporary):

image

Install Blackberry Device Service

Log off of the BES 10 server and log back on as the besadmin service account and launch the installer:

clip_image002[10]

Continue by clicking the Install button for Blackberry Device Service and confirm that you are using the correct account for the install:

image

Enter the appropriate user name, organization and select the country:

clip_image002[14]image

Continue by selecting Create a Blackberry Configuration Database and Use an existing Microsoft SQL Server in your organization:

clip_image002[16]clip_image002[18]

I’m installing all the components onto one server so all of the components will be selected:

clip_image002[20]

Note the additional applications that will be installed:

clip_image002[22]

Modify the Installation folder or Log-file folder locations if necessary:

image

I usually don’t change these locations because I believe that with proper monitoring put in place, we should be able to have the log files on the same installation folder drive rather than provision a new drive that doesn’t add any performance benefit in a virtualized environment because it’s probably going to be on the same LUN anyways.  Servers these days also don’t come to a grinding halt if the system drive fills up.

Review the summary and continue with the install:

image

clip_image002[24]clip_image002[26]

 

clip_image002[28]

Proceed with entering the appropriate information for your SQL server and note that you can leave the default database name because the old BES 5 default database name is BESMgmt while the new BES 10 is BDSMgmt:

clip_image002[30]image

image

The installer will detect that the database does not exist and will ask whether one should be created:

clip_image002[34]

Note the status for the creation of the database at the bottom:

imageimage

Provide a name for the BlackBerry Device Service:

clip_image002[36]

Proceed by entering the required CAL and SRP keys:

clip_image002[38]

I found the information I received from my free BES 10 trial email a bit confusing because there was no SRP key.  After doing a bit of searching, I realized that the:

CAL key = CAL Authentication Key

SRP Identifier = Serial Number

SRP authentication key = License Key

image

clip_image002[40]

Ensure you use the Verify button to verify that the BES 10 server can get out via port 3101 (SRP):

clip_image002[44]

… and that the keys used for the install are valid: 

clip_image002[42]

Unless there is a reason to change the port numbers, leave them as defaults:

image

Enter the service account credentials:

image

Choose the authentication method and/or account you would like to log into the BlackBerry Device Service:

clip_image002[46]

Click Next to start the service:

clip_image002[48]

clip_image002[50]

clip_image002[52]

clip_image002[54]

Note the BlackBerry Administration Service address and the BlackBerry Web Desktop Manager address and close the install wizard:

image

Verify BlackBerry Device Service SQL Database

Refreshing the database list on the SQL server should show the new BDSMgmt database created:

image

Note the database files created in the folder:

BDSMgmt.ldf – 25,600 KB

BDSMgmt.mdf – 102,400 KB

image

One of the items suggested after the install is to verify that the collation setting for the BlackBerry Configuration Database is default case-insensitive:

image

For those who aren’t familiar with SQL collation, a list can be found here:

http://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx

clip_image002[56]

Note the collation settings for the BDSMgmt database:

SQL_Latin1_General_CP1_CI_AS

image

Verify Health of BlackBerry Device Service

Ensure that all the services have been started:

image

Review the Application and System logs to ensure there aren’t any unexpected errors or warnings:

image

Open up a browser and navigate to: http://<besServerName>:8080 to test the BlackBerry MDS Connection Service service:

image

If you’ve tested the SRP connection during the install and nothing on the firewall has been changed, you can skip this SRP test step but if you want to ensure the server is able to get out 3101, navigate to the following folder via the command prompt:

C:\Research In Motion\BlackBerry Enterprise Service 10.0.0\bundle0030\Modules\BDS\tools

… and execute the following:

bbsrptest.exe -host bm.srp.blackberry.com 3101

An output similar to the following will be displayed:

C:\Research In Motion\BlackBerry Enterprise Service 10.0.0\bundle0030\Modules\BDS\tools>

bbsrptest.exe -host bm.srp.blackberry.com 3101

Attempting to connect to bm.srp.blackberry.com (216.9.242.32), port 3101

Sending test packet

Waiting for response

Receiving response

Checking response

Successful

C:\Research In Motion\BlackBerry Enterprise Service 10.0.0\bundle0030\Modules\BDS\tools>

clip_image002[58]

Log into the BlackBerry Administration Service via the URL: https://<BlackBerryServerName>/webconsole/login:

image

Note how the interface hasn’t changed much:

image

Remove Unneeded Permissions for Besadmin

Remove the dbcreator role from the besadmin account:

imageimage

image

Note that on page 41 under the heading:

Configure minimum database permissions for theservice account or Microsoft SQL Server account

… the guide instructs us to remove db_owner and grant only public and rim_db_bes_server role membership to the BDSMgmt database:

imageimage

I tried this but received the error:

Drop member failed for DatabaseRole ‘db_owner’.

clip_image002[62]

I don’t think it’s a big deal to leave the permissions as long as it is no longer a dbcreator on the database server.

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

Finish off the install by creating a new user on the server to verify that the server can communicate to the SQL database and then activate the user:

image

I hope this post gives anyone who is looking for something that shows what the process of install Blackberry Device Service looks like.