How to implement SIP protocol?

hi there
how to implement SIP protocol?
I just want to know if there is API for it?
I want to design a instant messaging service.
thx
varun

Look for jain sip:
jain-sip.dev.java.net

Similar Messages

  • How to implement 3 way handshake in TCP protocol

    I am a newbie to socket programming. Can any one suggest me how to implement 3 way handshake?

    Java comes with java.net including Socket and ServerSocket. On the Java level you use this higher-level API (or even URLConnection or HttpURLConnection) and do not have to worry about the TCP handshake. You have no access to that low level either.

  • How to improve custom protocol speed?

    Hi
    I used RMI to get an array of shorts from server.
    Then I thought that using RMI for transferring arrays of primitives
    is not a good idea, that is why I decided to create my own protocol for
    transferring data.
    The other goal to implement my own protocol was to show a data
    transferring progress to user.
    I thought it was not easy to do it with RMI If I am wrong let me know
    how to do it with RMI please :)
    Unfortunately my protocol implementation works slower than RMI.
    Here goes code for simplified version of my protocol.
    Can anyone suggest what I should do to make it work faster.
    Protocol is designed to transfer data provided by FooData from
    FooDTPServer to every connected FooDTPClient.
    The protocol works as follows:
    FooDTPClient connects to FooDTPServer and sends code that indicates
    that it is a client(all codes are described at DTPCodes).
    Server replies with code that indicate that it is FooDTPServer.
    Client asks server for data.
    Server sends a length of data it is going to send and then sends the
    data.
    If client wants more data it sends new request for data.
    If it wants to close connection, it sends special code.
    If client sends wrong code at any state of conversation with server
    the server closes connection.
    Here goes implementation of protocol.
    // file DTPCodes.java
    public class DTPCodes {
    * client sends it to server to at the begin of conversation.
    public static final byte HELLO_IM_DTP_CLIENT = 1;
    * server sends this code as a replay to client
    * HELLO_IM_DTP_CLIENT code.
    public static final byte HELLO_IM_DTP_SERVER = 2;
    * client request for data must start with this code.
    public static final byte GIVE_ME_DATA = 3;
    * client sends this message when he goes away.
    public static final byte BYE = 5;
    // file FooData.java
    /**Simple data provider */
    public class FooData {
    /** Data that FooDTPServer sends to client */
    public static final short[] DATA = new short[1024*768];
    // file FooDTPServer.java
    import java.io.*;
    import java.net.*;
    import java.util.*;
    /**FooDTPServer is a simple multithreaded server that sends data */
    public class FooDTPServer {
    public static final int DEFAULT_PORT = 4567;
    /**Contains all running DTPServerThreades*/
    private Set serverThreadsSet = new HashSet();
    /**this flag indicates is server listening or not */
    private boolean listening = false;
    /**port on wich server will accept connection*/
    private int port;
    * Creates instance of FooDTPServer that will run on given port
    * @param port - port on which you what server to listen
    public FooDTPServer(int port) {
    this.port = port;
    * starts server
    * @throws IOException
    * @throws IllegalStateException if server is already running
    public void start() throws IOException, IllegalStateException,
    IllegalArgumentException {
    if (listening == true)
    throw new IllegalStateException("Server already running");
    ServerSocket serverSocket = new ServerSocket(port);
    listening = true;
    while (listening) {
    DTPServerThread t = new
    DTPServerThread(serverSocket.accept());
    t.start();
    serverThreadsSet.add(t);
    serverSocket.close();
    * Stops server
    public void stop() {
    listening = false;
    serverThreadsSet.iterator();
    Iterator iter = serverThreadsSet.iterator();
    while (iter.hasNext()) {
    DTPServerThread t = (DTPServerThread) iter.next();
    if (t.isServing()) {
    t.stopServing();
    * Starts server on default port
    public static void main(String[] args) throws Exception {
    System.out.print("Starting server on port " + DEFAULT_PORT +
    "... \t");
    FooDTPServer fooDTPServer = new FooDTPServer(DEFAULT_PORT);
    System.out.println("Server has started.");
    fooDTPServer.start();
    /** Thead that represent connection with paricular client reqest
    private class DTPServerThread extends Thread {
    /**This flags thread to continue running. */
    private boolean continueServing;
    /**Socket with client */
    private Socket socket;
    /** Creates instance of DTPServerThread.
    * @param socket - socket with client
    * @throws IllegalArgumentException
    public DTPServerThread(Socket socket) throws
    IllegalArgumentException {
    this.socket = socket;
    continueServing = true;
    /**Stops this thread*/
    public void stopServing() throws IllegalStateException {
    if (!continueServing)
    throw new IllegalStateException("Server already
    stoped");
    continueServing = false;
    * @return true if thread is running
    public boolean isServing() {
    return continueServing;
    public void run() {
    try {
    BufferedOutputStream bos = new
    BufferedOutputStream(socket.
    getOutputStream(), 1024 * 768);
    DataOutputStream dos = new DataOutputStream(bos);
    BufferedInputStream bis = new
    BufferedInputStream(socket.
    getInputStream());
    DataInputStream dis = new DataInputStream(bis);
    //check if this is FooDTPClient connected
    if (dis.readByte() == DTPCodes.HELLO_IM_DTP_CLIENT) {
    //write respone to indicate that this is
    FooDTPServer
    dos.writeByte(DTPCodes.HELLO_IM_DTP_SERVER);
    dos.flush();
    while (continueServing) {
    //if cliens requests data
    if (dis.readByte() == DTPCodes.GIVE_ME_DATA) {
    short[] data = FooData.DATA;
    //send him the abount of data you are
    going to send
    dos.writeInt(data.length);
    // then send data
    for (int i = 0; i < data.length; i++) {
    dos.writeShort(data);
    dos.flush();
    else {
    //if client doesn't want more data
    break;
    dos.flush();
    dos.close();
    bos.close();
    bis.close();
    dis.close();
    socket.close();
    catch (IOException ioex) {
    ioex.printStackTrace();
    continueServing = false;
    serverThreadsSet.remove(this);
    //file FooDTPClient.java
    import java.io.*;
    import java.net.*;
    /**Instances of this class interracte with server*/
    public class FooDTPClient {
    private boolean connected = false;
    /**Socket with server */
    private Socket socket;
    private BufferedInputStream bis;
    private DataInputStream dis;
    private BufferedOutputStream bos;
    private DataOutputStream dos;
    private String serverAddress;
    private int port;
    * Creates instance with specified server address and port
    * @param serverAddress - server address
    * @param port - server port;
    * @throws IllegalArgumentException if serverAddress==null or port
    <=0
    public FooDTPClient(String serverAddress, int port) throws
    IllegalArgumentException {
    if (serverAddress == null)
    throw new IllegalArgumentException("serverAddress is
    null");
    this.serverAddress = serverAddress;
    if (port <= 0)
    throw new IllegalArgumentException("port = " + port + " <=
    0");
    this.port = port;
    public void connect() throws IOException, IllegalStateException {
    if (connected)
    throw new IllegalStateException(
    "This instance of DTPClient already connected to
    server.");
    socket = new Socket(serverAddress, port);
    bis = new BufferedInputStream(socket.getInputStream(),
    1024*768);
    dis = new DataInputStream(bis);
    bos = new BufferedOutputStream(socket.getOutputStream());
    dos = new DataOutputStream(bos);
    dos.writeByte(DTPCodes.HELLO_IM_DTP_CLIENT);
    dos.flush();
    byte serverReply = dis.readByte();
    if (serverReply != DTPCodes.HELLO_IM_DTP_SERVER) {
    throw new IllegalStateException("Server gave wrong
    reply");
    connected = true;
    public synchronized short[] getData() throws IOException,
    IllegalStateException {
    if (!connected) {
    throw new IllegalStateException(
    "DTPClient not connected to server");
    dos.writeByte(DTPCodes.GIVE_ME_DATA);
    dos.flush();
    short[] data = new short[dis.readInt()];
    for (int i = 0; i < data.length; i++) {
    data = dis.readShort();
    return data;
    public synchronized void closeConnection() throws
    IllegalStateException,
    IOException {
    if (!connected) {
    throw new IllegalStateException(
    "DTPClient is not connected to server");
    dos.writeByte(DTPCodes.BYE);
    dos.flush();
    dos.close();
    bis.close();
    dis.close();
    bis.close();
    if (socket.isConnected()) {
    socket.close();
    connected = false;
    public synchronized boolean isConnected() {
    return connected;
    public static void main(String[] args) throws Exception {
    int numberOfTries = 100;
    long totalTime = 0;
    FooDTPClient fooDTPClient = new FooDTPClient("localhost",
    FooDTPServer.DEFAULT_PORT);
    fooDTPClient.connect();
    for (int i = 0; i < numberOfTries; i++) {
    long beginTime = System.currentTimeMillis();
    short[] sa = fooDTPClient.getData();
    long operationTime = System.currentTimeMillis() -
    beginTime;
    totalTime += operationTime;
    // System.out.println("Operation N" + i + " took\t" +
    operationTime);
    fooDTPClient.closeConnection();
    System.out.println("Average test time is\t" +
    (totalTime / numberOfTries));
    And here goes server and client that transfer data over RMI
    //file FooRemote.java
    import java.rmi.*;
    public interface FooRemote extends Remote {
    public short[] getData() throws RemoteException;
    //file FooRemoteImpl.java
    import java.rmi.*;
    public class FooRemoteImpl implements FooRemote{
    public short[] getData() throws RemoteException{
    return FooData.DATA;
    //file FooRMIServerRunner.java
    import java.rmi.server.*;
    import java.rmi.*;
    public class FooRMIServerRunner {
    public static void main(String[] args)throws Exception {
    java.rmi.registry.LocateRegistry.createRegistry(5000);
    FooRemoteImpl fooRemote = new FooRemoteImpl();
    RemoteStub fooRemoteStub =
    UnicastRemoteObject.exportObject(fooRemote);
    Naming.bind("rmi://localhost:5000/FooService", fooRemoteStub);
    // file FooRMIClient.java
    import java.rmi.*;
    import java.net.*;
    public class FooRMIClient {
    FooRemote fooRemote;
    public FooRMIClient() throws RemoteException,
    MalformedURLException,
    NotBoundException {
    fooRemote = (FooRemote) Naming.lookup(
    "rmi://localhost:5000/FooService");
    public short[] getData()throws RemoteException{
    return fooRemote.getData();
    public static void main(String[] args)throws Exception {
    int numberOfTries = 100;
    long totalTime = 0;
    FooRMIClient fooRMIClient = new FooRMIClient();
    for (int i = 0; i < numberOfTries; i++) {
    long beginTime = System.currentTimeMillis();
    short[] sa = fooRMIClient.getData();
    long operationTime = System.currentTimeMillis()-beginTime;
    totalTime+=operationTime;
    // System.out.println("Operation N"+i+" took\t" +
    operationTime);
    System.out.println("Average test time is\t" +(totalTime /
    numberOfTries));
    Any help is appreciated.
    Best regards,
    Vitaliy.

    A lot to quote up there, but as for moving away from RMI, since you have the code and in my personal estimation there's really not THAT much overhead for non-remote return types, is there a reason you wish NOT to stay with RMI for this if you have that ability?
    I would however suggest also GZIPping the short[] array and other data as that will save on xfer time, either in RMI or your own personal protocol.

  • Problem in implementing POP3 protocol.

    hi...
    i wanna implement POP3 protocol......actully i m designing an mail client..n i m using POP3 protocol to receive mails frm a POP3 server..but i dn't kno how to implement it?..how to go ahead to implement it?...plzz help me...if u hav any sort of coding regarding to POP3..then plz mail me at [email protected]...

    http://www.rfc-editor.org/cgi-bin/rfcdoctype.pl?loc=RFC&letsgo=1939&type=ftp&file_format=txt
    http://www.rfc-editor.org/cgi-bin/rfcsearch.pl?searchwords=rfc1957&opt=All+fields&num=25&format=ftp&orgkeyword=POP3&filefmt=txt&search_doc=search_all&match_method=prefix&abstract=absoff&keywords=keyoff&sort_method=newer
    http://www.rfc-editor.org/cgi-bin/rfcsearch.pl?searchwords=rfc2449&opt=All+fields&num=25&format=ftp&orgkeyword=POP3&filefmt=txt&search_doc=search_all&match_method=prefix&abstract=absoff&keywords=keyoff&sort_method=newer
    The protocol itself is very simple and shouldn't cause any difficulty in Java.

  • How to implement redundant with 1 CE router to 2 MPLS service providers

    Dear all,
    Our head-office are currently have 1 Cisco CPE 3825 router with 2 WAN connections to our branches. We are now using static routing protocol in our network infrastructure, we consider how to implement the redundancy for networks by the redundant circuits connection to 2 MPLS providers, only when the primary connection to the primary MPLS L3 provider fail, the backup link to the second MPLS Layer 2 provider automatically active. Anybody knows where can I find information, tips or examples, how we'd handle the routing for that?
    We are now have:
    1 G0/1 interface connect to primary MPLS L3 Provider (the 2nd G0/2 interface is a leased-line connection to our partner, and we not consider here)
    1 HWIC (layer 2) card, with 4 ports, which has interface F0/2/3 connected to the backup MPLS Layer 2 provider.
    Thanks in advance.
    PS: Current configuration : 3727 bytes
    version 12.3
    service timestamps debug datetime msec
    service timestamps log datetime msec
    service password-encryption
    hostname Router
    boot-start-marker
    boot system flash c3825-entservicesk9-mz.123-11.T7.bin
    boot-end-marker
    logging buffered 4096 debugging
    logging monitor xml
    no aaa new-model
    ip subnet-zero
    ip cef
    no ftp-server write-enable
    no spanning-tree vlan 4
    no spanning-tree vlan 5
    interface GigabitEthernet0/1
    description connect to VDC MPLS$ETH-WAN$
    mtu 1480
    ip address 222.x.x.66 255.255.255.252
    ip flow ingress
    ip flow egress
    service-policy output SDM-QoS-Policy-1
    ip route-cache flow
    duplex auto
    speed auto
    media-type rj45
    fair-queue 64 256 256
    no cdp enable
    interface FastEthernet0/2/0
    switchport access vlan 2
    no cdp enable
    interface FastEthernet0/2/3
    description ToTBToverFPT
    switchport access vlan 5
    no cdp enable
    interface Vlan2
    description CONNECT TO MPLS_VDC
    ip address 192.168.201.9 255.255.248.0
    interface Vlan5
    description Connect to HoChiMinhCity
    ip address 172.16.1.5 255.255.255.252
    ip classless
    ip route 0.0.0.0 0.0.0.0 Dialer1
    ip route 172.16.244.0 255.255.255.0 222.255.33.65
    ip route 192.168.0.0 255.255.248.0 222.255.33.65
    ip route 192.168.24.0 255.255.254.0 222.255.33.65
    ip route 192.168.30.0 255.255.254.0 222.255.33.65
    ip route 192.168.32.0 255.255.254.0 222.255.33.65
    ip route 222.x.x.68 255.255.255.252 222.255.33.65
    ip route 222.255.33.72 255.255.255.252 222.255.33.65
    ip route 222.x.x.196 255.255.255.252 222.255.33.65
    ip route 222.x.x.200 255.255.255.252 222.255.33.65
    ip http server
    ip http authentication local
    no ip http secure-server
    ip http max-connections 3
    control-plane
    line con 0
    logging synchronous
    stopbits 1
    line aux 0
    stopbits 1
    line vty 0 4
    password
    login
    transport input telnet
    line vty 5 14
    privilege level 15
    password
    login
    transport input telnet
    line vty 15
    privilege level 15
    password
    login
    transport input telnet
    parser view SDM_Monitor
    scheduler allocate 20000 1000
    end

    Hi Mr jianqu,
    Because of our customer now has 2 main central offices, and all other sub branches are now connected to each of these main central office via one primary full-meshed MPLS VPN of 1st Service Provider, so If I use the float static routes, and when there is a failure at one link at a CENTRAL CE Router to primary link to primary MPLS VPN Service Provider, but still there is no failure at the other site from a router CE sub branch with the the PE of the primary full-meshed MPLS VPN Layer 3 Service Provider,so It cannot cause a failover to a second redundant link of the 2nd Service Provider?
    So with our system, do we only have one solution like this:
    -Configure BGP as the routing protocol between the CE and the PE routers.
    -Use local preference and Multi Exit Discriminator (MED) when running BGP inside a our customer VPN to select the primary and backup links.
    -Use AS-override feature to support overlapping AS numbers between customer sites

  • Implementing UIApplicationDelegate protocol methods in NSObject class not working.

    Hi Everyone,
    I am new bee in iphone developement. I want to implement UIApplicationDelegate protocol methods in one of my NSObject class, how can i implement that help me please.
    I have mentioned the sample code what acutal i want to impelment.
    .h file
    @interface SmaplClass : NSObject <UIApplicationDelegate>
    .m file
    - (void)applicationWillResignActive:(UIApplication *)application
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    - (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
    Want to implement the above methods is NSObject class to be implemented or used, its not working. Help me can do it.
    Please help me
    Thanks,

    I complete the above discussion with saying that it is better to implement the notification handling methods in your app delegate. If there are good reasons to not to do so, you have to implement the methods in another class, instantiate the class, and call the methods from the actual UIApplicationDelegate protocol methods in the AppDelegate object. This way you can remove the actual notification handling code from AppDelegate class.
    For example, suppose you implemented the methods in the class called Test. This is a sample code in the AppDelegate class:
    @implementation AppDelegate
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
          Test *t = [[Test alloc] init];
         [t application: application didReceiveRemoteNotification: userInfo];
    @end
    Or you can create an association relationship between the AppDelegate and Test, so you do not have to create a new Test instance in each of the remote notification handling methods:
    @interface AppDelegate {
         Test *test;
    @end
    @implementation AppDelegate
    + (id)init {
         if (self = [super init]) {
              test = [[Test alloc] init];
         return self;
    - (void)dealloc {
         [test release];
         [super dealloc];
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
         // No need to create a Test instance. You just forward the call from AppDelegate instance to test      // instance
         [test application: application didReceiveRemoteNotification: userInfo];
    @end

  • Implementing SPI protocol using PXI-7833R

    Hello everyone,
    I'm trying to implement SPI protocol using PXI-7833R, so that it should behave as a SPI master and should be able to communicate with a SPI device (treated as slave).
    Now I already found an example, but the problem is, this example uses cRIO-9103 as FPGA target and in my case I'm going to use PXI-7833R as FPGA target, and when I'm changing the target (from cRIO-9103 to PXI-7833R), I dont know how to map I/O's listed under 'Chassis I/O' (under cRIO) to the new target (which is PXI-7833R).
    I am not allergic to Kudos, in fact I love Kudos.
     Make your LabVIEW experience more CONVENIENT.

    Hi All,
    Somehow I was able to change the target (from cRIO to PXI-7833R).... but now I'm getting an error while trying to compile the code.
    The error description is:
    "Multiple objects are requesting access to a resource through a resource interface from both inside and outside the single-cycle Timed Loop, which is not supported.
    Place all objects requesting access to the resource interface either inside or outside the single-cycle Timed Loop."
    I am not allergic to Kudos, in fact I love Kudos.
     Make your LabVIEW experience more CONVENIENT.

  • Can i implement RS422 protocol using 7831 RIO card

    please tell if i can implement RS422 protocol using NI FPGA card. Also please help me on how to do the same...

    You can definitely implement the RS-422 protocol on the FPGA card. Check out the RS-232 on FPGA example on DevZone. RS-422 may be a bit different than RS-232, but not very much. The main thing you will have to deal with are the voltage levels of the signal. The FPGA DIO are single-ended 3.3V TTL, while RS-422 is a differential voltage signal. So to have a true RS-422 interface you will need to add a signal translator between the FPGA card and your RS-422 device(s).
    Christian L
    Christian Loew, CLA
    Principal Systems Engineer, National Instruments
    Please tip your answer providers with kudos.
    Any attached Code is provided As Is. It has not been tested or validated as a product, for use in a deployed application or system,
    or for use in hazardous environments. You assume all risks for use of the Code and use of the Code is subject
    to the Sample Code License Terms which can be found at: http://ni.com/samplecodelicense

  • Implementing SIP stack in WTK25

    Hello friends,
    I am trying to implement the SIP application using the SIP stack jsr-180.
    I have a SIP server in J2SE where the SIP stack is written by our own programmers. When I am trying to send a REGISTER request to that SIP server from my J2ME emulator it sends it perfectly but it fails to receive any response(200 OK, etc..) from the server. But the logs of the server is saying that it has received the REGISTER request and responded with a 200 OK code.
    My J2SE server is working fine as I have tested it using J2SE SIP client.
    Now when I make another J2ME application using the same SIP stack (jsr-180) which acts as server then my J2ME SIP client ables to receive the response from that J2ME SIP server.
    What I am missing so that the J2ME SIP client fails to receives the response from the J2SE SIP server?

    Hi,
    I am facing similar problem while implementing SIP application using JSR180+J2ME.
    I think you could help me debugging the problem. :->
    I am trying to create a VoIP application using JSR 180 for mobile device using Java Wireless toolkit.
    My VoIP application is trying to register an IMS core network.
    I am referring sample code GoSIP for the same. GoSIP sample application is available under apps folder in Java Wireless toolkit installation folder.
    My application is sending request to proxy server at port 5060 and listening for incoming requests at port 9000.
    The GoSIP sample application is using callback listener interface.
    See sample code for listen method ->
    private Thread listen(final SipServerConnectionListener listener) {
            //Shiv
            System.out.println("BaseUAC.listen()");
            Thread t =
                new Thread() {
                    public void run() {
                        try {
                            if (scn != null) {
                                scn.close();
                            scn = (SipConnectionNotifier)Connector.open("sip:" + mySipPort); //mySipPort = 9000
                            scn.setListener(listener);
                            try {
                                Thread.currentThread().sleep((1000));
                            } catch (Exception e) {
                        } catch (IOException ex) {
                            ex.printStackTrace();
            t.start();
            return t;
        }The register() method is sending register request to my proxy server (myproxy.mydomain.com) at port 5060.
    see sample code for register method ->
    private void register(final SipClientConnectionListener listener, final Thread waitFor) {
            //Shiv
            System.out.println("BaseUAC.register()");
            Thread t =
                new Thread() {
                    public void run() {
                        runGauge();
                        try {
                            try {
                                if (waitFor != null) {
                                    waitFor.join();
                                } else {
                            } catch (InterruptedException ie) {
                            scc = (SipClientConnection)Connector.open("sip:" + proxyAddress +
                                    ":5060");
                            scc.setListener(listener);
                            scc.initRequest("REGISTER", scn);
                            String adr =
                                myDisplayName + " <sip:" + myName + "@" + scn.getLocalAddress() + ":" +
                                scn.getLocalPort() + ">";
                            scc.setHeader("To", adr);
                            scc.setHeader("From", adr);
                            scc.setHeader("Content-Length", "0");
                            scc.setHeader("Max-Forwards", "6");
                            uaStatus.setStatus(REGISTERING);
                   scc.setHeader("Expires","3600");
                            //Shiv
                            System.out.println("BaseUAC.register() sending register request");
                            scc.send();
                            uaStatus.waitUntilChanged();
                            progressGaugeFinished = true;
                        } catch (Exception e) {
                            e.printStackTrace();
                            failMessage = e.getMessage();
                            commandAction(failedCmd, currentDisplay);
                            return;
            t.start();
        }The commandAction method invokes listen and register method as following ->
    public void commandAction(Command command, Displayable displayable) {
            //Shiv
            System.out.println("\tBaseUAC.commandAction() COMMAND = ["+command.getLabel()+"]");
            if ((command == registerCmd) && (displayable == registerFrm)) {
                setDisplay(getWaitScreen("Registration pending ...", 0, null));
                Thread t = listen(this);
                register(this, t);
        }My application is correctly sending REGISTER request to IMS core and IMS core send correct 200 OK for REGISTER request.
    But the request is sent from an arbitrary port (eg. 1236, 1240, 1244 etc) to 5060 to my proxy and the response 200 OK is coming to same arbitrary port, but my VoIP application is listening on port 9000.
    How to overcome this problem ? How I can fix a port to initiate my request to server ?
    Why my requests are not generated from port 9000 and generated from any arbitrary port.
    Any help would be highly motivational.
    Regards,
    Shiv

  • How to Implement BW in IT Service Desk/IT Help Desk /IT Complain Surveillance Dept/IT Customer Support Dept?

    Hi
    If a organization have 200 to 300 daily complains of there IT equipment/Software/Network e.t.c.
    How to Implement BW in IT Service Desk/IT Help Desk /IT Complain Surveillance Dept/IT Customer Support Dept?
    Is there any standard DataSources/InfoObjects/DSOs/InfoCubes etc. available in SAP BI Content?

    Imran,
    The point I think was to ensure that you knew exactly what was required. A customer service desk can have many interpretations from a BI perspective.
    You could have :
    1. Operational reports - calls attended per shift , Average number of calls per person , Seasonality in the calls coming in etc
    2. Analytic views - Utilization of resources , Average call time and trending , customer satisfaction , average wait time
    3. Strategic - Call volumes corresponding to campaigns etc , Employee churn and related call times
    Based on these you would then have to construct your models which would be populated by data from the MySQL instance for you to report.
    Else if you have BWA you could have data discovery instead or if you have HANA - you could do even more and if you have a HANA sidecar - you technically dont need BW. The possibilities are virtually endless - it depends on how you want to drive it and how the end user ( client ) sees value in the same.

  • How to implement implicit and explicit enhancement points

    Hi,
    Can anybody please provide some technical aspects of enhancement spots. I have gone through several sap sites and help poratl but have not get much technical things (how to implement or related t codes). please do not provide link to read theories.
    Rgds
    sudhanshu

    Hi,
    Refer to this link...
    http://help.sap.com/saphelp_nw2004s/helpdata/en/5f/103a4280da9923e10000000a155106/content.htm

  • How many types of authentications in sharepoint and how to implement those authentication in sharepoint?

    Hi All,
    How many types of authentications in sharepoint and how to implement those authentication in sharepoint?
    can any one explain the above things with examples?
    Thanks in Advance!

    In addition to
    A Sai Gunaranjan you can also check this URL for Sharepoint 2010:
    http://technet.microsoft.com/en-us/library/cc288475(v=office.14).aspx
    http://www.codeproject.com/Tips/382312/SharePoint-2010-Form-Based-Authentication
    ***If my post is answer for your query please mark as answer***
    ***If my answer is helpful please vote***

  • How to Implement custom share functionality in SharePoint 2013 document Lib programmatically?

    Hi,
    I have created custom action for Share functionality in document library.
    On Share action i'm showing Model pop up with Share form with addition functionality.
    I am developing custom share functionality because there is some addition functionality related to this.
    How to Implement custom share functionality in SharePoint 2013  document Lib pro-grammatically?
    Regards,
    - Siddhehswar

    Hi Siddhehswar:
    I would suggest that you use the
    Ribbon. Because this is a flexible way for SharePoint. In my project experience, I always suggest my customers to use it. In the feature, if my customers have customization about permission then i can accomplish this as soon
    as possible. Simple put, I utilize this perfect mechanism to resolve our complex project requirement. Maybe we customize Upload/ Edit/ Modify/ Barcode/ Send mail etc... For example:
    We customize <Edit> Ribbon. As shown below.
    When user click <Edit Item>, the system will
    render customized pop up window.
    Will

  • Can't Figure Out How To Implement IEnumerable T

    I have no problem implementing IEnumerable but can't figure out how to implement IEnumerable<T>. Using the non-generic ArrayList, I have this code:
    class PeopleCollection : IEnumerable
    ArrayList people = new ArrayList();
    public PeopleCollection() { }
    public IEnumerator GetEnumerator()
    return people.GetEnumerator();
    class Program
    static void Main(string[] args)
    PeopleCollection collection = new PeopleCollection();
    foreach (Person p in collection)
    Console.WriteLine(p);
    I'm trying to do the same thing (using a List<Person> as the member variable instead of ArrayList) but get compile errors involving improper return types on my GetEnumerator() method. I start out with this:
    class PeopleCollection : IEnumerable<Person>
    List<Person> myPeople = new List<Person>();
    public PeopleCollection() { }
    public IEnumerator<Person> GetEnumerator()
    throw new NotImplementedException();
    IEnumerator IEnumerable.GetEnumerator()
    throw new NotImplementedException();
    class Program
    static void Main(string[] args)
    // Create a PeopleCollection object.
    PeopleCollection peopleCollection = new PeopleCollection();
    // Iterate over the collection.
    foreach (Person p in peopleCollection)
    Console.WriteLine(p);
    Console.ReadLine();
    That code compiles (basically because I haven't really done anything yet), but I get compile errors when I try to implement the GetEnumerator() methods.

    The List<T> class implements the IEnumerable<T> interface, so your enumerator can return the GetEnumerator call from the list.
    class PeopleCollection : IEnumerable<Person>
    List<Person> myPeople = new List<Person>();
    public PeopleCollection() { }
    public IEnumerator<Person> GetEnumerator()
    return myPeople.GetEnumerator();
    IEnumerator IEnumerable.GetEnumerator()
    return myPeople.GetEnumerator();
    class Program
    static void Main(string[] args)
    // Create a PeopleCollection object.
    PeopleCollection peopleCollection = new PeopleCollection();
    // Iterate over the collection.
    foreach (Person p in peopleCollection)
    Console.WriteLine(p);
    Console.ReadLine();

  • How to implement Tool TIP in Table Control

    Hello Everyone,
    Can you please tell me how to implement a tooltip messages in table control columns.
    The Tooltip contains a simple message like "Doublde click on column.
    Thanks in advance.
    Edited by: Suruchi Razdan on Jun 6, 2011 7:57 AM

    Hello,
    In table Control->first Header Row has chance to maintain the Tooltip option.
    In table control columns maintain Double click options in attributes .
    Regards,
    Praveen

Maybe you are looking for