Tuesday, March 9, 2010

Client Service Framework - CSF

History

Once upon a time, Cisco built a client software called "Cisco Unified Personal Communicator" (a.k.a. CUPC). CUPC has many features like Rich Presence, Instant Message, Desk Phone control (CTI), Soft Phone (SIP), Voicemail (IMAP), Web Conference, etc.

Later on, when Cisco built other client software (such as plug-in for Sametime Connect, plug-in for MOC), developers realized that there were many commonalities between those software and CUPC. Instead of "reinventing the wheel", they could just reuse the existing codes in CUPC.

However, "reuse" is not as simple as it sounds to be in software development. You'll have to "shape" the codes to fit into your specific software. To make the work easier, they decided to "extract" the codes from CUPC and standardize it. So any other software teams can easier build their application on top of it. This "extracted", "standardized" component is called "Client Service Framework". (if you have ever heard about ".Net Framework" from Microsoft, the concept is pretty similar).

The idea is: CSF has all the common feature built in and provides unified interfaces to upper applications (such as CUCIMOC, CUPC 8, CUCI Connect, etc.).

The code of CSF is usually referred as "core" (e.g. "core log" of CUCIMOC).

Because of the history, we sometimes see the "marks" of CUPC. For example, CUCIMOC dial rules are put in the "CUPC" folder on TFTP.

Applications using CSF

Right now, applications using CSF are:

  • CUCIMOC (for Microsoft Office Communicator)
  • CUCI Connect (for Webex Connect)
  • CUPC 8.0

Confusions

To use the Cisco Unified Personal Communicator soft phone feature, we have to create a device in CUCM. The device type happened to be called "Cisco Unified Personal Communicator". This is really a BAD idea. If I were the decision maker, I would name it with some netrual name like "Cisco SIP soft phone".

Because the device type has the same name as the client software, many people (including Cisco TAC engineers) thought it was required for CUPC to work. More confusion when it comes to licensing and troubleshooting. Such as:

  • "I licensed UPC on CUCM > System > Licensing > Capability Assigments. That took 1 DLU. But when I ran the license calculator, the 'Cisco Unified Personal Communicator' is taking 3 DLUs"
  • "My CUPC is not registering" "Did you mean the CUPC on your desktop(Windows XP)? Or the CUPC on CUCM?"

They made the same mistake again with CSF. To use the soft phone feature of CSF, you have to create a device in CUCM. The device type is called "Client Service Framework". Again, if I were the decision maker, I would name it with a neutral name like "Cisco SIP soft phone (2nd Generation)".

The point is: don't confuse one of the features with the whole piece. You don't need to configure CSF device in CUCM to get the CSF worked on client applications. Without CSF device on CUCM, the only feature you're missing is soft phone.

Interface

As you can guess, CSF does not have a user interface. User interface was provided by the upper layer applications such as CUCIMOC, CUCI Connect, CUPC 8 etc.

The only way you can "see" CSF is to use Windows Task Manager. You'll see a process called "cucsf.exe". This process usually starts up and close down with the upper layer applications (such as CUPC 8). But not every application does the same thing. For example, CUCIMOC does not shutdown CSF when you close MOC. If you want to kill or restart CSF for whatever reasons, you'll have to kill it from Task Manager.

Configuration

In current version of CSF, there's no GUI to configure it. All configuration was done via Windows registry.

Depending on your deployment, configuration data could be in either one of the following locations:

  • HKEY="HKCU\Software\Cisco Systems, Inc.\Client Services Framework\AdminData"
  • HKEY="HKCU\Software\Policies\Cisco Systems, Inc.\Client Services Framework\AdminData"

If both keys exist, "HKCU\Software\Policies\Cisco Systems, Inc.\Client Services Framework\AdminData" takes priority.

For centralized management, you may use a logon script (BAT) or a group policy to update the client's registry.

Registry key requirement varies between applications.

For CUCIMOC, registry key info as below: http://www.cisco.com/en/US/partner/docs/voice_ip_comm/cucimoc/7_1/english/integrat/guide/config_clients.html. CUCIMOC also provides a sample BAT file and REG file for your convenience. Those sample files are zipped into cucimoc-Admin-ffr.x-y-z.zip (x-y-z is the version of CUCIMOC. e.g. cucimoc-Admin-ffr.7-1-3.zip)

Limitations

  • Application Dial Rules (ADR)

Current version of CSF does not have an interface to "dip" into CUCM database to retrieve ADRs. As a workaround, Cisco provides a COP file. Whenever you run(install) the COP file on CUCM, CUCM will generate XML files in TFTP folder to reflect the latest ADRs. Then CSF needs to be restart to download those XML files. For details, see: http://www.cisco.com/en/US/partner/docs/voice_ip_comm/cucimoc/7_1/english/integrat/guide/config_servers.html#wp1054388

This means, whenever you make changes to CUCM > Call Routing > Dial Rules, you'll have to run the COP file and restart CSF.

  • Soft Phone

CSF soft phone is a SIP phone. It has quite a few limitations comparing with SCCP (skinny) phones. For example, the following features are not supported on SIP:

  • CUVA support
  • FAC/CMC support
  • MLPP target device
  • Direct transfer
  • Hold tone

... to be continued

10 comments:

  1. Wow...that's a lot of very beneficial information you provide here. Thanks.

    This last part is of concern to me regarding SIP not supporting FAC. We are looking to replace our current PRIs with a SIP Trunk very soon and currently our FACs are managed by our long distance provider. After moving to the SIP Trunk, we might have to start managing FACs in CUCM- which is not a problem...the problem I see is for users that do not have a deskphone and use CUPC exclusively (limited amount, but it's an avenue we are investigating)- are you telling me that they will be unable to dial LD if that route pattern is configured for FAC?

    Is this an instance where CIPC should be used instead of CUPC? Using the two client together does not make sense to me, but CUPC cannot support FAC, then I see no other way for this to work? Am I missing something?

    Thanks.
    Craig L. Pollitt

    ReplyDelete
  2. Right now, CSF is SIP based. Not sure if it will have a SCCP flavor in the future.

    I'm sure the future version of CIPC should have the same capability (if not more) as the current version.

    I don't have ETA though.

    ReplyDelete
  3. Hey

    I got an error
    "A Device intialization error has occured.Failed to connect to CCMCIP authentication server"
    Is this is due to incorrect way i entered CSF in registery ?

    ReplyDelete
  4. Have you configured the CCMCIP address in registry?

    ReplyDelete
  5. Great post, gives a good history of Cisco's SIP softphone strategy...

    One think, have (or will) Cisco release CSF for developer use, I have an application that requires an embedded SIP softphone to work with UCM, so the logical choice would be CSF...

    ReplyDelete
  6. Hi,

    Is it possible to write CUPC client using CSF framework for my CRM application? Is there any CSF API guide document available?

    Thanks & Regards,
    Umesh Chaurasia

    ReplyDelete
  7. I'm hoping FAC wil be supported in next release of CSF.

    FAC is one of the mechanism which I use to bill telephony cost to users in my company.

    ReplyDelete
  8. can i register the CSF without the CUPS or Webex?

    ReplyDelete
  9. can i register the CSF (Jabber Client) with the CUPS and Webex?

    ReplyDelete
    Replies
    1. Short answer is 'No'. It depends on how the CSF client is used. From CUCM point of view, it's just a SIP endpoint. You may register the SIP endpoint to CUCM without CUPS or Webex. From from application (Jabber, CUPC, etc.) point of view, you'll have to authentication with the CUPS/Webex first. Then the application will register to CUCM.

      Delete