All Collections
Integrations
API Documentation
ArcSite + Improveit 360 Integration Setup | Part One: Customer Steps
ArcSite + Improveit 360 Integration Setup | Part One: Customer Steps
Updated over a week ago

In order to better serve users who simultaneously use ArcSite and I360, in contrast to ArcSite OpenAPI, which is a general data API provided by ArcSite for custom functionality development, the data structures provided through OpenAPI are specific to ArcSite and should not be used to handle data logic from third-party platforms outside of ArcSite.

Therefore, for functionalities related to integrating with I360, please use the standard integration method provided by ArcSite specifically for I360 Integration. This standard integration logic for I360 is “Out-of-the-Box”. Projects created through this standard integration method in ArcSite do not require additional development within I360 and automatically possess data synchronization capabilities between ArcSite and I360. Currently, this feature supports two types of data:

  1. Drawing PDFs data, including PDF files of Drawings and Proposal PDFs generated using the user's Proposal Template.

  2. Product Line Items data within Drawings and related Pricing data

This document will provide a detailed explanation of how to standardize the integration between I360 and ArcSite, how to perform standard integration, and how to use data synchronization after completing the standard integration.

How to Create an ArcSite Project Using the Standard Integration Method:

  1. Initialize I360 Settings and Connect I360 Environment in ArcSite:

    Before creating an ArcSite project using the standard integration method, you need to successfully connect the I360 environment to ArcSite. For specific settings and connection methods, please refer to the Setup document provided by I360: I360 Integration Setup Part One - Customer Steps.

  2. Create a Project Using the I360 Standard Integration API:

    In I360, create an ArcSite Project with a binding relationship should use the request API specifically provided by ArcSite for I360 integration. Projects not created through this standard API will not have a binding relationship with I360 and will not be eligible for data synchronization.

    Here are the steps to use the I360 standard integration API to create binding project in ArcSite:

    1. Automatically obtain an Access Token by using the API Key and API Secret generated for the user after successful I360 connection.

      An access token is used to authorize API. For each API call, an access token should be added to the HTTP header of the request like this:

      authorization: access_token 1234567890abcdef

      1. Obtaining an access token

      API key and secret can be generated for each ArcSite company. Go to Settings - Integrations - Apps to get them. The API Key and Secret will be automatically generated when the connection to I360 is successful. You can find them in the App Card of I360.

      <aside> ⚠️ IMPORTANT NOTE: Customers should store the key and secret safely.

      </aside>

      1. Steps to get access token:

        1. Compose a string with the “api key” + “secret” + “current time” .

        2. Generate a signature of the string with the md5 method.

        3. Post to server url “/extapi/get_access_token/” to get the access token.

    • Acquire Access Token API

      Body Params Sample

      { "api_key": "123213123123", "send_time": "2020-09-06 21:55:30.667827", "signature": "ssfsfswedf" }
    • Sample request code (Python)

      from datetime import datetime import requests, hashlib, json api_key = 'ARCSITE_CLOUD_API_KEY' secret = 'ARCSITE_CLOUD_API_SECRET' send_time = str(datetime.now()) sign_str = api_key + secret + str(send_time) h = hashlib.md5() h.update(sign_str) payload = { 'api_key': api_key, 'send_time': send_time, 'signature': h.hexdigest() } r = requests.post('<https://user.arcsiteapp.com/extapi/get_access_token/>', data=json.dumps(payload)) result = r.json() access_token = result['data']['token']
  3. Use the Access Token to request the I360 project creation API and create a related Project.

    This API, specifically provided by ArcSite for I360 integration, accepts basic Project creation data as well as specific I360 external_info data. This data is crucial as it forms the core relationship between the ArcSite Project and I360 Appointment. Please ensure that the correct external_info data is passed when calling this dedicated API in I360. Only projects created through this API will have out-of-the-box data synchronization services; any other method of project creation will not have data synchronization capabilities.

    • Create Project API for I360

      Body Params Sample

      { "name": "Sample Project Name", "owner": "Project_creator_arcsite_account@example.com", "external_info": { "ext_entity_id": "00Q2v00001fXnmiEAC", "ext_entity_type": "i360_Appoinment__c", "ext_entity_attachment_type": "Attachment", "ext_entity_attach_drawing": true, "ext_entity_attach_report": true, "ext_app": "I360" }, "client_profile": { "name": "client name", "job_number": "z56104340", "email": "client@example.com" "phone": "10404201", "second_email": "client_another_email@example.com" "second_phone": "1282122", "country": "US", "state": "IL", "county": "500 S", "city": "Chicago", "street": "Central Ave", "zip_code": "60644", "support_name": "sales rep name", "support_email": "sales_rep@example.com", "support_phone": "53453212", "work_site_address": { "country": "US", "state": "IL", "county": "500 S", "city": "Chicago", "street": "US", "zip_code": "75211", } } }
      • Sample Error Response

        error:

        { "code": 103,                  "message": "The project owner (xxx) is not an Arcsite account." "result": "" }

    Once the submitted data meets the requirements and passes ArcSite's data validation logic, the ArcSite Project binding to the appointment will be created. The project_id of the newly created project will be returned through the API. Users need to record the corresponding ArcSite Project ID to avoid duplicate requests for Project creation in ArcSite for the same Appointment.

    <aside> ⚠️ ArcSite will return error messages in case of Project creation failure. Users need to handle these error messages to ensure that the Project can be created successfully.

    </aside>

    • Sample request Code (Python)

      import requests, json access_token = 'ARCSITE_CLOUD_API_ACCESS_TOKEN' payload = { 'name': 'Sample Project Name', 'owner': 'Project_creator_arcsite_account@example.com', 'external_info': { 'ext_entity_id': '00Q2v00001fXnmiEAC', 'ext_app': 'I360', "ext_entity_type": "i360_Appointment__c", "ext_entity_attachment_type": "Attachment", "ext_entity_attach_drawing": true, "ext_entity_attach_report": true }, 'client_profile': { 'name': 'client name', 'job_number': 'z56104340', 'email': 'client@example.com', 'phone': '10404201', 'country': 'US', 'state': 'IL', 'county': '500 S', 'city': 'Chicago', 'street': 'Central Ave', 'zip_code': '60644', 'support_name': 'sales rep name', 'support_email': 'sales_rep@example.com', 'support_phone': '53453212', 'work_site_address': { 'country': 'US', 'state': 'IL', 'county': '500 S', 'city': 'Chicago', 'street': 'Central Ave', 'zip_code': '75211', } } } r = requests.post('<https://user.arcsiteapp.com/extapi/projects/create/>', headers={'Authorization': 'access_token {0}'.format(access_token)}, data=json.dumps(payload)) print r.json()

3、Validating the Integration

After successfully creating the project, users can verify the integration in ArcSite. First, check if the corresponding ArcSite Project has been successfully created in the Projects list. If you can see the corresponding project, it indicates that the integration creation was successful. To further confirm the binding relationship, you can follow these steps:

  1. Confirm whether the Project created through the API appears in the Project List. If it doesn't appear, it indicates a project creation failure. Please check the error message returned by the creation API and adjust the data before making another request.

  2. In the ArcSite app, within the Project, create a Drawing and synchronize it to the Cloud.

  3. On the ArcSite website, click on the uploaded Drawing.

  4. In the Takeoff & Estimate Tab, check if the 'Send to I360' button appears.

  5. If the 'Send to I360' button appears, it confirms that the binding relationship is successful, and this Project can use the data synchronization function.

This completes the validation process for the integration. If you encounter any issues during the validation process, please review the steps and ensure that the Project was created successfully using the standard integration method.

Data Synchronization Logic After Standard Integration

The data synchronization logic is divided into two parts based on the type of data:

  1. Drawing PDF Data and Proposal PDFs Data

    Synchronization of PDF data is automatic

    Synchronization Timing:

    Whenever there is a change in the user's Drawing information and the changes are synchronized to the cloud, ArcSite automatically initiates a data synchronization task to push the new data to the corresponding I360 Appointment as needed.

    Synchronization Logic:

    The decision to initiate a push to I360 is based on the configuration in the ext_entity_attach_drawing and ext_entity_attach_report fields in the external_info when the project was created. When a push is required, a task is generated to create the latest Drawing PDF data and export all of the user's Proposal Templates using the latest Drawing data, generating corresponding Proposal PDFs. These data files are then automatically pushed to I360 in an overwrite manner (each push will delete the previous attachments and create new ones).

    Verification of Synchronization Results:

    Users can find these files in the Attachments of the Appointment corresponding to the Project in I360.

  2. Products Information within Drawings

    The synchronization of Products data is manual

    Synchronization Timing:

    • In the ArcSite app, whenever an Export Customer Proposal is successful, after viewing the generated PDF, clicking on "Done" in the top left corner will prompt a pop-up asking "Did you sell this project?" If the user selects "Yes," ArcSite will initiate an asynchronous task to push the Products data to I360.

    • On the User Site, users can click "Send to I360" in the Drawing's Takeoff & Estimate Tab to initiate the Products data push to I360.

    Synchronization Logic:

    Based on the Product Line Items, Tax information, Price Adjustment information, and Custom Items used in the Drawing during the push, ArcSite assembles the mapping information for I360 Sales and Sales Items. Then, it pushes the Sales and SalesItems to I360 and sets the i360__Result__c of the Appointment as "Sold".

    Verification of Results:

    Users can find these Sales and Sales Items in the Appointment corresponding to the Project in I360.

Did this answer your question?