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 -
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 advanceNot 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 SHi,
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 doHi
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 , 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,
TimHello,
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,
ChristianHi 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.
- MittalHello,
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 RHello 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 -
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.
RickWe 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,
YogeshThe 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