Clicks in CRM 2013 to call via Lync always seem to launch Skype

Hello
Several users are having an issue; despite disabling Skype click to call (and even uninstalling Skype!) every phone number they click to call in the CRM (i.e. clicking it); rather than launching Lync; instead launches Skype
Andrew
stop making me create profiles

Have you looked at the TEL: application association on the desktop? Ståle Hansen has a great blog posting about this: http://msunified.net/2013/05/20/tel-sip-mailto-and-lync-meeting-links-association/
Please mark posts as answers/helpful if it answers your question.
Blog
Lync Validator - Used to assist in the validation and documentation of Lync Server 2013.

Similar Messages

  • Using Outlook to make a phone call via lync

    I have Outlook 2010 and Lync 2010 clients installed on a workstation, with full VoIP for Lync for external and internal calls.
    I want to know if its possible to have Outlook place a voice call via lync automatically based on a rule or via custom VBA in outlook?  Is it possible to do the same but send SMS instead of a voice call?
    It seems possible as the tools integrate quite well, but I haven't found any documentation supporting it yet.

    You can call a phone contact in outlook, then it will open a Lync Window.
    But not sure if a rule or custom VBA can make it automatically.
    You may consultant the outlook expert.
    Lisa Zheng
    TechNet Community Support

  • How to configure Outlook 2013 to call direct from within the application without using Lync 2013?

    I have Outlook 2013 running on Windows 7 Pro 64-Bit with Lync 2013 (Office 365 Pro). We are using a 3rd party TAPI app from FortiVoice. WE would like to be able to place calls directly from
    within Outlook either by selecting a telephone number within an email and/or via the PEOPLE (Contacts) area.
    What guidelines should we use to enable this feature and not have Lync 2013 intercepting the process i.e. let OUTLOOK handle placing calls?
    Thanks in advance for any feedback provided.

    Hi,
    There seems no solution for this issue so far.
    Here is a fix for older versions of Outlook, maybe worth a try.
    http://support.microsoft.com/kb/959625/en-us
    However, if it doesn’t work, please try Malte’s reply as the workaround in the following thread. See:
    http://social.technet.microsoft.com/Forums/office/en-US/3946f1bb-cc3d-41b6-ab9c-092d62d024d1/outlook-2013-tapi-calling-with-lync-installed?forum=officesetupdeploy
    Thanks.
    Steve Fan
    TechNet Community Support
    We
    are trying to better understand customer views on social support experience, so your participation in this
    interview project would be greatly appreciated if you have time.
    Thanks for helping make community forums a great place.

  • Schedule a meeting via Lync 2013 client

    Hi All,
    quick run down of my set up,
    Exchange 2013 SP1 (no UM) and new installation of Lync 2013 FE with Feb 2015 cumulative updates (no Ent voice )
    haven't integrated Exchange with Lync.
    my problem is when i try to schedule a meeting with a colleague via Lync 2013 client it says "no free/busy information could be retrieved and if i let it stay open for 5 min it will come up or unless I unselect and reselect the user the information
    comes up.
    any idea what's causing thus and how to fix it?
    Thanks in advance

    Not sure of a fix, but Michael LaMontange posted a workaround for it:
    http://realtimeuc.com/2013/04/no-free-busy-when-scheduling-meeting-from-lync/
    Some other thoughts here:
    http://www.doitfixit.com/index.php?option=com_content&view=article&id=82:no-freebusy-information&catid=34:exchange-2010&Itemid=53
    Please remember, if you see a post that helped you please click "Vote As Helpful" and if it answered your question please click "Mark As Answer".
    SWC Unified Communications
    This forum post is based upon my personal experience and does not necessarily reflect the opinion or view of Microsoft, its employees, or other MVPs.

  • Lync 2013 client deployment via SCCM 2012 forcing restart

    All, 
    I am attempting to deploy the Lync 2013 x86 client via SCCM 2012 to 158 machines running the Office 2010 suite. My package runs, and the installs complete but they are forcing a restart after the install even though I have gone in to everything that I can
    think of to tell the install not to force a restart. I am a newb in the ways of SCCM so I have been self teaching, and I may have missed something. 
    I have gone into the config.xml and changed the value SETUP_REBOOT to NEVER. 
    In the program properties I have RUN set as HIDDEN, and AFTER RUNNING set to NO ACTION REQUIRED. 
    Is there something that I am missing to stop the users machine from restarting after the install completes?

    Great, unfortunately it will be because files (usually shared DLLs) are in use as Office is opened, despite it being an older version. 
    Agree it's not optimal, I usually just tell clients that they will need to reboot, or that it will push out overnight (when I schedule it) and their computer will restart, so make sure they save everything.
    If this helped you please click "Vote As Helpful" if it answered your question please click "Mark As Answer"
    Georg Thomas | Lync MVP
    Blog www.lynced.com.au | Twitter
    @georgathomas
    Lync Edge Port Check (Beta)

  • Lync 2013 PSTN calling not working with Sonus SBC 1000 over TLS and SRTP

    Dear All,
    We have recently installed Lync 2013 Enterprise Edition with a Pool of 3 FE Servers (MEDIATION COLLOCATED).
    We need to implement TLS and SRTP with Sonus SBC 1000. However calls are not routing b/w SBC and Lync.
    We are using wild card certificate with multiple SIP Domains as SAN(s), for internal FE servers as well SBC.
    Also i would like to mentioned here that inbound and outbound calls are routing properly when we tested it over TCP.
    When I move to TLS Only calls from Lync to SBC (outgoing) are working without encryption.
    Here are the OCS Logger traces for incoming calls which are not landing on lync:
    TL_INFO(TF_PROTOCOL) [1]2C5C.0D30::04/30/2014-14:35:18.020.00026518.020.00026518.020.00026518.020.00026518.020.00026518.020.00026518.020.00026518.020.000265d2
    (S4,SipMessage.DataLoggingHelper:sipmessage.cs(774))[3491463749]
    >>>>>>>>>>>>Outgoing SipMessage c=[<SipTlsConnection_AE0419>], 10.10.0.11:5067->10.10.7.50:25678
    SIP/2.0 400 Bad Request
    FROM: "3158222726"<sip:[email protected]>;tag=ac3201ce-4d7
    TO: <sip:[email protected]:5067>;epid=D2091CF753;tag=f373543c
    CSEQ: 2 INVITE
    CALL-ID: [email protected]
    VIA: SIP/2.0/TLS 10.10.7.50:5067;branch=z9hG4bK-UX-ac32-01ce-0b14
    CONTENT-LENGTH: 0
    SERVER: RTCC/5.0.0.0 MediationServer
    ------------EndOfOutgoing SipMessage
    TL_INFO(TF_PROTOCOL) [1]2C5C.0D30::04/30/2014-14:35:18.027.00026518.027.00026518.027.00026518.027.00026518.027.00026518.027.00026518.027.00026518.027.000265d7
    (S4,SipMessage.DataLoggingHelper:sipmessage.cs(774))[2666394843]
    >>>>>>>>>>>>Outgoing SipMessage c=[<SipTlsConnection_370F030>], 10.10.0.11:58059->10.10.0.13:5061
    SERVICE sip:2138797082;[email protected];user=phone SIP/2.0
    FROM: <sip:2138797082;[email protected];user=phone>;epid=DCFDB95F4C;tag=17d286a93
    TO: <sip:2138797082;[email protected];user=phone>
    CSEQ: 3 SERVICE
    CALL-ID: de750f98bdd94e908be5f2f975228ff7
    MAX-FORWARDS: 70
    VIA: SIP/2.0/TLS 10.10.0.11:58059;branch=z9hG4bKd47f1d3c
    CONTACT: <sip:[email protected];gruu;opaque=srvr:MediationServer:CiGdW3iH5FiI3Qvr3PIKGQAA>
    CONTENT-LENGTH: 630
    SUPPORTED: gruu-10
    USER-AGENT: RTCC/5.0.0.0 MediationServer
    CONTENT-TYPE: application/msrtc-reporterror+xml
    <?xml version="1.0" encoding="us-ascii"?>
    <reportError xmlns="http://schemas.microsoft.com/2006/09/sip/error-reporting">
    <error callId="[email protected]" fromUri="sip:3158222726;[email protected];user=phone" toUri="sip:2138797082;[email protected];user=phone" fromTag="ac3201ce-4d7"
    toTag="" requestType="INVITE" contentType="application/sdp;call-type=audio" responseCode="400"><diagHeader>10013;reason="Gateway peer in inbound call is not found in topology document or does not depend
    on this Mediation Server"</diagHeader><progressReports /></error></reportError>------------EndOfOutgoing SipMessage
    Call
    Send SMS
    Add to Skype
    You'll need Skype CreditFree via Skype

    @Paul, Thanks for you response.
    All ports / IP Add / DNS are defined properly. Telenet on listening port is working.
    We are using Public Certificate for 3 Domains (wild card) and same is loaded and verified in SBC
    I've not reviewed the OCS logs properly posted above.
    What i've found or seems to me is that in a TLS Calls:
    After receiving SIP Invite from SBC, mediation server started TLS Negotiation Process b/w Lync 2013 Server Pool and it fails.
    SIP Domains:
    contoso.com (default)
    fabrikam.com
    Lync FE Pool (lync.contoso.com
    Here are the some more logs.
    TL_INFO(TF_PROTOCOL) [0]2DF8.2930::05/01/2014-11:50:31.612.00025e49 (S4,SipMessage.DataLoggingHelper:sipmessage.cs(774))[2716989131]
    <<<<<<<<<<<<Incoming SipMessage c=[<SipTlsConnection_103DFE0>], 10.10.0.11:5067<-10.10.7.50:24591
    INVITE sip:[email protected]:5067 SIP/2.0
    FROM: "3158222726" <sip:[email protected]>;tag=ac3201ce-ae
    TO: <sip:[email protected]:5067>
    CSEQ: 2 INVITE
    CALL-ID: [email protected]
    MAX-FORWARDS: 70
    VIA: SIP/2.0/TLS 10.10.7.50:5067;branch=z9hG4bK-UX-ac32-01ce-010c
    CONTACT: <sip:[email protected]:5067;transport=TLS>
    CONTENT-LENGTH: 406
    SUPPORTED: replaces,update,100rel
    USER-AGENT: SONUS SBC1000 3.1.2v293 Sonus SBC
    CONTENT-TYPE: application/sdp
    ALLOW: INVITE, ACK, CANCEL, BYE, NOTIFY, OPTIONS, REFER, REGISTER, UPDATE, PRACK
    P-ASSERTED-IDENTITY: "3158222726" <sip:[email protected]>
    v=0
    o=SBC 9 1001 IN IP4 10.10.7.50
    s=VoipCall
    c=IN IP4 10.10.7.50
    t=0 0
    m=audio 16418 RTP/AVP 8 0 101 13
    c=IN IP4 10.10.7.50
    a=rtpmap:8 PCMA/8000/1
    a=rtpmap:0 PCMU/8000/1
    a=rtpmap:101 telephone-event/8000
    a=fmtp:101 0-15
    a=rtpmap:13 CN/8000
    a=ptime:20
    a=tcap:1 RTP/SAVP
    a=pcfg:1 t=1
    a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:pqL6Tke8pVmXPuplJ1G3+Sr9jM97H8R7iBagWzzh|2^31|1:1
    a=sendrecv
    ------------EndOfIncoming SipMessage
    TL_INFO(TF_PROTOCOL) [1]2DF8.0E04::05/01/2014-11:50:31.665.00025e8e (S4,SipMessage.DataLoggingHelper:sipmessage.cs(774))[2716989131]
    >>>>>>>>>>>>Outgoing SipMessage c=[<SipTlsConnection_103DFE0>], 10.10.0.11:5067->10.10.7.50:24591
    SIP/2.0 100 Trying
    FROM: "3158222726"<sip:[email protected]>;tag=ac3201ce-ae
    TO: <sip:[email protected]:5067>
    CSEQ: 2 INVITE
    CALL-ID: [email protected]
    VIA: SIP/2.0/TLS 10.10.7.50:5067;branch=z9hG4bK-UX-ac32-01ce-010c
    CONTENT-LENGTH: 0
    ------------EndOfOutgoing SipMessage
    TL_INFO(TF_CONNECTION) [1]184C.0EFC::05/01/2014-11:50:32.652.00025f32 (SIPStack,SIPAdminLog::WriteConnectionEvent:SIPAdminLog.cpp(454))[946832530] $$begin_record
    Severity: information
    Text: TLS negotiation started
    Local-IP: 10.10.0.11:5061
    Peer-IP: 10.10.0.11:52529
    Connection-ID: 0x10BE00
    Transport: TLS
    $$end_record
    TL_INFO(TF_PROTOCOL) [1]184C.0EFC::05/01/2014-11:50:32.669.00026236 (SIPStack,SIPAdminLog::ProtocolRecord::Flush:ProtocolRecord.cpp(265))[1853494582] $$begin_record
    Trace-Correlation-Id: 1853494582
    Instance-Id: 425D
    Direction: incoming
    Peer: 10.10.0.11:52529
    Message-Type: request
    Start-Line: NEGOTIATE sip:127.0.0.1:5061 SIP/2.0
    FROM: <sip:contoso.com>;ms-fe=LYNCFE1.fabrikam.com
    TO: <sip:contoso.com>
    CALL-ID: aa53739ef9b34b93ba9c97d3ee56cb99
    CSEQ: 1 NEGOTIATE
    VIA: SIP/2.0/TLS 10.10.0.11:52529
    MAX-FORWARDS: 0
    CONTENT-LENGTH: 0
    SUPPORTED: NewNegotiate
    SUPPORTED: ECC
    REQUIRE: ms-feature-info
    SERVER: RTC/5.0
    $$end_record
    TL_INFO(TF_CONNECTION) [1]184C.0EFC::05/01/2014-11:50:32.669.0002636e (SIPStack,SIPAdminLog::WriteConnectionEvent:SIPAdminLog.cpp(383))[946832530] $$begin_record
    Severity: information
    Text: Connection established
    Peer-IP: 10.10.0.11:52529
    Peer: lync.contoso.com:52529;ms-fe=LYNCFE1.fabrikam.com
    Peer-Cert: contoso.com(LYNCFE1.fabrikam.com)
    Transport: M-TLS
    Data: alertable="yes"
    $$end_record
    TL_WARN(TF_CONNECTION) [1]184C.0EFC::05/01/2014-11:50:32.669.00026387 (SIPStack,SIPAdminLog::WriteConnectionEvent:SIPAdminLog.cpp(386))[946832530] $$begin_record
    Severity: warning
    Text: The pool FQDN provided by the peer in its NEGOTIATE feature information does not match the pool configured in CMS for the server FQDN that it provided
    Peer-IP: 10.10.0.11:52529
    Peer: lync.contoso.com:52529;ms-fe=LYNCFE1.fabrikam.com
    Peer-Cert: contoso.com(LYNCFE1.fabrikam.com)
    Transport: M-TLS
    Data: fqdn="LYNCFE1.fabrikam.com";pool="contoso.com";expected-fqdn="lync.contoso.com";info="Possible server configuration issue"
    $$end_record
    TL_INFO(TF_DIAG) [1]184C.0EFC::05/01/2014-11:50:32.670.000265be (SIPStack,SIPAdminLog::WriteDiagnosticEvent:SIPAdminLog.cpp(802))[1853494582] $$begin_record
    Severity: information
    Text: Routed a locally generated response
    SIP-Start-Line: SIP/2.0 200 OK
    SIP-Call-ID: aa53739ef9b34b93ba9c97d3ee56cb99
    SIP-CSeq: 1 NEGOTIATE
    Peer: lync.contoso.com:52529;ms-fe=LYNCFE1.fabrikam.com
    $$end_record
    TL_INFO(TF_PROTOCOL) [1]184C.0EFC::05/01/2014-11:50:32.670.00026615 (SIPStack,SIPAdminLog::ProtocolRecord::Flush:ProtocolRecord.cpp(265))[1853494582] $$begin_record
    Trace-Correlation-Id: 1853494582
    Instance-Id: 425E
    Direction: outgoing;source="local"
    Peer: lync.contoso.com:52529;ms-fe=LYNCFE1.fabrikam.com
    Message-Type: response
    Start-Line: SIP/2.0 200 OK
    FROM: <sip:contoso.com>;ms-fe=LYNCFE1.fabrikam.com
    To: <sip:contoso.com>;tag=C3A751556F332F7265E9BA2517C878D4
    CALL-ID: aa53739ef9b34b93ba9c97d3ee56cb99
    CSEQ: 1 NEGOTIATE
    Via: SIP/2.0/TLS 10.10.0.11:52529;ms-received-port=52529;ms-received-cid=10BE00
    Content-Length: 0
    Require: ms-feature-info
    Supported: NewNegotiate,OCSNative,ECC,IPv6,TlsRecordSplit
    Server: RTC/5.0
    $$end_record
    TL_INFO(TF_PROTOCOL) [1]2DF8.1078::05/01/2014-11:50:32.671.000266da (S4,SipMessage.DataLoggingHelper:sipmessage.cs(774))[720988281]
    >>>>>>>>>>>>Outgoing SipMessage c=[<SipTlsConnection_F8A09B>], 10.10.0.11:52529->10.10.0.11:5061
    SERVICE sip:2138797082;[email protected];user=phone SIP/2.0
    FROM: <sip:2138797082;[email protected];user=phone>;epid=16FEE4A02E;tag=22fd877f3a
    TO: <sip:2138797082;[email protected];user=phone>
    CSEQ: 3 SERVICE
    CALL-ID: ac0f7bc4cdc94c1dbd0bb51c7c02c890
    MAX-FORWARDS: 70
    VIA: SIP/2.0/TLS 10.10.0.11:52529;branch=z9hG4bK67a4c9d1
    CONTACT: <sip:[email protected];gruu;opaque=srvr:MediationServer:CiGdW3iH5FiI3Qvr3PIKGQAA>
    CONTENT-LENGTH: 628
    SUPPORTED: gruu-10
    USER-AGENT: RTCC/5.0.0.0 MediationServer
    CONTENT-TYPE: application/msrtc-reporterror+xml
    - <reportError xmlns="http://schemas.microsoft.com/2006/09/sip/error-reporting">
    - <error callId="[email protected]"
    fromUri="sip:3158222726;[email protected];user=phone"
    toUri="sip:2138797082;[email protected];user=phone"
    fromTag="ac3201ce-ae"
    toTag=""
    requestType="INVITE"
    contentType="application/sdp;call-type=audio"
    responseCode="400">
    <diagHeader>10013;reason="Gateway peer in inbound call is not found in topology document or does not depend on this Mediation Server"</diagHeader>
    <progressReports/>
    - </error>
    ------------EndOfOutgoing SipMessage

  • MS Dynamics CRM 2013 install via GPO

    Good Morning,
    I need to rollout MS Dynamics CRM 2013 to all 180 of my users. I would like to do this via GPO but I only have the .exe install files and no .msi files. I have adhered to the following -
    http://technet.microsoft.com/en-us/library/hh699775.aspx
    I have followed the steps under the section Create the CRMCLient_bitversion.msi file
    but I am not achieving any administrative installation files. For example I have a network share setup as follows -
    \\server\crm_files\test
    I have mapped a network folder via command prompt using the net use command to map the Z: drive to
    \\server\crm_files. As per the instructions I have run the following command -
    CRM2013-Client-ENU-i386.exe /a /q /targetdir \\server\crm_files\test
    When I run this command I am prompted to click Run or Cancel so I click Run. After 2-3 seconds I then get a dialog box showing the different switches that I can run with the only other option being to close the box. After closing the box I look in my
    test folder and it is empty.
    Should there be something in the test folder? Have I run the wrong command string?
    EDIT: Please note that I only have the installation/.exe file for CRM 2013. The article on the link I posted earlier mentions an XML file that is included with the installation files. I do not have this XML file.
    Jeet S

    Hi,
    Have you checked this article?
    Install Microsoft Dynamics CRM for Outlook using a command prompt
    ==============
    CRM2013-Client-ENU-i386.exe /a /q /targetdir \\server\crm_files\test
    The command here is not in the right way, we need first to extract files from the
    CRM2013-Client-ENU-i386.exe, under the folder we will find the
    SetupClient.exe and the mentioned XML files.
    Run this command to extract the file:
    CRM2013-Client-ENU-i386.exe /extract
    Then use the command below to create an MSI file:
    Setupclient /Q /A /targetdir "\\share\mscrm_client_admin"
    Besides, for Microsoft Dynamics CRM 2013 deployment, we'd better ask in the forum below:
    Microsoft Dynamics CRM Forum
    http://community.dynamics.com/crm/f/117.aspx?pi49901=0
    Best regards
    Michael Shao
    TechNet Community Support

  • Alert rule - Lync 2013 MP - Call reliability alert

    We have SCOM 2012 and use Lync 2013 MP to monitor Lync environment. There is an alert in SCOM created by rule Call reliability alert rule from Lync MP. It is generated based on event ID 1122 from Operations Manager event log. In details there is a following
    info:
    The failure happens for the following modalities:
    Media Type = Audio
    Distinct Users Impacted = 2
    Total Calls = 156
    Failed Calls = 2
    Failure Percentage = 1.2820512820500
    This alert is generating quite often but everything is working ok, no problems with Lync. I am wondering how I can tune this rule to not generate alerts so often, only when there is a real problem. E.g. is it possible to generate alert based on the failure
    percentage value (this is a body of event id 1122)?
    I checked override options for this alert rule but not sure what I can do

    Hi
    bbelko
    There is one more collection rules is involved in this process, you can override the values to reduce calll reliability alerts.
    If the value changed then the alerts will reduce based on criteria.
    above mentioned values are default ,  you can set as per your organization.
    check and update the result  here that will useful to others to find.
    Hope you got some info.
    Thanks & Regards, Kesa_Kara

  • IOS 8.1 will not let me make calls via car Bluetooth system , i can only receive calls , making calls i have to select handsfree manually each time , no problem before , 2013 mitsubishi outlander

    iOS 8.1 will not let me make calls via car Bluetooth system , i can only receive calls , making calls i have to select handsfree manually each time ,  i had no problem before iOS 8 , 2013 mitsubishi outlander , I'm based in South Africa and support of any type really ***** here , would really appreciate any help , i have unpaired , deleted , repaired and so forth , nothing works

    Hi
    i have a honda crv, 9 month old. I have before an iphone 5 s, it was perfect./ios7.1.2/
    after soft update 8.0 disconected from hands free system, every 5-6 second, over 2-3 second back into connection automatically.
    After i changed into iphone 6 / only 8.X/
    It was an update. i think 8.0.2 for this problem, that this update was bad.
    This problem is by lexus, VW, and another 2 Honda CRV, 1 civic / 2024 /
    ONLY 8.0 or higher soft
    this time 8.1.2
    Today was 1 minutes call, by calling was 4-5 disconnect episodes
    i probe with another iphone 5s/7.1.2/, motorola x 2014, galaxy s5 - there are perfectly
    IT'S a  SOFTWARE PROBLEM!!!!

  • App-V CRM 2013 Outlook Client and Office 2013 Click to Run

    Hi,
    I'm trying to get going with enbing the CRM 2013 for Outlook client with the VL version of Office Pro Plus 2013.  I have successfully published and use Office App-V package in a test environment.  App-V version 5.0 SP2 is installed on the client
    PC (Windows 7 64bit).  SCCM 2012 R2 is used to publish APP-V applications to user groups.
    I have sequenced the CRM 2013 Outlook client (offline mode disabled) with UR2 and published it using SCCM as a "Add-on or Plug-in.  I've also created a connection group so that the App-V version of Office 2013 is able to connect to the sequenced
    CRM client.  The client installs successfully, but the CRM tab doesn't appear in the Outlook Ribbon, and the Configuration Wizard crashes each time it is launched.  The App-V event log is blank (which I'm taking to be a good sign).  All CRM
    client prerequisites have been preinstalled on the target PC.
    I'm thinking that the CRM client can't see the Outlook application and therefore crashes and doesn't integrate with the Outlook application.  Problem Signature 09 (from the crash explanation) states "System.NullReference Exception".
    I can't seem to find much out there for sequencing the 2013 version of the client.  Has any else managed this yet or have any ideas where I'm going wrong?
    Thanks,
    Tim

    Hello,
    I would use Process Monitor to understand what happens and to see why Outlook isn't seeing the plugin, and why the wizard is crashing
    Nicke Källén | The Knack| Twitter:
    @Znackattack

  • Error when trying to create complaint via IC WebClient (CRM 5.2)calling URL

    Hi,
    I'm trying to create a complaint using the following URL: http://<host>:<port>/sap/bc/bsp/sap/crm_ui_frame/default.htm?crm-object-type=BT120_CPL&crm-object-action=D, but get always the following error:
    Error when processing your request
    What has happened?
    The URL http://<host>:<port>/sap/bc/bsp/sap/crm_ui_frame/BSPWDApplication.do was not called due to an error.
    Note
    The following error text was processed in the system CMZ : The current application triggered a termination with a short dump.
    The error occurred on the application server sapcmzu_CMZ_86 and in the work process 0 .
    The termination type was: RABAX_STATE
    The ABAP call stack was:
          Method: IF_BOL_BO_COL~ADD of program CL_CRM_BOL_BO_COL=============CP
          Method: IF_BOL_BO_COL~ADD of program CL_BSP_WD_COLLECTION_WRAPPER==CP
          Method: IP_FOLLOWUP of program CL_BT120H_C_MAINWINDOW_IMPL===CP
          Method: PROCESS_NAV_QUEUE of program CL_BSP_WD_VIEW_MANAGER========CP
          Method: DO_REQUEST of program CL_BSP_WD_VIEW_MANAGER========CP
          Method: DO_REQUEST of program CL_BSP_CTRL_ADAPTER===========CP
          Method: ON_REQUEST of program CL_BSP_RUNTIME================CP
          Method: IF_HTTP_EXTENSION~HANDLE_REQUEST of program CL_HTTP_EXT_BSP===============CP
          Method: EXECUTE_REQUEST_FROM_MEMORY of program CL_HTTP_SERVER================CP
          Function: HTTP_DISPATCH_REQUEST of program SAPLHTTP_RUNTIME
    In ST22 I find the following text:
    Diagnosis
         An attempt was made to add an unattached object (NULL reference) to
         a business object collection or entity collection of the Business
         Object Layer (BOL) by using method IF_BOL_BO_COL~ADD. This is a
         method application error.
    But on the other side the change method works well:
    http://<host>:<port>/sap/bc/bsp/sap/crm_ui_frame/default.htm?crm-object-type=BT120_CPL&crm-object-action=B&crm-object-keyname=GUID&crm-object-value=DC445922DEB133F1939A00145EF80CCC
    Is there anybody with experience regarding this issue? Perhaps the parameters are wrong?
    Kind Regards,
    Christian

    Hi Sudipta,
    many thanks for your answer. But sadly it still does not work. I have created a new GUID using function module 'GUID_CREATE' and have appended it to the url:
    http://<host>:<port>/sap/bc/bsp/sap/crm_ui_frame/default.htm?crm-object-type=BT120_CPL&crm-object-action=D&crm-object-keyname=GUID&crm-object-value=47CD5B2204B619B9E10000000A8031BA
    Now I'm getting the following exception:
    Error occurred during navigation
    An exception has occurred Exception Class  CX_BOL_EXCEPTION - Access Previously Deleted Entity 
    Method:  CL_CRM_BOL_CORE=>GET_RELATED_ENTITIES 
    Source Text Row:  18
    Is there still something wrong with the url?
    By the way: is there any documentation regarding this topic? I did only find a blog, nothing else.
    Kind Regards,
    Christian

  • Dynamic CRM 2013 Online how to execute Report, generate PDF and email

    Dear All,
    I am using Dynamic CRM 2013 online. For quote, I have workflow and Dialogue processes for review process. On approval, I want the system to generate a PDF of quote report, attach the PDF and email it to the Customer.
    Better I would like, When approver, clicks on the approve button, the system should auto generate a PDF of quote report, attach the PDF and email it to the Customer, without any further input from the user. If its not possible, I may have to put button on
    quote form.
    I am using the attached code, but facing various issues.
    1. Under prepare the SOAP Message coding part, I am not sure what should be the below URL for CRM 2013 Online?
    xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    2. What should be the emailid here? Is it Recepient Contact id(Guid) ?
    var emailid = resultXml.selectSingleNode("//CreateResult").nodeTypedValue;
    alert("emailid" + emailid.toString());
    3. Using this code, not able to create Entity for "ActivityMimeAttachment", I am getting newEntity as undefined.
    Below is the code I am using. Please check and help me out, where I am going wrong. Let me know if any better way to implement it. At present, I have put one button on quote form, on click event, below code will get executed.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <script type="text/javascript">
    var Xrm;
    if (window.opener) { Xrm = window.opener.Xrm; }
    else if (window.parent) { Xrm = window.parent.Xrm; }
    function getReportingSession() {
    var reportName = "Quotation_Report"; //set this to the report you are trying to download
    var reportId = "7C39D18F-1DC6-E311-8986-D89D6765B238"; //set this to the guid of the report you are trying to download
    var recordid = Xrm.Page.data.entity.getId();
    // recordid = recordid.substring(1, 37); //getting rid of curly brackets
    alert(recordid);
    var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
    var retrieveEntityReq = new XMLHttpRequest();
    retrieveEntityReq.open("POST", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    retrieveEntityReq.send("id=%7B" + reportId + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false");
    var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
    var ret = new Array();
    ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
    x = retrieveEntityReq.responseText.indexOf("ControlID=");
    ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
    return ret;
    function createEntity(ent, entName, upd) {
    var jsonEntity = JSON.stringify(ent);
    var createEntityReq = new XMLHttpRequest();
    var ODataPath = Xrm.Page.context.getServerUrl() + "XRMServices/2011/OrganizationData.svc";
    createEntityReq.open("POST", ODataPath + "/" + entName + "Set" + upd, false);
    createEntityReq.setRequestHeader("Accept", "application/json");
    createEntityReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    createEntityReq.send(jsonEntity);
    var newEntity = JSON.parse(createEntityReq.responseText).d;
    alert("new entity" + newEntity);
    return newEntity;
    function createAttachment() {
    var params = getReportingSession();
    var recordid = Xrm.Page.data.entity.getId();
    alert("recordid " + recordid);
    var orgName = Xrm.Page.context.getOrgUniqueName();
    var userID = Xrm.Page.context.getUserId();
    //create email record
    // Prepare the SOAP message.
    var xml = "<?xml version='1.0' encoding='utf-8'?>" +"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'" +
    " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" +
    " xmlns:xsd='http://www.w3.org/2001/XMLSchema'>" +
    "<soap:Header>" +
    "</soap:Header>" +
    "<soap:Body>" +
    "<Create xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>" +
    "<entity xsi:type='email'>" +
    "<regardingobjectid type='quote'>" + recordid + "</regardingobjectid>" +
    "<subject>" + "Email with Attachment4" + "</subject>" +
    "</entity>" +
    "</Create>" +
    "</soap:Body>" +
    "</soap:Envelope>";
    // Prepare the xmlHttpObject and send the request.
    var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
    xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
    xHReq.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Create");
    xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xHReq.setRequestHeader("Content-Length", xml.length);
    xHReq.send(xml);
    // Capture the result
    var resultXml = xHReq.responseXML;
    // alert("resultXml " + resultXml);
    // Check for errors.
    var errorCount = resultXml.selectNodes('//error').length;
    if (errorCount != 0) {
    alert("ERROR");
    var msg = resultXml.selectSingleNode('//description').nodeTypedValue;
    alert(msg);
    var emailid = resultXml.selectSingleNode("//CreateResult").nodeTypedValue;
    alert("emailid" + emailid.toString());
    //var emailid = userID;
    var post = Object();
    post.Body = encodePdf(params);
    var email = new Array();
    email[0] =new Object();
    email[0].id = emailid;
    email[0].entityType ='email';
    post.Subject ="File Attachment";
    post.AttachmentNumber = 1;
    post.FileName ="Report.pdf";
    post.MimeType ="application/pdf";
    post.ObjectId = Object();
    post.ObjectId.LogicalName ="email";
    post.ObjectId.Id = email[0].id;
    post.ObjectTypeCode ="email";
    alert(post.ObjectId.Id);
    createEntity(post,"ActivityMimeAttachment", "");
    alert("created successfully");
    email.Subject = "Your Order";
    //Set The current order as the Regarding object
    email.RegardingObjectId = {
    Id: Xrm.Page.data.entity.getId(), //Get the current entity Id , here OrderId
    LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
    //Create Email Activity
    SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
    // Email Call Back function
    function EmailCallBack(result) {
    email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
    var activityPartyFrom = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyFrom.PartyId = {
    Id: customerId, // id of entity you want to associate this activity with.
    LogicalName: "contact"
    // Set the "activity" of the ActivityParty
    activityPartyFrom.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity).
    activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
    // Create the from ActivityParty for the email
    SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
    var activityPartyTo = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyTo.PartyId = {
    Id: ownerId, // id of entity you want to associate this activity with.
    LogicalName: "systemuser"
    // Set the "activity" of the ActivityParty
    activityPartyTo.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity). activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
    // Create the from ActivityParty
    SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
    //ActivityParty From Callback
    function ActivityPartyFromCallBack(result) {
    //ActivityParty To Callback
    function ActivityPartyToCallBack(result) {
    var StringMaker = function () {
    this.parts = [];
    this.length = 0;
    this.append = function (s) {
    this.parts.push(s);
    this.length += s.length;
    this.prepend = function (s) {
    this.parts.unshift(s);
    this.length += s.length;
    this.toString = function () {
    return this.parts.join('');
    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    function encode64(input) {
    var output = new StringMaker();
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;
    while (i < input.length) {
    chr1 = input[i++];
    chr2 = input[i++];
    chr3 = input[i++];
    enc1 = chr1 >> 2;
    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
    enc4 = chr3 & 63;
    if (isNaN(chr2)) {
    enc3 = enc4 = 64;
    else if (isNaN(chr3)) {
    enc4 = 64;
    output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
    return output.toString();
    var bdy = new Array();
    var bdyLen = 0;
    function concat2Bdy(x) {
    bdy[bdyLen] = x;
    bdyLen++;
    function encodePdf(params) {
    bdy = new Array();
    bdyLen = 0;
    var retrieveEntityReq = new XMLHttpRequest();
    var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] + "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] + "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
    retrieveEntityReq.open("GET", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.send();
    BinaryToArray(retrieveEntityReq.responseBody);
    return encode64(bdy);
    </SCRIPT>
    <SCRIPT type=text/vbscript>
    Function BinaryToArray(Binary)
    Dim i
    ReDim byteArray(LenB(Binary))
    For i = 1 To LenB(Binary)
    byteArray(i-1) = AscB(MidB(Binary, i, 1))
    concat2Bdy(AscB(MidB(Binary, i, 1)))
    Next
    BinaryToArray = byteArray
    End Function
    </SCRIPT>
    </head>
    <body>
    <input type="button" onclick="createAttachment();" value="Attach Report" />
    </body>
    </html>
    Thanks. and waiting for your valuable comments.
    - Mittal

    Hello,
    Yes, I was able to make my code working as below. Tested on CRM online 2013.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
    <script type="text/javascript">
    if (typeof (SDK) == "undefined")
    { SDK = { __namespace: true }; }
    SDK.JScriptRESTDataOperations = {
    _context: function () {
    if (typeof GetGlobalContext != "undefined")
    { return GetGlobalContext(); }
    else {
    if (typeof Xrm != "undefined") {
    return Xrm.Page.context;
    else { return new Error("Context is not available."); }
    _getServerUrl: function () {
    var serverUrl = this._context().getServerUrl()
    if (serverUrl.match(/\/$/)) {
    serverUrl = serverUrl.substring(0, serverUrl.length - 1);
    return serverUrl;
    _ODataPath: function () {
    return this._getServerUrl() + "/XRMServices/2011/OrganizationData.svc/";
    _errorHandler: function (req) {
    return new Error("Error : " +
    req.status + ": " +
    req.statusText + ": " +
    JSON.parse(req.responseText).error.message.value);
    _dateReviver: function (key, value) {
    var a;
    if (typeof value === 'string') {
    a = /Date\(([-+]?\d+)\)/.exec(value);
    if (a) {
    return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
    return value;
    Create: function (object, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("POST", this._ODataPath() + type + "Set", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 201) {
    successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send(JSON.stringify(object));
    Retrieve: function (id, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("GET", this._ODataPath() + type + "Set(guid'" + id + "')", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 200) {
    successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d);
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send();
    Update: function (id, object, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("X-HTTP-Method", "MERGE");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 204 || this.status == 1223) {
    successCallback();
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send(JSON.stringify(object));
    Delete: function (id, type, successCallback, errorCallback) {
    var req = new XMLHttpRequest();
    req.open("POST", this._ODataPath() + type + "Set(guid'" + id + "')", true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.setRequestHeader("X-HTTP-Method", "DELETE");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 204 || this.status == 1223) {
    successCallback();
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send();
    RetrieveMultiple: function (type, filter, successCallback, errorCallback) {
    if (filter != null) {
    filter = "?" + filter;
    else { filter = ""; }
    var req = new XMLHttpRequest();
    req.open("GET", this._ODataPath() + type + "Set" + filter, true);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
    req.onreadystatechange = function () {
    if (this.readyState == 4 /* complete */) {
    if (this.status == 200) {
    successCallback(JSON.parse(this.responseText, SDK.JScriptRESTDataOperations._dateReviver).d.results);
    else {
    errorCallback(SDK.JScriptRESTDataOperations._errorHandler(this));
    req.send();
    __namespace: true
    </script>
    <script type="text/javascript">
    //Create Email and link it with Order as Regarding field
    var Xrm;
    var email = new Object();
    var ownerID = "";
    var CustomerId = "";
    if (window.opener) { Xrm = window.opener.Xrm; }
    else if (window.parent) { Xrm = window.parent.Xrm; }
    //Get ownerid who send email of quotation to customer
    function GetOwnerID() {
    var owner = Xrm.Page.getAttribute("ownerid").getValue();
    ownerID = owner[0].id;
    var ownerName = owner[0].name;
    var entityType = owner[0].entityType;
    GetToEmailGUID();
    //Get customerid who receive email of quotation from owner
    function GetToEmailGUID() {
    var Customer = Xrm.Page.getAttribute('customerid').getValue();
    CustomerId = Customer[0].id;
    var CustomerName = Customer[0].name;
    var entityType = Customer[0].entityType;
    //if CustomerId is type of "Account" then get Primary Contact id of that account
    if (entityType == "account") {
    var contact = Xrm.Page.getAttribute("customerid").getValue();
    if (contact === null) return;
    var serverUrl = Xrm.Page.context.getClientUrl();
    var oDataSelect = serverUrl + "/XRMServices/2011/OrganizationData.svc/AccountSet(guid'" + contact[0].id + "')?$select=PrimaryContactId";
    var req = new XMLHttpRequest();
    req.open("GET", oDataSelect, false);
    req.setRequestHeader("Accept", "application/json");
    req.setRequestHeader("Content-Type", "application/json;charset=utf-8");
    req.onreadystatechange = function () {
    if (req.readyState === 4) {
    if (req.status === 200) {
    var retrieved = JSON.parse(req.responseText).d;
    CustomerId = retrieved.PrimaryContactId.Id;
    else {
    alert(this.statusText);
    req.send();
    function CreateEmail() {
    GetOwnerID();
    email.Subject = "Email with Report Attachment";
    //Set The current order as the Regarding object
    email.RegardingObjectId = {
    Id: Xrm.Page.data.entity.getId(), //Get the current entity Id , here OrderId
    LogicalName: Xrm.Page.data.entity.getEntityName()//Get the current entity name, here it will be “salesOrder”
    //Create Email Activity
    SDK.JScriptRESTDataOperations.Create(email, "Email", EmailCallBack, function (error) { alert(error.message); });
    // Email Call Back function
    function EmailCallBack(result) {
    email = result; // Set the email to result to use it later in email attachment for retrieving activity Id
    var activityPartyFrom = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyFrom.PartyId = {
    Id: CustomerId, //"79EBDD26-FDBE-E311-8986-D89D6765B238", // id of entity you want to associate this activity with.
    LogicalName: "contact"
    // Set the "activity" of the ActivityParty
    activityPartyFrom.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity).
    activityPartyFrom.ParticipationTypeMask = { Value: 2 }; // 2 means ToRecipients
    // Create the from ActivityParty for the email
    SDK.JScriptRESTDataOperations.Create(activityPartyFrom, "ActivityParty", ActivityPartyFromCallBack, function (error) { alert(error.message); });
    var activityPartyTo = new Object();
    // Set the From party of the ActivityParty to relate an entity with Email From field
    activityPartyTo.PartyId = {
    Id: ownerID, //"79EBDD26-FDBE-E311-8986-D89D6765B238", // id of entity you want to associate this activity with.
    LogicalName: "systemuser"
    // Set the "activity" of the ActivityParty
    activityPartyTo.ActivityId = {
    Id: result.ActivityId,
    LogicalName: "email"
    // Now set the participation type that describes the role of the party on the activity).
    activityPartyTo.ParticipationTypeMask = { Value: 1 }; // 1 means Sender
    // Create the from ActivityParty
    SDK.JScriptRESTDataOperations.Create(activityPartyTo, "ActivityParty", ActivityPartyToCallBack, function (error) { alert(error.message); });
    //ActivityParty From Callback
    function ActivityPartyFromCallBack(result) {
    //ActivityParty To Callback
    function ActivityPartyToCallBack(result) {
    GetReportId('Quotation');
    //Create attachment for the created email
    function CreateEmailAttachment() {
    //get reporting session and use the params to convert a report in PDF
    var params = getReportingSession();
    //Email attachment parameters
    var activitymimeattachment = Object();
    activitymimeattachment.ObjectId = Object();
    activitymimeattachment.ObjectId.LogicalName = "email";
    activitymimeattachment.ObjectId.Id = email.ActivityId;
    activitymimeattachment.ObjectTypeCode = "email",
    activitymimeattachment.Subject = "File Attachment";
    activitymimeattachment.Body = encodePdf(params);
    activitymimeattachment.FileName = "Report.pdf";
    activitymimeattachment.MimeType = "application/pdf";
    //Attachment call
    SDK.JScriptRESTDataOperations.Create(activitymimeattachment, "ActivityMimeAttachment", ActivityMimeAttachmentCallBack, function (error) { alert(error.message); });
    //ActivityMimeAttachment CallBack function
    function ActivityMimeAttachmentCallBack(result) {
    var features = "location=no,menubar=no,status=no,toolbar=no,resizable=yes";
    var width = "800px";
    var height = "600px";
    window.open(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", features);
    // To open window which works in outlook and IE both
    //openStdWin(Xrm.Page.context.getServerUrl() + "main.aspx?etc=" + 4202 + "&pagetype=entityrecord&id=" + email.ActivityId, "_blank", width, height, features);
    //This method will get the reportId based on a report name that will be used in getReportingSession() function
    function GetReportId(reportName) {
    var oDataSetName = "ReportSet";
    var columns = "ReportId";
    var filter = "Name eq '" + reportName + "'";
    retrieveMultiple(oDataSetName, columns, filter, onSuccess);
    function retrieveMultiple(odataSetName, select, filter, successCallback) {
    var serverUrl = Xrm.Page.context.getServerUrl();
    var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
    var odataUri = serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "?";
    if (select) {
    odataUri += "$select=" + select + "&";
    if (filter) {
    odataUri += "$filter=" + filter;
    $.ajax({
    type: "GET",
    contentType: "application/json; charset=utf-8",
    datatype: "json",
    url: odataUri,
    beforeSend: function (XMLHttpRequest) {
    XMLHttpRequest.setRequestHeader("Accept", "application/json");
    success: function (data) {
    if (successCallback) {
    if (data && data.d && data.d.results) {
    successCallback(data.d.results);
    else if (data && data.d) {
    successCallback(data.d);
    else {
    successCallback(data);
    error: function (XmlHttpRequest, errorThrown) {
    if (XmlHttpRequest && XmlHttpRequest.responseText) {
    alert("Error while retrieval ; Error – " + XmlHttpRequest.responseText);
    function onSuccess(data) {
    reportId = data[0].ReportId.replace('{', ").replace('}', ");
    CreateEmailAttachment(); // Create Email Attachment
    //Gets the report contents
    function getReportingSession() {
    var pth = Xrm.Page.context.getServerUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
    var retrieveEntityReq = new XMLHttpRequest();
    var Id = Xrm.Page.data.entity.getId();
    var quotationGUID = Id.replace('{', ""); //set this to selected quotation GUID
    quotationGUID = quotationGUID.replace('}', "");
    var reportName = "Quotation"; //set this to the report you are trying to download
    var reportID = "7C39D18F-1DC6-E311-8986-D89D6765B238"; //set this to the guid of the report you are trying to download
    var rptPathString = ""; //set this to the CRMF_Filtered parameter
    var strParameterXML = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'><entity name='quote'><all-attributes /><filter type='and'><condition attribute='quoteid' operator='eq' uitype='quote' value='" + quotationGUID + "' /> </filter></entity></fetch>";
    retrieveEntityReq.open("POST", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    rptPathString = "id=%7B" + reportID + "%7D&uniquename=" + Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" +
    reportName + "&isScheduledReport=false&p:CRMAF_Filteredquote=" + strParameterXML;
    //remove the part starting from &p:salesorderid if your report has no parameters
    retrieveEntityReq.send(rptPathString);
    var x = retrieveEntityReq.responseText.indexOf("ReportSession=");
    var ret = new Array();
    ret[0] = retrieveEntityReq.responseText.substr(x + 14, retrieveEntityReq.responseText.indexOf("&", x) - x - 14); //the session id
    x = retrieveEntityReq.responseText.indexOf("ControlID=");
    ret[1] = retrieveEntityReq.responseText.substr(x + 10, retrieveEntityReq.responseText.indexOf("&", x) - x - 10); //the control id
    return ret;
    var bdy = new Array();
    var bdyLen = 0;
    function concat2Bdy(x) {
    bdy[bdyLen] = x;
    bdyLen++;
    function encodePdf(params) {
    bdy = new Array();
    bdyLen = 0;
    var retrieveEntityReq = new XMLHttpRequest();
    var pth = Xrm.Page.context.getServerUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + params[0] +
    "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + params[1] +
    "&OpType=Export&FileName=Public&ContentDisposition=OnlyHtmlInline&Format=PDF";
    retrieveEntityReq.open("GET", pth, false);
    retrieveEntityReq.setRequestHeader("Accept", "*/*");
    retrieveEntityReq.send();
    BinaryToArray(retrieveEntityReq.responseBody);
    return encode64(bdy);
    var StringMaker = function () {
    this.parts = [];
    this.length = 0;
    this.append = function (s) {
    this.parts.push(s);
    this.length += s.length;
    this.prepend = function (s) {
    this.parts.unshift(s);
    this.length += s.length;
    this.toString = function () {
    return this.parts.join('');
    var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    function encode64(input) {
    var output = new StringMaker();
    var chr1, chr2, chr3;
    var enc1, enc2, enc3, enc4;
    var i = 0;
    while (i < input.length) {
    chr1 = input[i++];
    chr2 = input[i++];
    chr3 = input[i++];
    enc1 = chr1 >> 2;
    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
    enc4 = chr3 & 63;
    if (isNaN(chr2)) {
    enc3 = enc4 = 64;
    } else if (isNaN(chr3)) {
    enc4 = 64;
    output.append(keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4));
    return output.toString();
    </script>
    <script type="text/vbscript">
    Function BinaryToArray(Binary)
    Dim i
    ReDim byteArray(LenB(Binary))
    For i = 1 To LenB(Binary)
    byteArray(i-1) = AscB(MidB(Binary, i, 1))
    concat2Bdy(AscB(MidB(Binary, i, 1)))
    Next
    BinaryToArray = byteArray
    End Function
    </script>
    </head>
    <body>
    <input type="button" onclick="CreateEmail();" value="Attach Report" />
    </body>
    </html>
    Thank you,
    Mittal.

  • Duplicate posts on personal wall in MS CRM 2013

    Hi, 
    We are currently facing a strange issue on a recent MS CRM 2013 deployment. Every post gets repeated on the user's personal wall. i.e. if a user enters a phone call, the wall displays 2 identical posts regarding the activity.What could be the reason and
    how can it be resolved?
    Thanks
    Rinish R

    Hello rinish,
    if i understand your problem well, i'd say Rocky answered the question here:
    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/78560d28-6e50-4ab6-a337-8ab5ed92403a/duplicate-wall-posts-when-creating-accounts?forum=crm
    Go into Default solution, click on SDK Message Processing Steps (in the left column) and disable duplicate steps.
    Worked for my organization.
    Best regards

  • Microsoft Dynamics CRM 2013 Google Chrome not populating popups working correctly with pop ups.

    If incorrect forum, just alert and move.  I am having an issue with hosted Microsoft Dynamics 2013 and Google Chrome latest release, 31.   This just started with the hosted version of Dynamics CRM 2013, Chrome had been working correctly with
    our earlier version of CRM.
    When users on latest version of Chrome, 31, login to Dynamics CRM 2013, everything looks fine.  Issue is specifically, for sales folks, when they open a client record, and where the client info is located, there is a standard date and time and tiny
    little calendar you can pull up if you click on it.  When the user clicks on the tiny little calendar, they DO get a pop up, but the pop up is blank.  And, there is no error message at all.  Nothing freezes, nothing bad happens at all, except
    for the salesperson, who live and die by their calendars and ability to schedule appointments and see exiting appointments.
    This is not some in house coding issue.  It is a generic CRM phone call record that has this issue. 
    Again, no errors, nothing crashes, but Dynamics CRM 2013 is useless to Google Chrome users in house because of this. Which, in a support position, is terrible.  Users who got an upgrade, have their favorite interface rendered useless.  And these
    are sales folks.  And, I did all settings according to what I was able to find for CRM 2010 and Chrome, for when pop ups do not work, and all settings were already correct for pop ups, website is in trusted sites, etc, which is what I expected, since
    everything worked on CRM 2010.
    Any clues or ideas? Thank You.
    Rick

    We don't know. Better to ask over here.
    https://community.dynamics.com/crm/f/117.aspx
    Regards, Dave Patrick ....
    Microsoft Certified Professional
    Microsoft MVP [Windows]
    Disclaimer: This posting is provided "AS IS" with no warranties or guarantees , and confers no rights.

  • Save and Close button issue in CRM 2013 for Activity Type Appointment

    Hi All,
    Have come across a strange behavior in CRM 2013 and would like  to be sure that it really is an issue which others have encountered too.
    Open a Case record, and click on Activity navigation link to see the Open Activity Associated View. Then try creating an Activity of type Meeting and click on
    Save & Close button (not just Save). When you refresh the view, the activity might show up. But repeat the same steps and create another Activity of Type Meeting and this activity will not show up. It doesnt show up even in the All Activities
    view. Seems like the activity does not get created when using Save and Close button.
    This behavior is replicated even on online 30 day trial version. Any inputs?
    Regards,
    Yogesh

    The problem only occurs when your appointment times clash.   "Save and close" just throws the appointment away.  "Save" tells you about clash (or perhaps it's just unavailability) and allows you to ignore and continue with the
    save.

Maybe you are looking for

  • Configuration problem Universal Worklist (UWL)

    Hi, I'm trying to do the configure the Universal Worklist using the <a href="https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/fa21a890-0201-0010-708b-d0cfc117e7cd">How to Configure the Universal Worklist.pdf</a>. Problem is th

  • How can I get my greyed out photos to show up permanently in iPhoto.

    I recently had to have my HD reformatted.   Am now in process of reinstalling my 3rd party software.    So far so good.   Some of my photos are missing both on my computer and on my time machine.     They appear in my "photos" when I scroll past them

  • Simple IPhoto Questions-How to reduce picture file size?

    Hello, I know how to reduce the size of photos using the Mail program, but is there a simple way to reduce the size of photo files and keep them for sending through the internet at later dates. I would like to keep the photos at their original size f

  • How do I learn about my missing $3000 computer?

    I ordered an iMac and it arrived DOA.  I sent it back for a replacement and it was received the days ago.  I have called asking about a replacement and the phone helper said they would send it.  How long should I wait?  I also paid for apple care whi

  • Blank thumbnail photos on ipad

    Blank thumbnail photos on ipad