---
title: "Glossary"
canonical: "https://help.fieldbuddy.com/space/FBDOCS/3075145874/Glossary"
format: markdown
---
This glossary is a list of words being used in the FieldBuddy 2 project. The goal is to list these words and have similar definitions. 

> Macro (toc)

## **Salesforce**

The cloud platform on which the Back-end is hosted within the Managed package. It is also used for authentication. See [FieldBuddy 2 - High Level Architecture](https://upperdeck.atlassian.net/wiki/spaces/FBSwift/pages/3173843213)

## **Back-end**, also known as **FieldBuddy Service Center**

From the FieldBuddy Mobile perspective the back-end is the Salesforce platform. The Back-end offers different functionality to FieldBuddy Mobile. These functions are offered via Webservices to which FieldBuddy Mobile talks to. These Webservices are accessed via a single Endpoint named the '<span style="color: #ff00ff">**XXXXX**</span>'. A list of offered Webservices can be found [here](https://confluence.tools.intigris.nl/display/FBMB/Webservices+for+Mobile+2.0?src=contextnavpagetreemode).

- [ ] Update this chapter @Volodymyr Antoniuk

## **Front-end**, also known as **FieldBuddy Mobile **or **Application**

The front-end is the entire FieldBuddy Mobile application itself. The application has its own architecture. The current application architecture has not yet been decided. 

## **Framework**

A framework provides standard functionality and a standard way of developing and building the application. The FieldBuddy Mobile application uses a framework and a set of JavaScript libraries. The current framework or set of libraries have not yet been selected. Examples of frameworks: EXTJS, React and Angular. 

## **View**

View in the MVC pattern is a representation of a Model or Models. It can be just a web page or a part of the web page in case of a web application but it can also be a PDF file or any other medium.

## **Model**

Model in the Model-View-Controller pattern refers to specific domain objects, typically data storage, e.g Account model or Work Order model. It's independent from its presentation. The easiest way to understand a Model is by referring to a single row in a table. Logic and associations with other Models are also a part of a Model.

## **Controller**

Controllers in the MVC pattern translates actions e.g. URL into certain output, that is a View, using and updating Models. 

## **ViewModel**

ViewModel in the MVVM pattern provides closer connection between View and Model by data binding, the way data is synchronised between View and Model.

## **Endpoint**

An endpoint is a point to which an application can connect to. It has an address (.e.g [http://localhost:8080/foo/mywebservice)](http://localhost:8080/foo/mywebservice)) and it uses a protocol (e.g. SOAP). An endpoint can offer multiple Webservices.

FieldBuddy Mobile endpoint is: <span style="color: #ff00ff">**XXXXX **</span>and is hosted on the Salesforce platform in the customers organisation. The webservices offered can be found [here](https://confluence.tools.intigris.nl/display/FBMB/Webservices+for+Mobile+2.0?src=contextnavpagetreemode). The protocol that is used is <span style="color: #ff00ff">**XXXXX**</span>. Authentication is Oauth2. Authentication is done via the [Mobile SDK](https://developer.salesforce.com/devcenter/mobile).

The Salesforce platform offers different API's (..)

- [ ] Update this chapter @Volodymyr Antoniuk

## **Webservices**

Part of the FieldBuddy Managed package are several web services that are hosted in the customers organisation. They are accessed via a single endpoint. These are custom APEX Rest services built by us. All services talk JSON and follow same pattern for messages. Read more about authentication here. The FieldBuddy Back-end offers the following services:

- Data webservice
- Metadata webservice
- Custom label webservice
- Update location webservice
- Custom settings webservice
- Static resource webservice
- Attachments webservice

For each of the webservices separate documentation is written. 

- [ ] Update this chapter @Volodymyr Antoniuk

## **API**

An API is a set of clearly defined methods which is used to communicate between various software components. This can be internal or external software. 

> API is typically defined as a set of Hypertext Transfer Protocol (HTTP) request messages, along with a definition of the structure of response messages, which is usually in an Extensible Markup Language (XML) or JavaScript Object Notation (JSON) format. While "web API" historically has been virtually synonymous for web service, the recent trend (so-called Web 2.0) has been moving away from Simple Object Access Protocol (SOAP) based web services and service-oriented architecture (SOA) towards more direct representational state transfer (REST) style web resources and resource-oriented architecture (ROA). Web APIs allow the combination of multiple APIs into new applications known as mashups. In the social media space, web APIs have allowed web communities to facilitate sharing content and data between communities and applications. In this way, content that is created in one place can be dynamically posted and updated in multiple locations on the web.

For FieldBuddy Mobile the Webservices are Web API's. Read more about our webservices here. 

In some cases there's discussion regarding building a 'FieldBuddy API' in the FieldBuddy Mobile application that is offered to custom code or configuration used in Static Resources, Field Actions, Formula fields and Validation Rules. These peaces of code are running in a Sandbox and can only access this FieldBuddy API in order to communicate with the FieldBuddy Mobile Application. This API should be versioned and backwards compatible in order to prevent upgrade issues. 

## **Unmanaged package**

The unmanaged package is set of components. Its different from a managed package. These components ca be modified in a customer's salesforce environment org. Which is a good and a bad thing. Most of our unmanaged components are technical debt. Our unmanaged package is required to have FieldBuddy Mobile 1.X running. Find it on GIT [here](https://bitbucket.org/intigris/trialforce_data). 

## **Managed package**

A managed package is a set of Salesforce components packed together into a single package. Read more about this here. At Intigris we have developed two managed packages: FieldBuddy and FieldBuddy Connect. These packages can be installed in customers organisations and offered via the Salesforce Appexchange. 

The managed package contains all FieldBuddy's back-end functionality. All classes, objects, fields are part of the managed package.

Well, almost all. :warning: Unfortunately we have some technical debt. Some components were developed unmanaged and were supposed to be moved to the managed package but due the impact while upgrading never got moved. Or got moved but never used by FieldBuddy Mobile 1.X. 

Find the managed package on [GIT](https://bitbucket.org/intigris/fb/src).

## **Briefcase**

The briefcase is a feature in the Salesforce back-end built by us. Do not mix it up with the standard Salesforce briefcase functionality. The briefcase is a collection of data ~~and metadata~~ that is offered to FieldBuddy Mobile in the Data ~~and Metadata webservice~~. Its a sub-set of data ~~and meta-data~~. The briefcase can be configured in the Back-end. This makes sure that the FieldBuddy Mobile user only gets what he needs to do his job.

The briefcase filters out a part of Metadata that is offered to FieldBuddy Mobile. If objects are not part of the Briefcase then they will not be offered to FieldBuddy Mobile.

## **Briefcase definition**

Briefcase definition is a JSON string, that describes structure of data to be returned in single briefcase. For example, [BriefCase JSON examples](https://upperdeck.atlassian.net/wiki/spaces/FBMB/pages/3052339269)

## **Metadata**

Metadata is "data [information] that provides information about other data". Metadata is offered to FieldBuddy Mobile via the Metadata webservice.

The Metadata consits out of multiple components:

1. The datamodel (fields and objects)
2. The Mobile Configuration which consists out of screens, ui elemenents, validation rules etc.

The data is a description of the datamodel in Salesforce filtered by the Briefcase. Its not the complete datamodel, but a sub-set. Salesforce offers most of their components via the metadata API. Workflows, objects, fields, classes, almost everything that you can build in Salesforce can be accessed, downloaded, modified and deployed via the [Metadata API](https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/).

Example:

<details>
<summary>Expand</summary>

```xml
<?xml version="1.0" encoding="UTF-8"?>
<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
    <deploymentStatus>Deployed</deploymentStatus>
    <description>test object with one field for eclipse ide testing</description>
    <fields>
        <fullName>Comments__c</fullName>
        <description>add your comments about this object here</description>
        <inlineHelpText>This field contains comments made about this object</inlineHelpText>
        <label>Comments</label>
        <length>32000</length>
        <type>LongTextArea</type>
        <visibleLines>30</visibleLines>
    </fields>
    <label>MyFirstObject</label>
    <nameField>
        <label>MyFirstObject Name</label>
        <type>Text</type>
    </nameField>
    <pluralLabel>MyFirstObjects</pluralLabel>
    <sharingModel>ReadWrite</sharingModel>
</CustomObject>
```
</details>

## **Mobile Configuration**

Mobile Configuration is probably going to be a JSON file stored in a Static Resource which is versioned. It is the data that sent to FieldBuddy Mobile so it can built its UI. It consists out of pages, screens, ui-elements, validation rules etc.

## **~~Metadata data (MetadataData)~~**

~~Metadata is in the FieldBuddy Mobile project the description of the data model (objects and fields). Other components of FieldBuddy Mobile configuration are stored as data in objects in the Back-end (e.g. Mobile page, fieldset and field). From the FieldBuddy Mobile perspective its all metadata in the sense it describes something. But in the Back-end it is sometimes stored as data.~~

## **Data**

The data is for FieldBuddy Mobile for example the Accounts, Installed Products and the Work Orders. The records stored on those objects is the data. The data is transferred to Mobile using the [Data webservice](https://confluence.tools.intigris.nl/display/FBMB/2.0.0+Data+webservice?src=contextnavpagetreemode) and is filtered by the briefcase.