Archivelink in CRM

Hi I want to upload a PDF document in CICO in BPVIEW .
I have created the document type as pdf and assigned to BUS2000112 .but this document type is not displaying in CIC0.
I saw the table /IXOS/DC_TCHIER but in this table my entries doesnot exist.
Do I need to create the node type and data source if so how to create .
Can you please help me

Hi,
Generally for archivelink in SAP CRM, you have to set ArchiveLink customizing (IMG->SAP WAS -> Application Server-> Basis Services-> ArchiveLink)
One of the setting which you need to make is EDIT LINKS (check the sub customizing from the IMG path above).
In WebUI for that specific business document (for example Business Activity), under tab Attachment, you can find special folder call ArchiveLink. Click Advance if you can not see the ArchiveLink folder.
For GUI, in tab Document, you can right click and select Archive Display On, then you see ArchiveLink.
Hope this helps.
Gun.

Similar Messages

  • Name and description of ArchiveLink Document in CRM 5.0

    hi experts,
    Does anyone know how to add a description and change a name of the archivelink document in CRM 5.0? Now I can add new archivelink document, but in field "Name" I have  name of document class(f.e. DOC or JPG) and in field "Description" date when the file was added, field "Notes" is empty.
    And maybe do u know is it possible do make a dokument type with more than one document class(in help I read this is impossible, but maybe there is some way to do this   )?
    Best regards,
    Mateusz

    Using SAP ARCHIVELINK to improve ICWC document search Part 2
    Using SAP ARCHIVELINK to improve ICWC document search Part 2
    function module ARCHIV_CONNECTION_INSERT can also put in a description

  • Badi in crm 5.0

    I am working in crm 5.0 . When I am trying to create a badi it always needs an enhancement spot. I do not have much idea about enhancement spot. Please give me step by step method for creating badi in crm 5.0. I know how to create badi in crm 4

    Hi Sucheta,
    To create BADI in CRM 5.0,
    1. Go to SE 18, give the enhancement spot like following are standard ones:(its all about the purpose of creating  a badi as its one of the enhancemen type so asks fro the spot where to enhance) with its techincal details:
    Table Name       ENH_EDT_LAYOUT
    Field Name       OBJECT1
    Data Element     ENH_ED_OBJ
    The Standard enhancement Spots are:
    /CEM/LRO_CUST_FIELDS           EM/CREI interface: Customer extension fiel
    /CRMS/CMG_PART_DETER           Case Management: BAdI Partner Determinatio
    /CRMS/CMG_REC_ATTR             BAdI: Attributes for Links in Case Record
    /CRMS/GET_PART_PPF_C           BAdI: Partner Determination for Actions
    /LIME/COLLECTOR                BAdI to Fill Collections in LIME
    /LIME/CUST                     BAdI for LIME Customizing
    /LIME/DISPATCHER               BAdI for Distribution of LIME Documents
    /LIME/DOC_CHECK                BAdI for Static Checks of Incoming Documen
    /LIME/MASTER_DATA              BAdI to Read Master Data for LIME
    /LIME/QCI                      LIME QCI Converter
    ARC_ADD_TABLE                  Extending the Structure Definition for Arc
    ARC_CRM_ACT_ON                  BAdI for Archiving Object CRM_ACT_ON
    ARC_CRM_COMP                   BAdI for Archiving Object CRM_COMP
    ARC_CRM_GAG                    For Archiving Object CRM_GAG
    ARC_CRM_GAP                    For Archiving Object CRM_GAP
    ARC_CRM_IPMCON                 BAdI for Archiving Object CRM_IPMCON
    ARC_CRM_IPMPUC                 BAdI for Archiving Object CRM_IPMPUC
    ARC_CRM_IPMSAC                 BAdI for Archiving Object CRM_IPMSAC
    ARC_CRM_LEAD                   BAdI for Archiving Object CRM_LEAD
    ARC_CRM_LEAS                   For Archiving Object CRM_LEAS
    ARC_CRM_OPPT                   BAdI for Archiving Object CRM_OPPT
    ARC_CRM_SACONT                 BAdI for Archiving Object CRM_SACONT
    ARC_CRM_SALDOC                 BAdI for Archiving Object CRM_SALDOC
    ARC_CRM_SDBPBL                 Enhancement Spot for Archiving Object CRM_
    ARC_CRM_SDBSOL                 For Archiving Object CRM_SDBSOL
    ARC_CRM_SERORD                 BAdI for Archiving Object CRM_SERORD
    ARC_CRM_SRCONT                 BAdI for Archiving Object CRM_SRCONT
    ARC_CRM_SRVCON                 BAdI for Archiving Object CRM_SRVCON
    ARC_CRM_SUR                    BAdI for Archiving Object CRM_SUR
    ARC_CRM_UBBPOL                 BAdI for Archiving Object CRM_UBBPOL
    ARC_SCMG                       Enhancements for Case Archiving
    ARC_SRM_GSP                    Enhancements for Record Archiving
    BADI_IBASE_IBARC               IBase: Archiving
    BADI_MI_SYNC_SERVICE           BADI use in the Sync Service "MI_HOST"
    BADI_MSA50                     BAdis created for MSA5.0
    BADI_MSE50                     BAdis created for MSE 5.0
    BADI_NUMBER_GET_NEXT
    BADI_SORTER                    BAdI for sorting BAdI implementations
    BADI_SORTER_TEST               Test for BADI_SORTER_LAYER
    BADI_TEST_SYNCSERVICE          BADI_TEST_SYNCSERVICE
    BADIS_SEU                      BAdIs for SEU
    BDT_XCHNG_CREATE_SET           Influence XCHNG Indicator during Creation
    BIZC_CONFIGURATION             Business Content: Configuration
    BIZC_PRECONFIGURATION          Business Content: Preconfiguration
    BRF                            BRF-Releated BAdI Enhancements
    BUPA_INITIAL_SCREEN
    BUPA_LOCK                      Locking of a Business Partner
    BUPA_MASK_LIST_ITEM            SAP BP: Exit for masking the de-personalized fields of t
    BUPA_OUTBOUND                  Business Partner Data Exchange (Outbound)
    BUPA_PARTNER_CATEGORY          Partner category for non update roles
    BUPA_UOM                       Unit of Measure System for Each Partner/Address
    BUPR_LOCK                      Locking of a Business Partner Relationship
    CACL_MAIN01                    BAdI for Required Field Check
    CGPL_FETCH_RELATIONS           Find the Linked Projects/Tasks Not Yet Loaded
    CLEAR_DB_SAVE                  Clearing Tool: Exits of the (B)API Functions
    COM_MERGE_DATA_SET             Set Type-Specific Implementations
    COM_PRODUCT_BSP_SPOT           Enhancement Spot for PC UI Product Master
    COM_PRODUCT_SE                 Spot for Searching for Product/Ind. Object Using Search
    COM_SE_F4                      SES: F4 Search Help integration
    CRM_ATTR_PERS_CONTRO           Editing Customer Attributes
    CRM_BUPA_TFW_MEMORY            TFW: Buffer Evaluation
    CRM_CMG_ALT_CASE_APP           Alternative Case Applications
    CRM_CMG_BSP_EXT                Case BSP Framework Extension SPOT
    CRM_CMG_CASE_ACCESS            Control for Processes in Case Management ("Internal Even
    CRM_CMG_CASE_BOR_KEYS          To get the external keys of the case linked BOs
    CRM_CMG_NOTES_ACCESS           Control for Processes of Case Notes
    CRM_CONFIG_GRID_PRICE          BAdI for Pricing of Matrix Products
    CRM_CREI                       Entitlement Management Complaints and Returns Processing
    CRM_ESELLING_SEARCH            Enhancements in Internet Sales
    CRM_ESERVICE_SEARCH            Enhancements in E-Service
    CRM_FINANCE_PAYMENT_SUM        Read Payment Schedules for Lease
    CRM_FS_BSP_MODEL_IL_FSBP       Enhancement Spot for Business Partner PC-UI
    CRM_FS_BSP_MODEL_IL_FSQ        Enhancements for FS Quotation
    CRM_IC_EXT_SPOT                IC Web Client Rule Driven Interaction
    CRM_IPM_AVAIL_CALC_GRP         IPM: Calculate Rights Availability (Rights Groups)
    CRM_IPM_AVAIL_ORD_CR_GRP       IPM: Create an Order for Available Rights (Rights Groups
    CRM_ISPS_GAP                   Grantor Managament Enhancements for Application
    CRM_IST_PROD_FILTER            Filtering of Items Determined in Bundle Explosion
    CRM_IST_XI_CONF_MAPFROM_STATUS Define XI Status if XI Distribution is Available at the
    CRM_LEAS_LINK_CREATE           Generates Links Between Financing Items
    CRM_MASTER_AGREEMENT           BAdIs for Outline Agreement Selection
    CRM_MI                         Investigation
    CRM_PRODUCT_ATTRTEXT_SPOT      Product Attribute Text Spot
    CRM_UBB_PREBILLING             Enhancements for UBB Prebilling
    CWB_EXTERNAL
    DD_ENQU_LISTENER               Listener for Enqueues
    EFG_PRINT_PARAMS               Print Parameter
    EFG_SPOOL_OUTPUT               BAdI for Status of Spool Output Requests
    ES_ENHCROSS_REBUILD            Rebuild ENHCROSS
    ES_ENHCROSS_UPDATE             Entry for AFTER-IMPORT method for conversion of ENHCROSS
    ES_SAPLOMCV_BADI               BAdIs for Conversion Exit
    EXTRACT_DATA                   Data selection for IPC
    FKKCORR_EXP_9992               Correspondence: Example - Definition of Corresp. Type 99
    FPB_PERS_GENERAL               Personalization: General Enhancements for Framework
    FSBP_ALIAS_BAPI_EXTENSION      BAdIs for Aliases for Parameter Extension
    FSBP_CREDT_STANDNG_BAPI_EXTEND BAPI Parameter Extensions for Credit Standing Data
    HRTM00_TL_CALCULATION          Talent Management: Enhancement Spot for Calculating Stat
    IS_OIL_ACTIVE                  BAdI for Determining Whether Industry Business Solution
    MDF_FND_CRT                    MDF Fund create
    MDS_CTRL_ACT_CHECK             Additional Checks for Maintenance View MDSV_CTRL_OPT_A
    MDS_CTRL_PPO                   Post-Processing Office Call from the Controller
    MISYNCSERVICE                  Badi for SyncService (MI)
    OA_BADI_LINK                   BADI for ArchiveLink Links
    PLM_AUDIT_SAP_TXT              Audit Management: Platform-Specific Connection for Long
    PLM_AUDIT_TEXT_ID              Definition of Text Types for Each Audi
    RCM_REC_WD
    RCM_RECORD_BADI                RCM: BAdIs for the Record
    RCV_BP_ISOLATION               Business Partner Decoupling
    SCMA_TREE_STATUS
    SFW_SWITCH_CHANGED             Subsequent processing after switch cha
    SOLAR_DOCUMENT_EXITS
    SRM_DOC_ACT_AUTH_C             SP Document -Enhancment spot for activ
    SUSR_CUA_STATUS_SWITCH         Status Change of the CUA Connection
    WD_BADI                        Web Dynpro: BAdI Definitions
    WF_BWP_DYN_COLUMN              Set Dynamic Columns in Inbox
    WF_BWP_OBJ_ATTRIBUTE           Set Default Attributes for Objects in
    WF_BWP_SELECT_FILTER           Filter for Inbox Selection
    YY_ORDER_SAVE                  Testing purpose
    2.You can create also new enhancement spot (your Own)  and create a BADI definition in the second Screen under the tab "Enhancement Spot Element Definition" for both ZZ as well as standard enahcement spots(in change Mode).
    For More Information just go through the Link:
    http://help.sap.com/saphelp_erp2005vp/helpdata/en/da/1c40425c459923e10000000a155106/frameset.htm
    Hope this will help you
    Regards,
    Arjun
    <b>Reward points if it helps</b>

  • Connecting SAP CRM (or R/3) to FileNet

    We are implementing a SAP CRM 5.0 system, and FileNet P8 is to be used as the document repository for SAP CRM.
    We are using the FileNet adaptor, called ACSAP for SAP R/3, which allows us to connect to SAP CRM using the generic ArchiveLink functionality. However, we have found that the generic SAP ArchiveLink functionality is very restricted compared with the standard SAP CRM document management (e.g. versioning, creation from templates etc).
    For example the documents tab on a SAP object, such as the business partner, allows users to import or create documents from new or from a template.  The user will be prompted to enter metadata and this document will have a version associated with it and it can be checked in and checked out by the user.  However we are currently using ArchiveLink which requires the user to click "activate ArchiveLink" to create the ArchiveLink folder.  In order to save a document in ArchiveLink the user must then import or create a document in the ArchiveLink folder.  Unfortunately most of the functionality mentioned previously, such as creation from a template and metadata capture, is not available when creating a document in the ArchiveLink folder.  We have also found that due to the lack of metadata the document name is generically assigned and thus is not useful to the user for identification.
    In addition it is not possible to force users to save their documents into ArchiveLink, therefore they are able to save them outside of the required document repository. We have been unable to find a good solution to this problem.
    So we want to know if it is either possible to:
    - Specify that SAP CRM document management use ArchiveLink as its standard document repository?
    - Connect FileNet/ACSAP directly to SAP CRM document management without using ArchiveLink?
    Has anyone had experience connecting SAP CRM (or SAP R/3) to FileNet, and is able to provide us with some insight?
    Thanks
    Philip

    Question was recreated in DMS group. No answer as yet, but hoping to get answers from SAP soon.

  • Sending attachment form CRM system to ECC system

    Hi friends,
    I have a requirement.
    when ever we create  a sales order in CRM it automatically flows into ECC ... This is perfect sap provides this functinality..
    Now my requiremnt is i need the attachement of this created sales order which is created in CRM should flow auomatically into ECC..
    How can i get the attachment of ths sales order which i created...
    Can any one let me know....
    Regards
    Kumar

    The attachement is a smartform or sapscript and those do not flow accross via middleware.
    We use SAP archive link to write the document to CMS and then some programming is required to point the 2nd system (in your case ECC) to look at this document as we use the FM in the attached blog to write an entry to table TOA01.
    SAP Network Blog: Using SAP ARCHIVELINK to improve ICWC document search Part 2
    /people/glenn.michaels/blog/2008/10/28/using-sap-archivelink-to-improve-icwc-document-search-part-2

  • Trying to set up ArchiveLink

    Hi all,
    we are trying to set up the ArchiveLink for complaints object in our SAP CRM 4.0 system. We have customized ArchiveLink repository, object class and link between object BUS2000120 and object class (PDF document).
    The problem is that we can't see any attachment or archivelink button when creating a complaint. Do we have to activate anything else?
    No screen variants are used.
    Thanks in advance.

    Hi printspat,
    From what I gather, you have a payment method selected for your iTunes Store account which isn’t being accepted when setting up Family Sharing.
    Take a look at the he article linked below provides, which provides a lot of great information about Family Sharing, and make sure you're trying to use a valid payment method for setting up Family Sharing.
    Set up Family Sharing - Apple Support
    One adult in the family—the family organizer—can set up Family Sharing for the group from their iOS device or Mac. When you set up Family Sharing, you'll be asked to confirm that you agree to pay for purchases initiated by the family members you invite and that you have a valid payment method on file. Valid payment methods for setting up Family Sharing include credit cards and debit cards.* 
    Cheers,
    -Jason

  • Filename is not attached with archivelink process

    Hello Experts,
    I installed a SAP Content Server with Max DB and I did the different customizing :
    - creation of  repository
    - creation of documents type
    - link of objects etc..
    Today I can attach documents (CRM opportunities) without problem BUT I have two problems :
    1) IN UI : When I want to attach document, I have to choose in "advance tab" an archivelink repository. By default if I do not this step the attached document will be store in database! Is it possible to do customizing to avoid this manual step (for storing in sap content server)?
    2) As I said, we can attach documents without problem in sap content server and I can read it BUT the name of the document is the extension! So if I attach 3 documents, I will find 3 documents with WORD name! Could you please help me to find a solution to resolve this big issue?
    Thanks a lot for your help
    Regards
    Hocine NAÏ

    For your first query
    1) IN UI : When I want to attach document, I have to choose in "advance tab" an archivelink repository. By default if I do not this step the attached document will be store in database! Is it possible to do customizing to avoid this manual step (for storing in sap content server)?
    You may default the storage category via either of the following approaches:
    - Implement SAP Note 664102 or
    - Via customizing. Go to SPRO > Cross-Application Components > DMS > General Data > Define Profile. Create a profile and based on your scenario,assign it either to a user or to a role. Under Determine definitions for applications you can define a storage-category to a particular workstation application.
    Regards,
    Pradeepkumar Haragoldavar

  • Scanned Document's in CRM from FileNet?

    Hi All,
    We are implementing a SAP CRM 5.0 system, and FileNet P8 is to be used as the document repository for SAP CRM.We are using the FileNet adaptor, called ACSAP for SAP R/3, which allows us to connect to SAP CRM using the generic ArchiveLink functionality
    We are working on interface between SAP CRM 5.0 and FileNet (with ACSAP connector).
    Scenario: 
    The documents will be scanned,afterthat it will be stored in FileNet repository wih corresponding  business object numbers like BP, Service Order and Activities. Ex. BP 100 - Doc. X in FileNet
    We want to store the link in CRM as against corresponding object number i.e, linking to BP
    Display it in CRM application i.e PCUI and as soon as user clicks on link it should open the document if authorised
    =>We had discusion with our team we came up with 2 solution i.e. Use of Archive Link other one Attach an URL link pointing to document in FileNet repository.
    Need the ans for the questions :
    (1) How should we use Archive link concept ? what are config needed for it ?where should we plug in our Custom code ?
    (2) Is there any USER EXIT or BADI getting triggered ?
    Thanks in Advance for help.
    Regards,
    Arjun

    Still question is open.waiting.

  • Need guidance on program changes for SAP Archivelink 4.5

    We are upgrading SAP Archivelink from 3.1 to 4.5. We need to determine what types of changes we need to make to our custom archiving and retrieval programs  so they will work with SAP Archivelink 4.5. based on reading the SAP Archivelink 4.5 implementation guide, it appers the programs will need to be re-written in HTML. Has anyone worked on making changes to archiving programs used with SAP Archiveline 3.1 which will be used with 4.5?
    Please let me know the major types of changes you needed to make, and the level of effort involved.
    Thank you for your assistance.

    Hi Senthil,
    Can you tell me which functional module your worked as "Analyst"?
    Job market: New Dimensional products are picking up largely in US like SAP EWM, SAP EM, SAP TM, SAP CRM Sales and Service, SAP IS-Utilities, SAP IS-Retail etc.
    SAP ECC - SAP SD, MM, FI and HR are always have market in US but competition little bit high if you go for an interview.
    Simple way is to go to top 5 job portals in US, prepare excel sheet which areas have been posted in last 6 to 12 months.  Take analytical report which one seems picked up and largely asked.
    You will come to know at least 3 or 4 modules currently hot in US market.  Also, talk to 5 to 10 outsourcing companies friendly then request them which one they are not getting candidates and which module is very niche in market.  They will you guide to arrive one or two modules in the last.
    Now you have narrow down to choose the option .
    Best of Luck.
    Regards
    GGOPII

  • BADI for changing fields during Creation of BP in CRM

    Hello to everyone,
      I need to find a BADI (or other way) to default several fields during BP creation in CRM (4.0 SR1 SP9). The fields I will like to set are TAX TYPE, TAX NUMBER, TAX CATEGORY, etc.. I have found the BADI BUPA_TAX_UPDATE but i dont see any suitable parameters (structures) to changes these fields. Please advice and thanks in advance.

    Hi
    If you use function BUPA_NUMBERS_GET then your BP number will already be buffered and you can avoid a DB read. It may also be that the BP is not in the DB yet anyway.
    You can only pass one GUID in at a time - loop through IT_CHANGED_INSTANCES into a variable of type BU_PARTNER_GUID and pass that into the function as input parameter IV_PARTNER_GUID.
    Cheers
    Dom

  • Refresh CRM data in R/3 report

    Hi All,
    I've a report in R/3 where i get the Order Status of CRM through a RFC, but when i'm changing the status in CRM through crmd_order, when the report is open in R/3. When i press the refresh button, the status is not changed, it shows the previous status.
    Below is the code, can any1 help me how to go about
      CALL FUNCTION 'CRM0_READ_RFC_DEST'
        EXPORTING
         i_consumer             = 'CRM'
          i_download_type       = '*'
          i_objname             = '*'
      I_BAPICRMDH2          =
      I_REM_LOGSYS          =
        TABLES
          t_crmrfcpar           = t_crmrfcpar
    EXCEPTIONS
      NO_ENTRY_FOUND        = 1
      OTHERS                = 2
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      IF NOT t_crmrfcpar[] IS  INITIAL.
        READ TABLE t_crmrfcpar INDEX 1.
        l_rfcdst = t_crmrfcpar-rfcdest.
      ENDIF.
    Call RFC
    *loop at z_guid into lguid.
    *endloop.
    *refresh ZORDER_STATUS.
    CALL FUNCTION 'ZCRM_HEADER_STATUS'
      DESTINATION l_rfcdst
    IMPORTING
          ORDER_IDRET       =   l_guid
      tables
          ORD_STATUS        = ZORDER_STATUS
    Regards
    Sanju

    any body?

  • Installation of IPC AP 7.0 Jar is getting Failed when uploading in CRM

    Hello Experts,
    we did some changes in the previosly uploded version of IPC AP 7.0  customer user exit Jar file in eclipse.
    While uploading the new modified jar through transaction /SAPCND/UE_DEV in CRM we are getting error :" installation of module <Jar file name > has failed ".
    when we checked the logs in SM 53 we seen the below mentioned error:
    Message: Exception of type com.sap.sql.log.OpenSQLException caught: Exception of type com.sap.sql.sqlparser.CommonSQLParserException: - statement "DELETE FROM "SVMCRT_MOD_TR_T" WHERE "MODULE_NAME" LIKE ? ESCAPE ^ (reason: Modification of ABAP tables is not permit ted)" is not supported
    caught: - statement "DELETE FROM "SVMCRT_MOD_TR_T" WHERE "MODULE_NAME" LIKE ? ESCAPE ^ (reason: Modification of ABAP tables is not permitted)" is not supported
    --> com.sap.sql.log.OpenSQLException: Exception of type com.sap.sql.sqlparser.CommonSQLParserException: - statement "DELETE FROM "SVMCRT_MOD_TR_T" WHERE "MODULE_NAME" LIKE ? ESCAPE '^' (reason: Modification of ABAP tables is n" is not suppor ted
    caught: - statement "DELETE FROM "SVMCRT_MOD_TR_T" WHERE "MODULE_NAME" LIKE ? ESCAPE '^' (reason: Modification of ABAP tables is not permitted)" is not supported
    at com.sap.sql.log.Syslog.createAndLogOpenSQLException(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Object;)Lcom/sap/sql/log/OpenSQLException;(Syslog.java:85)
    at 
    if  required i can post the complete stack trace.
    any inputs/suggestions are most welcome.
    Thanks & regards,
    Siddharth

    Hi Mark,
    Yesterday after Posting the thread we found the same Note ,Issue occured because of  JAVA write access was not enabled on the table ,After enabling it as mentioned in SAP Note, Jar file get successfully uploaded.
    Thanks for your Help also.
    Regards,
    Siddharth

  • Custom message required on log on pop-up in SAP CRM WEB UI

    We required custom message to the log- on popup, right now the message is coming after we give the user ID and password "starting SAP CRM" instead of that
    user required welcome message.., how can achieve this ?
    Please reply as soon as possible.

    Hi Pankaj,
    did you already check the guide in the CRM Wiki:
    https://wiki.sdn.sap.com/wiki/display/CRM/WelcomeUserMessageinWeb+UI
    Hope this answers your question.
    Best Regards,
    Michael

  • 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.

  • Follow up transaction in CRM

    Hi All,
    I want to create an Order in CRM with reference to the Standard Order (which is created in ECC and replicated from ECC to CRM).
    When I open the Transaction (which is created in ECC and replicated from ECC to CRM).
    in CRM and clikc on follow up I am not able to create the follow up transaction.
    The follow up transaction is in display mode.
    Can anybody give me inputs in this regard? where is wrong
    Will award the points for the helpful answer.
    Regards,
    -Rahul.

    Hi Shalini,
    The document is replicated from ECC to CRM without any errors.
    For this document I just want to create follow up transaction in CRM.(I dont want to change the document in CRM)
    The follow up transaction is in display mode. this is my problem.
    Hi Rekha:
    I have done following setting in CRM to create follow up transaction in CRM for the document which is replicated from ECC to CRM.
    1)     Defined the Copying Control for Transaction type
    2)     Defined Copying Control for Item categories
    3)     Defined Item category determination when copying
    Thanks in advance,
    Regards,
    -Rahul.

Maybe you are looking for