1CRM 8.6 Implementation Guide
1CRM 8.6 Implementation Guide
This Guide has been designed to be helpful both as a printed document, and as an
electronic document accessed on your computer screen. If you are accessing it via
a PDF viewer such as Acrobat Reader or Mac Preview, please notice:
1. The Table of Contents entries are all live hyperlinked to the pages to which
they refer.
2. At the top of each page there is a link back to the start of the Table of
Contents.
3. Be sure to use the search feature of your PDF reader.
Version 8.6, February 2021. This document is subject to change without notice.
Disclaimer
While every effort has been made to ensure the accuracy and completeness of information included in this document, no
guarantee is given, or responsibility taken, by 1CRM Systems Corp. for errors and omissions.
www.1crm.com
1CRM, Personality Pack, CRMSync, info@hand and Lead Guerrilla are trademarks of 1CRM Systems Corp.
1.0 Welcome
Thank you for using the 1CRM Customer Relationship and Business Management (CRBM) System
from 1CRM Systems Corp. 1CRM is designed to help you enable your organization to efficiently
collect and maintain information which is crucial to many aspects of your business. The 1CRM
system:
Most importantly, the system seamlessly blends all of these capabilities into an intuitive and friendly
tabbed interface.
Readers are required to be familiar with the use of a personal computer, and Internet browser
software such as the Google Chrome browser or Mozilla Firefox, as well as having a basic familiarity
with the Linux, macOS or Windows 10 operating systems, and database principles.
It is not intended for conventional users who wish to record and track company activities and
outcomes – those topics are dealt with in the 1CRM User Guide.
• User Guide
• Implementation Guide
• Developer Guide
Even more importantly, a CRM records all new business leads, and keeps track of promising
qualified leads as specific opportunities. These opportunities are recorded with an expected date on
which the business will be closed, the current stage of the sales cycle for this opportunity, and the
percentage likelihood of closing the business currently assigned to this opportunity.
This information, aggregated across the business, provides a clear view of the organization’s sales
pipeline. Visual charts of this information are typically “live-linked”, making it easy to drill down to
view the individual data items which were aggregated to build the chart. Classification of
opportunities by sales person, by lead source, or by expected close date is a simple activity, easily
performed and fantastically informative.
A properly implemented CRM, used by all customer-facing staff, will help you track the sales
performance of your business more closely with less work. It will also help you see the future more
clearly, and plan more effectively.
Just as the customer is the focus that ties together all business activity, your CRM can be the
business tool that ties together all your business information, particularly with custom integration into
other business systems such as your public web site, and the creation of new customer self-service
web sites for building orders, creating and reviewing service cases, and managing their own
information profile.
Another key area in which a CRM can help greatly is in customer communications. After all, a CRM
knows who all your customers are, is connected to the Internet, holds all your key marketing
documents in it, and can typically send and receive email. For sending out customer newsletters on a
monthly or quarterly basis, for selecting only those customers who have purchased specific products,
or for keeping track of any customers who have indicated they do not want to receive marketing
emails, there are few things as useful as a CRM.
These powerful capabilities add up to make big changes at most businesses where they are
adopted:
• Sales are increased by: Using the new marketing communications capabilities.
• Costs are reduced by: Only typing in information once.
• Costs are reduced by: Automatically sharing information with everyone instantly.
• Costs are reduced by: Everyone in the business knowing right away where to find
information, without wasting time looking for it.
• Customers are happier: Dealing with employees who now seem to know more about
them and what’s going on in their account.
• The business is managed better: Sales pipelines are better understood.
• The business is managed better: The most productive lead sources and sales staff are
clearly identified.
• The business is managed better: Any business downturn is visible well before it
represents a commercial risk to the business.
Compensating and adjusting appropriately for these varying requirements will make the difference
between a CRM that suits your needs, and is quickly embraced and adopted, and a CRM that never
feels like a good fit, and quickly falls into disuse and is abandoned.
To genuinely understand why a CRM typically needs some measure of customization to become a
truly effective tool within an organization, we need only examine what it is that a CRM is meant to
accomplish. Some basic CRM functions include:
• Salesforce automation – including lead capture, and the promotion of leads to
Opportunities.
• Opportunity tracking with sales stages and percentage likelihood.
• Sales pipeline tracking, with graphical charts that offer drill-down from the bar or
segment of the chart to the data that underlies it.
• Lead source analysis of sales and opportunities.
• Service case tracking, and other service/support capabilities such as tracking software
bugs, building and maintaining a knowledge base, and managing support contract
renewals.
• Corporate calendar management, for arranging meetings.
• Corporate directory, for contacting fellow employees.
• Interface consolidation, bringing into the CRM environment additional everyday needs in
order to make a company web site that employees can ‘live in’ – including news feeds,
views of financial metrics, integration of external web links and applications, and
integrated web-based email.
• Document management and revision control, for managing and retaining reference
copies of important corporate documents.
To be an effective tool, a CRM must perform all of these functions within an intuitive and easy to use
graphical interface, be available at all times, and be accessible using a wide variety of devices.
Depending on the nature of your business, some additional more advanced capabilities that may be
usefully included within your CRM are:
• Project tracking and management;
• Management of e-marketing campaigns;
• Advanced report generation;
• Definition of sales teams and territories, to manage information sharing, and track sales
performance by territory.
• Integrated views of financial metrics and performance.
• Product catalog management, and tracking sales inventory, corporate assets, and client
products covered by support contracts.
• Creation of client quotations and/or invoices, bills, purchase orders, and other
documents associated with order management.
You need to examine the lists of capabilities above, and decide which of these you will implement in
the CRM for your business – at least for the initial implementation phase.
To help you sort through these topics, and help you make better informed choices, they are explained
here in greater detail with an emphasis on the kinds of choices, customizations, and variations
commonly seen in smaller businesses.
Deciding which of the basic application areas to include in your CRM implementation is the first stage
of identifying the set of customizations your CRM installation will require. Later on we will discuss in
detail how to actually perform many customizations to your 1CRM installation using the Studio
feature available to system administrators, but for now our task is merely to identify the areas of the
application which are most likely to require customization, based on the nature and needs of your
business.
Beyond the basic CRM capabilities are the more advanced functions such as project management,
advanced report generation, e-Marketing, managing a product catalog and asset register, and
generating quotes and invoices. While 1CRM lets you do all these things, for now we will just go over
the initial list of standard capabilities.
This much is true of CRM use at most businesses, but even this basic capability needs modification
at many firms. Some firms focus much more on contacts, as they sell to individuals, while others
focus almost uniquely on accounts, as they sell only to businesses. Many firms go to the extreme of
having a CRM which does not show both accounts and contacts in the navigation system, but
instead has only one or the other. Others choose always to show both at once.
To resolve these differences, clearly it would be useful for the CRM to have the ability to remove
unwanted functions, or types of data, from the user interface. The good news is that nowadays, most
quality CRMs include this capability – and certainly 1CRM does.
In one business model, the company frequently purchases lists of ‘Targets’. These are potential
clients, but very little is really known about them. By operating a variety of different types of
marketing campaigns, such as email or tele-marketing campaigns, these targets are qualified. Does
the contact information for them actually work? Do they have any interest in any product or service
offered by your organization? If so they can be promoted to being a qualified lead. If not, they can be
marked as such, and either discarded, or at least put to one side for now, for potential recycling into
another campaign.
Note that one key consideration for targets is that the quality of data is typically not up to the level
you will want for leads and contacts. Only when the accuracy of target data has been established
and verified should it be considered for inclusion in lead and contact data.
In this business model, the next step is to have relatively more skilled and senior sales staff contact
these qualified leads, and try to convert them to clients. During that process, if things go well there
will develop a need to prepare a quotation for this potential client, and a need to document an
opportunity to make a sale with them. In 1CRM, as in many CRMs, this is the user’s cue to convert
the lead into an account and a contact, and potentially create an opportunity as well. The potential
client is still not a customer yet, but they are close to becoming a customer, and need to have the
account and contact records created for them in order to associate either an opportunity or quote
with them.
In this first business model, a company that generates, data mines, or purchases a lot of sales
targets, you need to distinguish between a target, a lead and a contact/account pair. And only the
contact/account pair can have an opportunity associated with it, or a quote prepared for it.
The second business model is a company that does not have a lot of low-level target information to
deal with. It tends to have new clients enter the sales process as well-qualified leads, perhaps from
selling horizontally across existing accounts, or by receiving a lot of web form data from potential
clients themselves. In a company that operates with this business model, you might well prefer to
dispense altogether with the concept of a target, and deal simply with leads, contacts/accounts and
opportunities.
In this simplified business model, it might be useful to be able to customize the CRM user interface
so as to remove any menus or navigation associated with targets. Most good CRM solutions provide
this capability, as does 1CRM.
Different firms have many different ways of generating leads: from a form on an Internet site,
provided by a partner or a supplier, from advertising, by word of mouth referral, and so on. It is
important to track what your most successful lead sources are, to gain the knowledge of where to
focus your marketing efforts. So creating a list within the CRM software of the lead sources your firm
uses is important. And then with each new lead, it can be characterized as to source by simply
choosing an option from a dropdown box on a screen form.
Populating dropdown boxes with options that are uniquely relevant to your business is a very
common form of CRM customization, and one that is becoming widely supported by mainstream
CRM systems, again including 1CRM.
Another dropdown box whose options often need customizing is the sales stage of an opportunity.
While there are relatively standard industry-accepted terms for the different stages of the sales
process, they can vary quite a bit by the nature of the business involved – its size, its customers, and
the length of the typical sales cycle. The list of stages of the sales cycle you intend to track is another
candidate for a customization you may want to make to your CRM.
Related to the sales stage is the percentage likelihood of a sale, ranging from 0% to 100%. Some
organizations pay little attention to the percentage likelihood, and track opportunities based on sales
stage. Other organizations do just the opposite and rank opportunities by percentage likelihood,
paying little attention to the sales stage. And some track both. You need to decide which is important
to you, and make sure that the list of opportunities and the charts of sales in the pipeline present that
information, and give you the ability to filter and focus on opportunities based on that information.
Automated lead capture into your CRM from a lead form on your public web site, or from leads sent
to you from a supplier or other partner, is a key productivity improvement. If you have a current
supply of sales leads, you should identify how to automate their entry into your CRM. Many CRMs,
such as 1CRM, have a SOAP-based (Simple Object Access Protocol) web service to which external
systems can be linked in order to pass on lead data. If you do not have a current supply of sales
leads, perhaps you should create a lead form on your public web site, and devise a strategy for
driving traffic to your web site.
Once a lead has been qualified as a genuine sales opportunity, it needs to be re-classified as an
account with a related contact and opportunity within the CRM system. Most CRMs (including 1CRM)
have the ability to convert a lead into an account/contact pair, with the option of creating a related
opportunity (and perhaps even the first appointment) at the same time.
Your CRM system will be connected to the Internet, and will have an email system available to it.
Because of this, it has the capability to automatically email salespeople when they are assigned a
new lead or opportunity. Typically your CRM (as does 1CRM) will let you enable or disable this
automated notification system, and you will need to decide if your CRM will use it or not.
The sales pipeline is a key tool for anyone managing a smaller business. Usually a smaller business
has more limited financial resources to buffer them from a downturn in business, making it that much
more important to be able to detect a negative sales trend at the earliest possible moment.
Like most software designed to summarize financial activity for management personnel (known as
Executive Information Systems – EIS, or Decision Support software, or Business Intelligence
software – BI software), most CRMs (including 1CRM) present the sales pipeline in a graphical chart
form, frequently with the ability to highlight some portion of the chart and ‘drill down’ to the source
data that underlies that portion of the chart.
A series of charts which support sales and business management functions is often called a
dashboard, or a digital dashboard – and can be a powerful tool for ensuring that sales are on track in
the coming months, and diagnosing and uncovering shortcomings in the sales process, product
features, pricing, and personnel.
A fundamental choice has to be made when presenting the sales pipeline, and that is whether or not
to discount the opportunities in the pipeline by the percentage likelihood of their closing. Should a
$100,000 opportunity which is 25% likely to close in June be counted as $25,000 in June, or
$100,000? Both practices are very common, and only you can decide which behavior you feel is
correct for your business.
associated with it, to track the case history by item of equipment, and by sub-contract. A
mechanism usually exists to remind account managers when service contracts are
nearing their renewal dates, so that a proposal for the renewal may be prepared and
sent to the customer.
Not every business needs these service and support features. You will need to identify what your
business requires in the service and support area, and decide if the standard features are a good fit
for you, if some need to be hidden as they are not required, or if some extended capabilities need to
be custom-built for you. This area is a frequent source of customization requirements.
Prior to adopting a CRM, many small and medium businesses use Microsoft Outlook, Outlook
Express, and/or Microsoft Exchange to fulfill their corporate calendaring needs. Other popular
solutions include Lotus Notes, Novell GroupWise and many other groupware products. While Outlook
is a reasonable solution for calendaring for an individual, and Exchange helps to link together
calendars across a business, this solution can never help you to position these activities within the
larger CRM context, and automatically generate and track account history.
If all this talk of Outlook and Exchange, Lotus Notes, Outlook Express, etc.. is all foreign to you –
don’t worry. They are simply other ways of addressing needs that your CRM will satisfy nicely, and
satisfy more effectively from the perspective of managing relationships with your customers.
Sometimes a counter argument to using a CRM for calendaring is that for many CRMs the
synchronization options for linking the data in smartphones like iPhone, BlackBerry and Windows
Mobile devices to your CRM data can be severely limited or non-existent. If mobile access to
calendar information is important for your firm, check out your synchronization options before making
the move to CRM-based calendaring.
1CRM has the ability to sync its calendar information with the Google calendar, and (using the
CRMSync feature of 1CRM) with iOS, Android, macOS and Outlook. The iOS and Android sync
capability can get your calendar data onto your mobile device such as iPhone or iPad. 1CRM also
has a Mobile access feature which provides web access to 1CRM specifically formatted for iPhone,
Android and other mobile devices.
Ultimately you must decide if adopting 1CRM for your corporate calendaring requirements is an
approach that suits your organization and its people, or if it is best to stay with the tools people
already know. But there is great value in using the CRM to link appointments to Contacts and
Accounts, creating a high quality history of every customer ‘touch’.
• You don’t want to stuff your CRM with emails. You only want emails to and from clients or
potential clients, not personal emails, and not a lot of the intra-office emails. You only want
emails that are still important and relevant history for each client’s current situation. Too
much data in your CRM may create a situation where useful information is hard to come by.
• It can be very handy to send email from within your CRM. From the screen showing details
for a particular client, it is a real time-saver to just click on Compose Email and send off a
short email, knowing it is automatically addressed properly, and automatically becomes a
part of that client’s history in the CRM.
• CRMs are useful places from which to perform email campaigns as well, as they have all the
right information within them, and you’d like to track as part of each client’s history which
campaigns they have been exposed to, and track the overall effectiveness of each
campaign.
• CRMs are not email servers. You can bog them down if too many people store too many
emails in them. For a typical business with perhaps 50 employees and 1000 clients, you
should aim to keep the number of emails within the CRM below 100,000, and certainly below
200,000. To do this it can be very handy to have some facility in the CRM, as there is in
1CRM, that automatically removes emails when they get to a certain age.
The end result of all these factors is that most commonly, our optimal recommendation for most
businesses up to 250 employees is to adopt the following solution:
1. Users should keep using their current email client for day-to-day email.
2. Link their email client software to their email server using the IMAP protocol.
3. In each user’s email client, create a folder called CRM at the same level as the INBOX (not
indented under the INBOX). Because of how IMAP works, this will create a CRM email folder
on the email server for that user as well.
4. Every time a user has an email they feel should be filed in the CRM, they drop a copy in the
CRM folder within their email client.
5. Through IMAP, this will put that email in the CRM folder for that user on the email server.
6. Create a 1CRM Monitored Mailbox that retrieves email using IMAP from that email account
for that user - not from folder INBOX, but from folder CRM (this is the key to this approach!).
7. Now - every email that is dropped in the CRM folder in any user’s email client will turn up in
the CRM automatically - and will be automatically linked to any related Leads, Contacts or
Accounts, as well as to the User that filed it in the CRM.
8. Users are free to use the CRM to send emails to customers. Records of campaign emails
are only kept within the CRM, but to make sure that other individual emails composed within
the CRM and sent to customers are also filed within the user’s normal email client, the CRM
should be configured to blind copy to the user’s normal email account every individual email
sent out from the CRM. (1CRM has an Auto-Bcc option you can set to do this.)
9. Finally, you can if you wish add another Monitored Mailbox to monitor your Sent items folder.
If you do, check the box marked This Folder Contains Sent Emails, and select Sent as the
Deliver to Folder. This will bring in to 1CRM all the emails you send using another email
client, correctly mark them as Sent emails, and drop them in your Sent folder in 1CRM.
Implemented properly, this solution addresses every one of the initial considerations for an email
solution, and obviates the need for any messy, administratively intensive, and sometimes unreliable
email client plugins.
While Outlook and ThunderBird email client plugins are available to integrate to 1CRM, we still
strongly recommend the above solution be implemented whenever possible. You will need to
examine your organization’s requirements and decide if you are in a position to act on these
recommendations.
For organizations currently using Outlook, there are frequently user concerns about the migration to
the use of a CRM. Outlook can be used for EMail, Calendar, Contact Management, and Task
Management. While Calendar, Contact and Task Management be transferred by all users into the
CRM, or left to be managed with Outlook and synched to the CRM using CRMSync, Email can (and
usually should) remain in Outlook, with the above scenario implemented.
Look in the User Guide for more details on CRMSync. With this feature of 1CRM, users can sync
their Calendar, Contacts, and Tasks bi-directionally with any of iOS, Android, Outlook and macOS.
With CRMSync, users can add, delete or edit contact, task and calendar items on their phones or
tablets - even while offline - and have their CRM data updated automatically to correspond with these
changes.
For organizations currently using Mac computers, users can use the Mail email client and pursue the
same CRM folder strategy as outlined above. The local Mac Calendar can subscribe to the user’s
calendar in 1CRM, which is a handy feature. Mac clients can also use the bulk vCard export feature
to export bulk contact data to a block of vcards - and then import them into the address book
application, which makes all of them available within Mail as email addresses. So that gives the user
contacts, calendar and email integrated between 1CRM and the Mac client software. (Note that
1CRM also supports the use of the Safari web browser found on the Mac.)
But as a company grows, and reaches 25, 50, even 100 employees, it gets harder and harder to
remember everyone’s extension number, their email address, their position, even their face. Even a
smaller business will make good use of a corporate directory if it is spread out across multiple
regional offices.
A corporate directory is a very handy list of everyone’s contact information, and often (like the one in
1CRM) includes a thumbnail image of them for those situations where you just can’t put a name to
the face, or a face to the name.
Some of the activities and features commonly integrated within a CRM (as they are within 1CRM)
just to reduce the need to jump out of the browser interface to perform miscellaneous business tasks
include:
• News feeds (RSS, Atom)
• World Weather
• Stock Market Info
• Integration of external web links and applications
• Integrated web-based email
Clearly, by adding in news, email and commonly used external web sites, the CRM becomes an
environment that your employees can live in, one that they can log in to in the morning, and leave up
all day.
You should give some thought to what news headlines sources to include, and what external web
sites to link into your 1CRM implementation.
Typically your CRM (and 1CRM provides every feature discussed in this section) will let every
employee store documents on the system, and give them a title, a description, a file type, a status
and a revision. Some keywords are also normally entered, to make it easier to find the document.
Unlike your PC, a document repository usually allows the user to update a document with a later
revision, while keeping each previous revision intact in case it is ever required. A document’s status
indicates if it is a Draft document, an old archived document, or an Approved current version.
A web-based document repository provides key benefits for any business, allowing all important
business documents – medical claim forms, HR policies and guidelines, employee handbook,
designs, specifications, sales collateral, contracts, etc.. – to be accessed remotely and downloaded.
A document repository is a vital capability for any business, and you need to decide what sorts of
documents your business needs to store in your CRM, and how to organize them.
Businesses vary widely in their fundamental nature. Who do they sell to, and how? What do they sell
– a product or a service, and how expensive is it? Where is the business itself located, and does it
have multiple locations? Let’s look at some of these distinguishing characteristics of a business, and
see how they affect the CRM needs of a business.
In a firm with a B2B business model, the typical CRM data model of accounts and contacts is usually
a good fit. In extremes, some firms will prefer to remove menu access to contacts, and focus on the
accounts – leaving contacts only as names associated with accounts.
But in a B2C business model, many firms prefer to remove the navigation access to accounts,
leaving a focus on the contacts – the individuals with whom the business does business.
At present 1CRM offers a choice of B2B or B2C business models, with a merged Account & Contact
record being used when B2C is selected. Some businesses would find it useful to support a mixed
B2B and B2C model - where there were clients of both kinds in the one system, but 1CRM does not
support this capability as yet.
If you only sell products, what about the product support, or warranty services? Or does the product
regularly wear out or need service on a predictable time line, giving you an automatic new sales
opportunity – such as a car that needs regular oil changes?
If you have an element of product warranty or support in your business, you will want to be able to
record which customer has what duration of support on what products. If your product needs regular
service, such as a car dealership, you may want to record when would be a good time to contact
each of your customers for service.
In a CRM, products and services are dealt with rather differently. Products are usually held in a
catalog, and are very standardized. When they are sold, they generate a one-time income event.
Services are often sold by the hour, such as an appliance repair technician that might bill 2 hours to
repair a washing machine in your home. You can address this by creating a product in your catalog
which is an hour’s time for technician with a specific set of skills, and invoice the service to the client
as a product, where the quantity would be the number of hours billed. (Note: 1CRM can do things
this way, but can also quote or invoice for services in a different way, not involving products from the
catalog. Sections of a quote or invoice in 1CRM can be characterized as being for products, for
services or for support, and each is handled in its own specific way.)
If your products have significant value, and have some support service sold with them (such as
computer equipment – a PC or a printer) your CRM will need to capture the make and model (ideally
the serial number as well) of the product and link it to the customer record to track entitlement to
contracted support services. Now your CRM will need to understand the concept of an asset in an
asset register, and a service contract as well. (Note: 1CRM calls these assets Supported Products,
and tracks both the asset’s initial cost, as well as the cost for support renewal.)
If your business delivers services to its customers, and those services are delivered over a significant
period of time, your CRM will need to be able to model a sales opportunity which is not a one-time
income event, but rather a stream of income (and potentially costs) over time. Kelly Girl, for example,
delivers a service – the services of temporary office staff. If a Kelly Girl temp were placed on an
assignment for three months from June to August, then the sale should be modeled as an income
stream of $X in June, $Y in July, and $Z in August. And there will be a corresponding cost stream
over the three months, of the actual salary paid by Kelly Girl to the worker involved.
These sorts of sales are often modeled as a project which delivers over time, and if your business
sells these kinds of services, your CRM will need to be able to track these ‘income stream’
opportunities, as well as the regular ‘income event’ opportunities.
with them, then rolling it all up into a sales pipeline that gives you a good feel for how sales will go
over the next couple of months.
But what if your usual sales cycle is less than an hour? And your average transaction value is more
like $20 than $1000?
If you have a business like a CD music store, a video rental store, or a specialty frozen meats store,
then you have lots of smaller transactions, each of them bordering on impulse purchases by the
customer. In this case, your real reason for implementing a CRM is to enhance your recurring
business model. If you typically get these same customers coming back again and again, you will get
great benefit from tracking those customers in your CRM for marketing purposes. Opt-in email
marketing campaigns, membership in a discount club as a loyalty mechanism – these are going to be
some of your key activities. And you will need a CRM that can provide the kind of e-marketing and
loyalty marketing capabilities that will propel your business to success. (Yes, as you might have
expected by now, 1CRM can do all this.)
In this case, you will still keep track of accounts and contacts, but leads and opportunities have much
less significance. And your sales pipeline is also bordering on irrelevant. If yours is this type of
business, recognize that fact, and understand the sorts of changes your CRM will need in order to
help you and your staff focus on what’s important – not what would be important in another sort of
business.
Where are your staff? In the office, or out servicing and selling to customers? Do they work from a
single central office, or are they spread across multiple regional offices?
These are some of the most important variables in your CRM equation. After all, if we are trying to
manage customer relationships, we need to know where those relationships are happening! And that
means knowing where your customers are, and where your staff are.
If your business only generates sales within a single location – your store or office – then clearly your
communications challenges are not as great as a business with a dozen outbound international sales
representatives working out of their homes.
One of the key questions you need to answer is: when you or anyone in your business with a
customer-facing role is in contact with customers, are they sitting at their computer and online? If not,
you may need special CRM facilities so that they can access customer history when they need it, and
so that they can enter updated information as it develops.
Multiple regional offices: If these are white collar offices with primarily inbound staff, there is not
necessarily any issue. Your CRM implementation can be located anywhere in the world, and staff in
all offices can access it via a browser with user name/password access – securely and with good
performance – as long as the office has a fast and reliable connection to the Internet. Smaller
businesses with multiple regional offices are prime candidates for CRM installations, as they are
likely to benefit greatly from the improved communications plus accurate and up-to-date account
information provided by the CRM.
Outbound sales people: No matter how many offices you have, these are the most difficult people
to service well. Some of the ways they can use the CRM, other than via the web browser on their
home or office PC include:
1. Using their laptop on a hotel room’s high speed Internet connection overnight to update the
system from the day’s activities, and look up information in preparation for tomorrow’s calls.
2. Connecting their laptop to the Internet at any time using high speed wireless data services
like 3G services, available from most wireless carriers.
3. Using a smartphone browser for handheld access to a limited subset of the CRM
capabilities.
4. Using a smartphone that has the appointment and contact data within its native applications
wirelessly synchronized with CRM data.
5. Using their laptop with a stand-alone ‘offline’ installation of the CRM, or other offline tools that
can be synchronized with the CRM. When they return to the office, their offline data can be
synchronized to the main CRM, to update any new data from the trip.
With 1CRM you can use the first three scenarios for outbound sales people. Some third-party
applications are in development at present to offer the fourth option. And we expect that in the
medium term, initiatives such as HTML5, and Google Gears, in conjunction with applications such as
Google Apps, will provide solutions like the fifth option.
In a smaller business, employees have broader responsibilities – and these narrow as the
organization grows. The narrower the responsibilities, the greater the need becomes for continuity of
business process, communication, and documentation.
A business with fifty employees also has so many more employee-to-employee information pathways
within it, compared to a business with five employees. Because of this, a CRM has even more to
offer the larger firm.
As well, in a larger firm where not everyone knows everyone else’s business, staff turnover can
create a real risk that sales leads and opportunities created through work paid for by the business,
may walk out the door when an employee leaves. With a CRM there is an element of the ISO
(International Organization for Standardization) principle that the process should transcend the
individual. The employee may leave, but their data lives on in the CRM, and another salesperson will
be hired, and they will have all the account history to work from.
The larger firm also has other issues not likely found in the smaller firm. With a certain scale of
organization, information privacy becomes more important. Sales leads will not be entered into the
system if sales people are concerned that another sales team or person may steal their leads. In a
smaller firm, there is a tendency to have everyone know everything. If a lead is stolen, everyone will
know who it really belonged to. But after a point, an organization becomes more compartmentalized
and impersonal, and protecting leads and opportunity data becomes a real and valid concern.
All of this gives rise to a complex requirement for a Data Access Control model, or a Permissions
Management Infrastructure (PMI) as it is sometimes called. In this sort of system, roles and teams
are defined. The permission to view certain types of data, and to perform certain actions, is assigned
to roles. Users are assigned to zero or more Teams. Then users and teams are assigned to roles,
and the permissions from multiple roles just add to one another to give each employee their effective
aggregate set of permissions.
In a North American sales organization, for example, accounts might be split into geographical areas
such as the West Coast, East Coast, Central USA, and Canada. Most sales people would only see
leads and opportunities within their region, but sales managers could see leads, opportunities, and
sales pipelines for broader geographies.
Lastly, the size of a business determines what a realistic budget figure is for the acquisition and
deployment of a CRM. In a firm of five people, a CRM implementation budget might be $3,000 -
$5,000. In a firm of fifty people, that budget would more likely be $25,000 - $50,000. As well, the
smaller firm is less likely to have any internal technical support capability – and running a CRM
server in the office may be beyond their abilities.
You should give some thought to your firm’s needs for data security and permission management, as
well as setting an implementation budget for the CRM, and deciding if you have the internal capacity
to manage a CRM server.
You will need to decide on the language to be used for data entry into your CRM, choosing one that
you feel most users can understand, even if it is not their first language.
Many languages need to be able to use a set of characters and accents that do not exist in the
English language, so your CRM will need to be able to enter, display and print these different sets of
characters if you need international support. Printing them can be particularly difficult, but 1CRM
includes full UTF-8 support in the PDFs it generates, and so can print any character set in common
use.
You should find out what operating languages you will require for your CRM, and make sure that they
are available. 1CRM has support for many different operating languages via loadable language
packs, although many languages are supported only via a non-validated user-created translation.
Another aspect of international support is the format in which dates are displayed. Your CRM should
store dates in its own internal format, but display them to users in whatever format each user has
selected as their preference. Common formats include 12.23.2006, 23.12.2006, and 2006.12.23.
(Note: 1CRM handles all these formats just fine.)
In addition to dates, different countries have differing formats in which numbers and currency are
presented. The decimal separator in North America is ‘.’ and the thousands separator is ‘,’ - but in
much of Europe (Germany for example) the decimal separator is ‘,’ and the thousands separator is
‘.’. Thus what in North America is $12,234, 678.90 in Germany is 12.345.678,90 €. If your CRM
needs to be able to present numbers and currency values to users in the format they are accustomed
to use in their country, then you will need to set this preference differently for each user of the
system. (1CRM supports the display of multiple international number and currency formats.)
Another difference in convention from country to country is their address format. In some countries
the post code or zip code is right at the end of the address, whereas in other countries it is up around
the street address. 1CRM supports many different international address formats.
Minor cosmetic changes might need the skills of someone who knows how to use computer graphics
software, and some simple HTML (HyperText Markup Language – the code used to describe the
appearance of web pages). If you don’t have those skills in one of your employees, you might need
the services of a local web development and graphical design company. However 1CRM has a
feature that lets you load your own company logo and have it become part of the user interface of the
CRM. As well, 1CRM offers a number of user interface themes with different colour schemes and
screen layouts. However, you might decide you want to build your own theme for your organization,
with a specific layout, and company colours.
Historically, user interface changes were fairly difficult and expensive to perform, but that has all
changed now. With the release by salesforce.com of the Customforce tool for customizing the user
interface of their CRM, the bar was raised to a significant degree in this key area. Salesforce.com
deserves recognition as an innovator in this field of technology, and it has caused something of a
revolution in CRM. Today, most mature CRM products offer this extremely important and useful
capability.
In 1CRM for example, the Studio functions allow system administrators to add new fields to screens,
delete unwanted fields, rename fields, or just move fields around. Dropdown option lists may be
customized, menu options may be renamed or suppressed, and external web sites may be linked in
to new menu items.
You can either learn to use these customization tools, and see if you can make all the minor UI
changes you want that way, or you can hire a firm that specializes in customizing CRMs to do this
work, as well as any major customization work you may need. There is some value in getting all the
customizations done by one supplier, and this particular type of customization may take no more than
a few days to do.
These changes involve tailoring a CRM to manage aspects of a business that are not uniform across
the gamut of small businesses.
Major application changes, and application integration work, will almost always need to be developed
by professional CRM consulting, development and customization firms. These changes involve
tailoring your CRM to manage aspects of your business that are not uniform across the gamut of
small businesses. We recommend you only proceed on this type of customization work when you
have checked off these gating issues:
• The original developer of your CRM, 1CRM Systems Corp., recommends the services of
the customization firm.
• You can see that the firm is not a general web development firm, but specializes in CRM
implementation and customization – you want a partner with more CRM experience and
knowledge than you have, not less.
• Sample work of similar complexity and size from the customization firm has been
examined and approved by you.
• You have written up a requirements document, with rough drawings of what new screens
should look like, including details such as what values each dropdown box should have,
what the names and data types (text, number, date or time) are for each field, what fields
are editable, what fields are shown as columns in the list view, and what fields may be
used to filter the list.
• You have a written quote from the proposed customization firm detailing how they will
implement this requirement, how many days of effort they believe it will take, and quoting
a firm fixed price for the work. As well, the firm should explicitly describe their warranty or
acceptance period for the software developed, and detail an acceptable schedule of
payments which allows you to view work as it progresses, and see and test the final
solution (possibly operating on one of their servers) before final installment payments are
made.
You may wish to make your customizations in a step-wise fashion, to ensure each step is affordable,
and yields measurable real-world benefits, as well as to test the supplier. Take care not to get into a
front-loaded agreement that has you shelling out most of your budget for customization before you
see changes that give you some level of comfort with the supplier.
More recently, in the field of application integration, Salesforce.com has been at it again, and has
introduced the their force.com platform as a service, and its associated web services API. This API
offers a well-documented and open programming interface to link other business applications to the
salesforce.com programs and data hosted by salesforce.com for your business.
This has created a similar disruption in the CRM industry, and many firms have responded in kind.
1CRM, for one, has its own web services APIs - a legacy API based on SOAP and a very modern
API based on REST. These support such handy capabilities as filing leads captured by forms on your
public web site into your 1CRM lead database. The REST API is also used to link the 1CRM
Customer Connection Self-Service Portal to the core CRM.
• Sales management
• Sales general staff
• Administration management
• Administration general staff
This group will be your CRM implementation team.
Successful CRM implementations share another important factor. The implementation team should
manage the project relatively conservatively - set realistic goals, phase the implementation in modest
steps, and view the entire process as one of continual improvement, not as a one-time event. To
quote Clint Oram of SugarCRM “Think big, start small, and move quickly.”
Another important factor in any successful CRM implementation is to review the different user groups
– especially the last five groups listed above – and make sure that in your first implementation each
of these groups perceives some value to them personally in making the effort and commitment to
support the development and to use the system once it is implemented.
For example – sales general staff may be motivated if the system calculates commission reports –
and will be receptive to the argument that the numbers will only be correct if all opportunities and
closed sales are in the system.
neither do you want to simply ask them what you think should be done – what are the goals, and
what are the potential technology solutions?
In order to focus and manage the process of agreeing a specific set of goals, a specific technology
solution, and a particular vendor for customization (if that is within the scope of your first
implementation), it would be advisable for the project manager and the executive sponsor to prepare
an initial briefing note for the first meeting – stating what some of the key perceived shortcomings are
in the current business processes, some of the potential solutions, the make-up of the CRM
implementation team, the proposed timeline, and candidates for the technology to be used.
In terms of the technology candidates, it is best if all solutions on the short list of candidate systems
have demo versions available for members of the team to try out. Clearly, given that you are reading
this document, it seems that 1CRM has been selected for the CRM technology. But it is essential that
all opinions on the subject be heard.
By having the CRM implementation team meet regularly for a few weeks, and do offline investigation
and preparation between meetings, you should quickly get to a set of business goals, as well as an
agreed-upon technology base and specifications for customization. These specifications can be as
simple as printed copies of screen layouts with changes marked on them.
That is where you need to get to before you talk to anyone outside your company.
As a checklist, here is what your planning needs to achieve:
• Executive sponsor identified
• Project manager identified
• Members of the CRM implementation team agreed
• Initial briefing note generated for the first team meeting
• First meeting held
• Responsibilities assigned for investigation and team briefing on key topics – these topics
include:
o Business processes needing improvement
o Suggested improvements
o Identifying the top three goals for the implementation
o Base technology to be used
o Candidates for vendor to perform implementation and customization
o Suggested goals for phase one of the implementation
o Suggested implementation schedule for multiple phases
o Approach to data migration
o Approach to training
o Approach to stepwise introduction within the organization
• Briefings delivered at later meetings, and key decisions made on the topics above
Clearly a larger organization will perform a more comprehensive and slower version of the process
above, and a smaller one will have a more abbreviated and faster process.
• Not having a focus on the current business process, the intended business process
improvements, and the specifications for a system that will effect that change.
• Thinking that implementing a CRM means buying CRM software, installing it on a server,
and then telling the people who need to use it.
• Not making a particular and continuing effort throughout the project to communicate the
benefits specific to each user and stakeholder, to ensure their buy-in.
• Biting off too big an initial project phase, or simply proceeding as if phases are for
sissies. This will load too much expenditure up front, delay implementation, and make
the gap in time between initial good will and early project successes too great to bridge.
• Pursuing too rigid a development process. CRM systems are more about people than
they are technology. A process such as Agile Programming (Google will show you a nice
article on the topic by Martin Fowler) is the sort of approach that you should use. In this
approach early prototypes are used to generate feedback, and successive iterations of
the user interface ensure that users feel involved, empowered, and happy. Few business
users can picture every last detail of a system or screen at the outset. And few system
architects know exactly what users want. Get fairly close, then try it out, and make
adjustments. Repeat if necessary!
• Not training your trainer early enough, not giving them enough resources to train all
users thoroughly, and not planning the roll-out to allow for sufficient training time.
• Failing to define what a successful implementation looks like at the beginning of the
project.
• Failing to institute a periodic review of the CRM system, and continuing phases of
development, to further improve business processes and user satisfaction.
• During development, the team can meet once every two weeks to review progress
against the schedule, and to review any escalated issues.
• Once the first pass of development has been completed, the team should again meet
once each week. Continue this until the entire organization has been deployed.
• Assuming there are no critical issues, have the team meet again a month after
deployment has been completed, to review initial feedback, and make or plan
adjustments.
• Meet again, three months and six months after initial deployment, to perform further
reviews.
Your first task in the process of finding the right partner is to assemble a short list of candidate firms.
Look in the yellow pages under Customer Relationship Management, by all means, to get started.
One of your best sources of good information is your peers who are running their own businesses –
ask your professional colleagues if they have any positive recommendations of firms focused on this
type of work.
Another way to find potential partners is to look on the web site of the CRM software you intend to
implement, and look for their approved development partners. Make sure you find a partner focused
not just on selling or hosting the software, but also on the development of custom enhancements to
the standard software – as you will need some without doubt.
1CRM, for example, on www.1crm.com, has a list of their partners organized by country, with links
back to the homes pages of each of those organizations. Nor should you necessarily rule out a
partner because they are not in your city or country.
A final suggestion for building your short list of candidates to become your CRM development partner
is to simply google the name of the CRM you intend to use, and look at the advertisements on the
right, as well as the links on the left.
Once a member of the team has the short list of candidate firms assembled (between 2 and 4 is the
number you want), then they should bring the list back to the CRM implementation team to be
approved, and to assign the evaluation work.
Do not split up the evaluations – the same one or two people should speak to all candidates firms,
and come up with a report and a recommendation to the team. Emphasis should be placed on
personal compatibility with the internal Project Manager, demonstrated competence and knowledge,
high quality reference implementations, a credible and acceptable proposed project timeline, and
acceptable pricing with perceived high value for the budget.
Before you make your final selection of a partner, the team should likely make a tentative selection,
based on initial specifications and the candidate firms’ estimated development budget. Then you
should work together to jointly develop a final agreement with a very detailed specification, and a
fixed development cost. If you can do that successfully, you have your CRM development partner.
Once you make the final selection of your CRM development partner, you will likely have to make a
substantial initial deposit against the development work to be undertaken and then you are off and
running!
you for installation on your own server hardware. If the latter, you will need a further brief acceptance
test of the application as installed on your own server.
Goals:
• To create awareness in Senior Management, to stimulate questions, and to discover any
shortcomings early, within a controlled group that consists of those individuals most likely
to be supportive of the CRM implementation and its goals.
• To finalize and clarify all system access details with MIS.
Attendees:
• Lead trainer
• Project Manager
• Executive sponsor
• Internal or external network administration and MIS
• Finance management
• Sales management
• Administration management
After the first session, all the attendees should be encouraged to go off and use the system, enter
live data, and take note of any problems, questions or dislikes.
Next Steps:
• A week later, this same group should re-assemble for session 2.
Goals:
• To complete the management training, so that senior management has a good
understanding of the system’s capabilities, and how to operate the system.
• To make management enthusiastic about the system.
• To ensure management’s full support of the broad introduction of the CRM system.
• To allow management to answer questions about the system knowledgeably, and to
correct any misinformation later on from staff.
• To address any management concerns about the system function, clarify any
misunderstandings, and identify any last-minute system shortcomings that must be
addressed prior to general introduction of the system. .
Attendees:
• Same as session 1. MIS optional.
Next Steps:
• Any mandatory fixes must be identified, documented, summarized, agreed by the CRM
implementation team, and then developed and applied.
• If any fixes were required, this same group should re-assemble for session 3 to review
the fixes.
Goals:
• To reinforce the perception that the system will evolve over time, and will genuinely be
guided by the needs of its users
• To ensure management’s full support of the broad introduction of the CRM system.
Attendees:
• Same as session 1
Next Steps:
• Schedule session 4 a week later.
Goals:
• Note: There may be multiple classes scheduled for session 4. No class should have
more than 6 users in it. Separating users by department is a good idea – Sales will have
questions on different topics than Admin.
• To present the CRM system capabilities and method of operation in a comprehensive
and logical manner.
• To stimulate class participation and questions.
• To record user feedback and open questions.
• To define initial goals for scope of use. (Departmental management participation is
mandatory for this.)
Attendees:
• Lead trainer
• Project Manager (not all sessions if there are many)
• Sales management
• Sales general staff
• Administration management
• Administration general staff
• All other general staff that will use the system
Next Steps:
• Optional follow-up session 5, two weeks later.
Goals:
• To close off any open questions
• To address any questions which have arisen in the last two weeks
• To re-present training sections where users seem uncertain
• To ensure a positive attitude on behalf of all users
• To record any outstanding concerns or issues
Attendees:
• Lead trainer
• Project Manager
• All staff that wish to participate
Next Steps:
• Presentation of training results to CRM implementation team, including any outstanding
issues identified
Slide 8: CRM Basics 3 – Opportunities & the Sales Pipeline, Home Tab
• Opportunity information content
• Home Tab – My Pipeline, My Top Opportunities
• Dashboard Charts
• My Upcoming Appointments
• My Open Tasks
• 1CRM Cloud (Also known as On Demand): In this situation, you rent use of the 1CRM
application by the month (or year), and by the user. You don’t own the server it is
operating on, nor do you have to take care of it at all. The supplier (often called an
Application Service Provider, or ASP) backs up the server, makes sure it is always
available, and makes sure that adequate bandwidth is available to ensure good
performance. There are many 1CRM sales partners that provide the 1CRM Cloud
Service - if you have trouble finding one, please get in touch with us for a
recommendation.
• Server Collocation: With this option, you buy your own server, or use one you already
own. You load it up with exactly the software image you want, and then take it down to
your local Internet Service Provider (ISP), who hosts it for a monthly charge. Again, the
supplier backs up the server, makes sure it is always available, and makes sure that
adequate bandwidth is available to ensure good performance.
• On Premise (a.k.a. Self-Hosted): This option should be fairly self-explanatory – you buy
your own server or use one you already have, load up the desired software on it, and
then connect it to the Internet connection at your office, making it externally accessible
for use by employees at home or on the road.
• Shared Server: The cheapest and lowest capacity option – you have your 1CRM
instance hosted on a server at an ISP, and that server is also used by the ISP to host
applications and web sites of several more of their customers.
At the time you first set up your own server, or prepare it for delivery to an ISP for collocation, your
expenses will be higher than the Cloud-Hosted option. You have to buy a server, unless you already
have a suitable server candidate available, and you may also need to buy a server operating system
(if you choose to use Windows instead of Linux). You may also have some costs associated with
developing a backup solution. And you need someone with a least a bit of a technical bent working
for you to perform the software installation.
Once you get going, however, the Cloud-Hosted service may prove to be somewhat more expensive
– costing around $30 US per user per month (still low compared to the $100-125 US per user per
month figure common with salesforce.com or NetSuite). Depending on your business, that may seem
a good deal for relieving yourself of the need to buy and maintain a server, or it may not.
The Shared Server approach is the easiest way to get a taste of what it is like to use 1CRM, and is
cheap to run and fairly easy to set up, but has limitations on how much customization you can do,
and the size of organization you can expect to run on it. As well, these installations are typically very
light on disk space, so if you are using Documents a lot, or generating a lot of PDF files, or other
binary attachments to Notes or Emails, this can make this option less viable. As well, these shared
server offerings often have tight limits on bandwidth you may use – which will likely be exceeded
greatly if you are uploading and downloading a lot of Documents and Email attachments. This option
is typically only applicable to businesses with at most 10 employees.
For most businesses with more than 10 employees, as should be clear from the table above, the
choice between the deployment options is a tradeoff of cost vs. complexity and effort.
• Going with a Cloud-Hosted service is easy to do – except for once a month when you
write the check.
• Hosting the system yourself will take some effort to set it up, require some funds for a
server, and take some ongoing effort to make sure the system runs reliably and your
data is safe and secure. But it is the cheapest option by far – at least in terms of direct
costs.
• Somewhere in between is the collocation option, which takes a little effort to set up, none
or very little to manage month to month, all at a price somewhere between the Cloud-
Hosted and On Premise models.
One important point to note: When you go with a Cloud-Hosted service, there is usually less
accommodation for substantial customizations to the CRM software to suit your business. The
hosted application tends to be very standardized – that is how the ISP/ASP controls costs of
managing multiple servers for multiple clients. In the collocation option, you get to load the software
on your own server, and then deliver it to the ISP – so a fully customized software image is no
problem. It is also usually easy to update later on, without removing it from the ISP. In the On
Premise model, of course, your solution can be as customized as you like, and it may also be easier
to link the CRM server to your other business systems (accounts, intranet, customer portal) which
may reside securely behind your company’s firewall.
How to choose between Windows Server and LInux? The choice often comes down to spending
more to get the familiar Microsoft user interface, or paying less, and dealing with the potentially less
familiar Linux user interface.
Performance is also an issue, as a given server will typically run 1CRM 10-15% slower under
Windows than if it were running under Linux. Adding extra memory can reduce this gap.
Additionally, you may well already have servers deployed in your network, and trained network
administrators and company standards, which between them may well dictate your choice.
Or, if you have no network administrator on staff, you will need someone local at the very least to be
on call in case of emergencies, perhaps to come in and set things up for you in the beginning, and
possibly to perform backups each week. There are many independent network and server support
people who make their living working as the outsourced computer support technician for perhaps ten
small businesses.
Working with one of these people might cost you $5,000 - $10,000 per year, and depending on your
circumstances, could well be right for you. Or is the $30 per user per month at the Cloud-Hosted
supplier starting to look better now!
Microsoft’s .NET platform has very good cross-language development capabilities, but is tied to
Microsoft-proprietary products, including their operating system and other server products.
Sun’s Java platform is widely popular across many vendors (Sun, HP, IBM, etc..) as a scalable
platform that is largely hardware and Operating System independent, and non-proprietary.
While the Java platform has world-class scalability, and an excellent security model, it has been
recognized that it is not the most cost-effective environment for developing reliable business
applications with expensive development resources.
Accordingly, while .NET will likely remain the platform of choice for Microsoft’s partners and users
who don’t mind being irretrievably tied to Microsoft products, there has been a big need in the market
for a non-proprietary platform with Open Source components and the practical ability to build
applications in a particularly cost-effective manner. That platform is the LAMP stack.
LAMP stands for Linux, Apache, MySQL, and PHP (plus Perl and Python – two other popular Open
Source scripting languages we will not discuss further here). The LAMP stack looks like this:
As you can see, Linux and Apache are the base on which LAMP is built. And what a solid base –
between them they are the two most successful Open Source initiatives in the world. The Apache
Open Source web server is the world’s number one web server - by a mile. The November 2012
Netcraft Web Server survey reports that 57% of all web servers are Apache web servers, and 17%
use Microsoft Internet Information Server.
Linux is the world’s number two server operating system, behind Windows Server, and is the fastest
growing server operating system in the world.
The PHP and MySQL components of the LAMP stack do pretty well too. PHP is used on over 20
million web sites, and Security Space reports that nearly 40% of all Apache servers run PHP. PHP
(PHP: Hypertext Preprocessor) was originally developed as a general purpose scripting language
particularly suited for web development by Rasmus Lerdorf. Version 1.0 was known as the Personal
Home Page (PHP) tool set, and was released Jun 8, 1995.
My SQL, the world’s most popular Open Source database, is also 17 years old, and has over 6
million server installations. Developed and released into Open Source by MySQL AB of Sweden, it is
known for speed, scalability, and reliability. It would be fair to say it is also known as a less
sophisticated database, lacking some advanced capabilities such as stored procedures and triggers
– features that were finally delivered in the 5.0 release of MySQL. If MySQL is a Ford Mustang –
simple, fast, and reliable, then Oracle, the leading commercial database, would have to be
characterized as a Bentley – smooth, slick, fast, and expensive. We know which one suits the
smaller business. And with 6 million servers using it already, it is a pretty safe bet!
Note that there are plenty of low-end servers from the likes of HP and Dell that use non-parity
memory, SATA disk drives, and a single power supply. They have pretty much the same hardware
technology as a PC, but run a server operating system. They can be used for 1CRM installations up
to say 20 users fairly effectively. For larger installations than that our recommendation is for a higher
capacity, and better level of reliability, using what one might call a full server. Most of the differences
in a full server are there to make the server more reliable than a PC, and to make it better suited to
handling the needs of many users at once.
ECC memory for example, has the ability to detect and correct the most common forms of errors that
could be made by semi-conductor memory when it starts to fail. Similarly, a server power supply
often has two actual power supplies connected in a redundant manner, so that when one fails, it is
reported, but the system carries on running on the one power supply that remains, giving you a
chance to buy a replacement power supply, and schedule down time to replace it.
System memory size is often one of the biggest differences between a server and a PC. Most PC
users (other than those doing graphics design and other demanding tasks) work happily with 2-8 GB
of memory in their PC. By contrast, few servers use less than 4 GB of memory, and many use 6-32
GB – or more. With more memory, the work being done for many users can stay in memory beside
each other as it is performed, rather than being sent temporarily out to the hard disk if memory gets
too full. As system memory is at least 100 times faster than the hard disk, anything that involves the
hard disk will slow down the system substantially.
Servers are used for many tasks. A network may have a specific server to act as a database server,
for example. That type of server would be optimized for fast and reliable disk storage and high
memory capacity. Another server might be an application server – one on which applications are run,
with the results being communicated to the users on the PCs using those applications. An application
server is typically optimized with lots of memory and CPU power – to get through all that application
processing quickly. An example of an application server is an 1CRM server – the 1CRM application is
actually running on the server – and multiple user PCs are just running web browsers that display
web pages which communicate to the users what is going on in their particular session.
For a business with up to 20 users, we have configured below a powerful low-end 1CRM server, to
be used as a combined database and application server.
As you can see, a very powerful application server need not be expensive.
Note: For interest’s sake, these servers are what we historically used at 1CRM Systems Corp.
for our trial and demo servers - they hold several hundred trial sites each - although of course
trial sites are often only lightly used.
For a business with perhaps 20-50 users, a reasonable configuration might be along these lines:
• 1TB GB of SCSI storage, mirrored or some other RAID configuration
• 16 GB of ECC memory (depending on the operating system used)
• Dual Quad Core Xeon processors
• A single Gig-Ethernet connection to the network
• An Uninterruptible Power Supply (UPS)
For a business with 100 users, the recommended recommendation would move up to something
more like:
• 2 TB of SCSI storage, in a RAID configuration
• 32 GB of ECC memory
• Dual modern Quad Core Xeon processors
• A dual Gig-Ethernet connection to the network
• An Uninterruptible Power Supply (UPS)
Most ISPs and ASPs use fairly low-end hardware for their servers, and seem to charge a lot of
money for them each month when offered as dedicated servers. If you use 1CRM as a Cloud-Hosted
service, you will in all likelihood not have a whole server dedicated to running 1CRM for your
business. Instead, your ISP/ASP will likely be using a shared server facility – a controlled portion of
the resources of a physical server – to support your business’s CRM.
If you are planning to use your CRM to house a lot of shared documents for your business, you
should check with your Cloud-Hosted service provider what your disk space and bandwidth
limitations are – they are often surprisingly low.
Clearly if you collocate your own server at an ISP, or use it at your own premises, you will likely have
a better hardware platform to run on, and it will offer some room for expansion, compared to the
Cloud-Hosted situation. But collocation can be expensive too, and managing your own server is not
for everyone.
In the end, you will need to make a choice balancing several factors – your access to technical staff
(and the cost of it), how difficult it is for you to invest in a server, what price you can find for a Cloud-
Hosted service of good quality, and how much customization you feel your installation of the software
will require.
If you are installing the 1CRM server at your own offices, you will typically position the server behind
your firewall to the outside world, but allow external access by opening ports on the firewall to the
web server on your 1CRM server. From a security point of view, it would be even better to actually
have separate web and application servers, with security rules between them – but likely not a
necessary security measure for smaller firms.
If your 1CRM server will be collocated at an ISP, a similar networking configuration should be used –
talk to your ISP.
If you are using a Cloud-Hosted service – none of this will be vital to you, except insofar as you may
wish to ask your ASP what security architecture is in place, and how they handle the web server and
application server issues.
In either case, to protect your data as it travels over the Internet, you may well want to implement a
Virtual Private Network (VPN) solution, or certificate-based Secure Sockets Layer (SSL) encryption.
Now we see that employees will also complain (at least the ones who access your CRM while away
from the office) if the office’s Internet connection has a slow uplink speed (traffic moving in the
direction of the Outbound traffic in the diagram above).
So the conclusion we must draw is that if you intend to house your CRM server at the office, you
need to make sure the office now has not just a good download speed on its Internet connection, but
a good upload speed as well.
What is a good speed? Well, that depends on how much each employee has to use the Internet to
do their work. In a software development company, the Internet bandwidth required per employee will
likely be much greater than in a T-shirt printing firm. For the average (if there is such a thing) white
collar business, for each 25 people in the company, you will need something like five megabits of
download bandwidth. With a CRM server at the office being accessed by remote employees during
the day, or at night from home, you will likely need at least five megabits of upload or uplink speed for
each 25 people in the company.
It is usually best to avoid an uplink speed lower than 1 Megabits for remote access to 1CRM. It will
still work on slower connections of course, but you may find the response becomes sluggish – and
there’s really no room for that in business these days!
Many Internet connections tend to be faster in the download direction than the upload direction.
These connections are referred to as ‘Asymmetric’. If your CRM server is located at your offices, your
business becomes a candidate to have an Internet connection that is closer to being Symmetric, or
balanced, in its upload and download speeds.
When you use a Cloud-Hosted service for your CRM, or have your server collocated at an ISP, your
server benefits from the fact that the Internet connection at the provider’s location is much faster in
both directions than it is at your offices, and as well it is more reliable. Typically, an ISP or ASP has
multiple suppliers of its Internet connection ‘pipes’, so that if the connection provided by one supplier
fails, those from the other suppliers will automatically carry on moving traffic.
This redundancy of Internet connection is something that is hard to afford for the smallest businesses
– and so you may have to accept that your level of service (reliability) for a self-hosted CRM won’t be
quite as good as if your server were professionally hosted and managed. Check out pricing for
redundant connections in your area, and as well, check out the level of guaranteed availability
offered by the ISPs in your area, and their reputations amongst your business associates.
Lastly, if you choose the Cloud-Hosted or collocated server options, be sure to check out how much
bandwidth you are allowed to consume (per user, or for your whole server) before bandwidth
surcharges come into effect. With many suppliers the standard bandwidth allowance is very small, to
help generate another couple of hundred dollars of income for the supplier each month from charges
for excessive bandwidth use.
From product catalogs, quotes and invoices to service contract management, and from email
marketing campaigns to project management and resource tracking, extending your CRM into a
customer centric business management system is gaining increasing recognition as an appropriate
and effective technique for small and medium businesses.
At its heart, a CRM system is about consistently excellent communication – both inside and outside
the business. As an exercise in understanding the flow of information in your business, map out on a
sheet of paper the various departments within your organization, and overlay on it the typical paths
that information takes between those departments as customer transactions are processed. Think
about pre-sales requests for information, quotations, order processing, customer queries about
shipments they are waiting for, shipping, and after sales support and service.
For each transaction think about where new information originates in your organization, and examine
which other parts of the business need that information to perform their jobs properly. Jot down notes
on what items of information in your industry are key to delivering an outstanding customer
experience to your customers. Note where these items of information enter your business or are
created, and where they move within the business.
Now examine your CRM system, and check the various relevant functions to see if they keep track of
all the information that you need to deliver excellence to your customers, and if they model all the
transactions that are most important for your customers. Where they do not, you are identifying gaps
in your CRM implementation. These gaps should be addressed by extending your CRM to cover
them, managing the information for those transactions, and ensuring that all appropriate employees
always have access to the latest information about those transactions.
Now of course, every good CRM implementation has multiple phases, and many of these gaps will
not need to be addressed in your initial phase of rolling out the CRM. But just as all good IT systems
should be subject to ongoing periodic reviews for the purposes of continual improvement, you should
track your CRM to-do list, and continue to make your CRM system as useful and comprehensive, yet
practical and cost-effective, as you possibly can.
Now let’s get on with installing your CRM so you can put what you have learned in this chapter into
action. Chapter 3 contains instructions on installing 1CRM on a CentOS 7 Linux server, and Chapter
4 has the instructions for installing on Windows 10. Chapter 5 covers installation on an macOS
server, and Chapter 6 deals with installation in the Microsoft Azure Cloud. After that, Chapter 7 has
the details of the administration tools available to you for the initial setup and ongoing management
of your 1CRM system. Chapter 8 offers information on importing data into your CRM, and exporting it
back out, while Chapter 9 deals with some frequently asked questions.
Particularly critical are the php.ini configuration instructions in section 3.5, and the chart of
compatible software revisions at the end of this chapter. This chapter, like the three that follow, is
written to document how to install 1CRM on a specific reference platform.
If you ever have a need to call for support, our technicians will make sure that your server
environment complies with the one documented here (or one of the other reference platforms),
before any incident can proceed further.
If you have chosen to install 1CRM on a Linux version other than CentOS 7.6, that’s fine, but if you
call for support and your environment or its configuration (rather than the 1CRM software itself) is
found to be the cause of your issue, the support incident will unfortunately be billable.
Our support staff can’t be expert at all variations of every environment, and neither can we document
how to install 1CRM on every conceivable environment that might support it. So we chose a few that
we felt would be popular ones.
An ISO image of a CentOS 7.6 (64-bit) installation DVD may be downloaded (although it is 4.59 GB,
so be ready to wait a while) from http://centos.org.
Once downloaded, you must use an ISO image burning utility capable of burning a bootable installer
image onto a DVD or USB key from an ISO image. We used etcher to make a USB key installer for
CentOS. And we tested this process on an Intel NUC7i5BNH.
3. Use Applications – System Tools – Software Update to make sure your system has all the
most recent patches. Once you click on Install Updates, the update will take a few minutes.
4. Use Applications – System Tools – Software to load additional software components.
Choose Web Services on the left side menu, then scroll down the list.
• Web Server - Apache HTTP Server (2.4.6-89)
Choose Databases on the left side menu, then scroll down the list.
• MariaDB Database Server - The MariaDB server and related files
(mariadb-server-1:5.5.60)
Click Apply Changes to install these components.
5. Close the Software window, and use Applications – Favorites – Terminal to enter the
following commands:
• sudo su (to gain admin privileges - you’ll need to provide your password)
• rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
• yum -y install epel-release
• systemctl start mariadb.service (to run the mariadb mysql service)
• systemctl enable mariadb.service (to run the mariadb mysql service at every
boot)
• mysqladmin -u root password yourpassword (use your own password here)
• systemctl start httpd.service (to run the apache service)
• systemctl enable httpd.service (to run the apache service at every boot)
• rpm -Uvh http://rpms.remirepo.net/enterprise/remi-release-7.rpm (to access the
Remi CentOS repository, as we begin to install PHP 7.3)
Note: As of release 8.6 1CRM now requires PHP 7.x as a minimum, and supports up
to PHP 7.3. CentOS installed PHP 5.4 by default, and now we are updating it to 7.3.
• yum -y install yum-utils (Install yum-utils as we need the yum-config-manager
utility)
• yum-config-manager --enable remi-php73 (we are installing php 7.3)
• yum -y install php php-opcache (performs the actual php install)
• yum install -y php-mysqlnd php-pdo php-gd php-pear php-mbstring php-
soap php-xml php-imap php-zip php-apcu
Note: This command loads a number of PHP extension modules. You may be asked
to confirm the action to be taken by this command once it resolves dependencies.
• systemctl restart httpd.service (to restart the web server with php and these new
extensions)
6. Now use Applications – Favorites – Firefox Web Browser to browse the the URL localhost.
You should see the Apache Test Page. If you do, you know Apache is now running properly.
Set memory_limit
1. Search for memory_limit, and set it to 200M. This will allow 1CRM to consume up to 200M of
memory. Without this setting, complex actions may run out of memory.
Set display_errors
1. Search for display_errors, and make sure it is set to Off. This will suppress the display of
warning messages which will otherwise disrupt the display.
Set mysql.default_socket
1. Search for mysql.default_socket. Make sure it is set to an empty value so that it uses the
MySQL defaults.
Restart Apache
1. Use Applications – Favorites – Terminal to enter the following commands, to restart Apache:
• su (to gain admin privileges - you’ll need to provide the root password)
• systemctl restart httpd.service (to restart the apache service)
2. Now open a Terminal window (Applications – Favorites – Terminal), and enter the command:
This unzips the 1crm.zip file in the correct folder on the Virtual Machine.
6. Now use Applications – Favorites – Firefox to browse to the URL localhost. You should see
the 1CRM Installer Welcome screen, as shown in the figure below. You’re getting close to the
finish line!
Just click on the Start button. The 1CRM license acceptance screen is the next one you will see:
7. Install Step 1: License Acceptance - Click on the I Accept checkbox, and then on the Next
button.
8. Install Step 2: System Check - Now you see the 1CRM system check screen. The 1CRM
installer checks several aspects of the installation environment, and reports their status
to you on this screen. You will see a series of green (and perhaps a few red or blue)
status messages down the right hand side of the screen.
If they are all green, click on the Next button to proceed to the next step of the 1CRM
installation process.
If any are red, you should act on any diagnostic details provided beside the highlighted issue,
and go back to your server setup to see where things went wrong.
9. Install Step 3: Database Configuration (see the figure below) - Set Host Name to localhost,
Database Name to onecrm, Database User Name to onecrm, and Database Password to
whatever you like (crm86dbpsw is one suggestion).
Click on Populate database with Demo Data if you would like some test data created for you.
Set the Privileged Database User Name to root, and the Privileged Database User Password
to the root password for MySQL (as defined in the section Configure MySQL).
10. Install Step 4: Site Configuration – As shown in the figure below, enter the new password you
wish for the 1CRM Admin user, and confirm it. You can set the URL as you like - but make
sure it is an absolute URL not a relative one, and that is is a URL that is usable
externally, not a LAN IP address or similar. This is a critical point - if you do not do this
correctly, you will have many severe issues down the line with your installation.
Note: Make certain the URL of the 1CRM Instance field is set to an absolute URL that
is addressable externally! Also make sure that the URL can be resolved locally on the
server running 1CRM. This is of critical importance.
Note: The checkbox Save Installer Configuration is used at Step 4 of the installation process to tell
the installer that you want to make an 1CRM installation template from this installation session. Later
on, at Step 7 (if installing without demo data) or Step 9 (with demo data) you will see a link to
download the installer_config.zip file.
11. Install Step 5: Locale Settings – As shown in the figure below, you can upload language
packs at this time. You can also set your installation’s default localization values for date,
time, currency and character sets, etc.. Once you have done that, then click on the Next
button to proceed to Install Step 6.
Note: Selecting your default currency on this screen is a critical item. You cannot change it after
the system is installed and running. This is your only chance to set a default currency other than
US$.
12. Install Step 6: Confirm Settings - This screen (see figure below) simply shows you all the
settings you have provided for the 1CRM installation. If they look correct, click on the
Install button to proceed with the actual 1CRM installation.
13. Install Step 7: Perform Setup - You should see a screen like the first figure below. Note it will
take a minute or two to complete – so be patient! The progress bar goes from left to right for
each step of the process. When a step is complete, it gets a check mark, and the next step
begins. By the time the setup is complete (as shown in the second figure below) your 1CRM
installation is ready to go - unless you chose to have demo data installed. If demo data is
being installed, Install Steps 8 and 9 will be performed, as shown below. If not, just skip down
to paragraph 15 below, which begins with “Congratulations - you’re done.”.
14. Install Step 8: Demo Data Configuration - On this screen you select what demo data you
would like to have installed. At the top of the screen is a convenient checkbox to select or de-
select all of the items. Notice that some items will automatically select other items, as there
are dependencies between various items of data.
15. Install Step 9: Demo Data Installation - This screen is a bit like Install Step 7, in that a series
of progress indicator bars are generated, each leaving behind it a step of the demo data
installation with a check mark once it is completed. Eventually your screen should resemble
the one below, once all the demo data selected has been added to your database.
Note: The checkbox Save Installer Configuration is used at Step 4 of the installation process to tell
the installer that you want to make a 1CRM installation template from this installation session. Later
on, at Step 7 (if installing without demo data) or Step 9 (with demo data) you will see a link to
download the installer_config.zip file (see Figure above). Once you have downloaded the file, it may
be used as part of the one-step installer process - typically by system admins making trial sites or
sandboxes for testing.
16. Congratulations – you’re done. Just click on the Finish button to login to 1CRM for the first
time.
17. Log in, using the user name admin, and the admin password you provided in step 9 (Install
Step 4) above.
18. The first time you login, the system will take you automatically to License & Support on the
Admin menu screen. (Note: Before you get to the license screen, you may first see a System
Bulletin for the highlights of this release, and be asked to set your time zone.)
19. Enter your license key in the Quick Update box, and click on the Update button. You will see
a screen like the one below, confirming that the license key has been applied successfully. If
you are installing the 1CRM Startup Edition, instead of entering a license key just click on the
Request License button, enter your license and registration information into the popup form
that appears, and then click on the Send Request button.
(Note: Your server must be connected to the Internet as you perform this step.)
20. Click on Return to List, and you should see your license information displayed somewhat like
this:
Web Server
Apache 2.4.6 Supports any version that runs PHP
Database
MariaDB: MySQL 5.5.60 MyISAM Tables required
PHP
7.3.7
Zend Server is supported
Browser
Firefox 67 or later
Chrome 61 or later
Safari 12 or later
Figure 24: 1CRM Linux Software Components & Compatibility
Note: As of release 8.6 1CRM requires a PHP version in the range of 7.0 - 7.3.7.
Particularly critical are the php.ini configuration instructions in section 4.3, and the chart of
compatible software revisions at the end of this chapter. This chapter, like the other installation
chapters, is written to document how to install 1CRM on a specific reference platform.
If you ever have a need to call for support, our technicians will make sure that your server
environment complies with the one documented here (or one of the other reference platforms),
before any incident can proceed further.
If you have chosen to install 1CRM on a Windows version other than Windows 10 (such as Windows
Server), that’s fine, but if you call for support and your environment or its configuration (rather than
the 1CRM software itself) is found to be the cause of your issue, the support incident will
unfortunately be billable.
Our support staff can’t be expert at all variations of every environment, and neither can we document
how to install 1CRM on every conceivable environment that might support it. So we chose a few that
we felt would be popular ones.
Note: MS-SQL Server and Internet Information Server (IIS) are not supported, and will not work with
1CRM – Apache is the only web server we support.
On this site, within Downloads, choose WampServer 32 Bits (see Figure 25).
Now you’ll see the dialog shown in Figure 26. From this dialog you should click on the Visual Studio
2012 : VC 11 download link, and download the file:
vcredist_x86.exe
And also follow the link labelled download directly, to download the wampserver zip file:
wampserver3.1.9_x86.exe (yes, the site says 3.0.6 is current, but then serves version 3.1.9)
Once you have downloaded these two files, run the install for Visual Studio 2012. After that has
completed, run the install for WampServer. You should proceed through the following screens:
Once you are running WampServer, you will notice a new icon in the icon tray , and If you click on
the WampServer icon, you will see:
We want to make one change to the WampServer software setup. Click on Stop All Services in the
WampServer menu. The icon should be Red. Then click on PHP in the WampServer menu and you’ll
see the PHP menu slide out to the left as shown below. Click on Version, and choose PHP 7.3.5,
rather than the default 7.2.18.
Next, use the WampServer menu to choose PHP – php.ini, This lets you edit the php.ini file using
Notepad. Make the changes shown below, and perform a File - Save when complete.
Note: The php.ini file will be located at C:\wamp\bin\apache\apache2.4.39\bin\php.ini. When
you install the 1CRM software, the installation screens will also show the location of the php.ini file
they are using.)
Set memory_limit
1. Search for memory_limit, and set it to 200M. This will allow 1CRM to consume up to 200M of
memory. Without this setting, complex actions may run out of memory.
Set display_errors
1. Search for display_errors, and make sure it is set to Off. This will suppress the display of
warning messages which will otherwise disrupt the display.
Set mysql.default_socket
1. Search for mysql.default_socket. Make sure it is set to an empty value so that it uses the
MySQL defaults.
APCU Setup
Search for ; Module Settings ; . Under that block heading add the following lines so that you load the
apcu extension which acts to accelerate php.
[apcu]
extension=php_apcu.dll
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.enable_cli=1
apc.serializer=php
Restart Apache
1. Click on Start All Services in the WampServer menu. The icon in the icon tray should now be
Green. Apache will now be operating using the updated values from your edited php.ini file.
5. Choose Localhost from the WampServer menu system. You should see the 1CRM Installer
Welcome screen, as shown in the figure below. You’re getting close to the finish line!
5. Just click on the Start button. The 1CRM license acceptance screen is the next one you
will see:
6. Install Step 1: License Acceptance - Click on the I Accept checkbox, and then on the Next
button.
7. Install Step 2: System Check - Now you see the 1CRM system check screen. The 1CRM
installer checks several aspects of the installation environment, and reports their status to
you on this screen. You will see a series of green (and perhaps a few red) status messages
down the right hand side of the screen. They need to be all green for the installation to
proceed.
Now click on the Next button to proceed to the next step of the 1CRM installation process.
If they are not all green you should act on any diagnostic details provided beside the
highlighted issue, and go back to your server setup to see where things went wrong.
8. Install Step 3: Database Configuration (see the figure below) - Set Host Name to localhost,
Database Name to onecrm, Database User Name to onecrm, and Database Password to
whatever you like (crm86dbpsw is a suggestion).
Click on Populate database with Demo Data if you would like some test data created for you.
Set the Privileged Database User Name to root, and the Privileged Database User Password
to the root password for MySQL (as defined in the section Configure PHP & MySQL).
9. Install Step 4: Site Configuration – As shown in the figure above, enter the new password
you wish for the 1CRM Admin user, and confirm it. You can set the URL as you like - but
make sure it is an absolute URL not a relative one, and that is is a URL that is usable
externally, not a LAN IP address or similar. This is a critical point - if you do not do this
correctly, you will have many severe issues down the line with your installation.
Note: Make certain the URL of the 1CRM Instance field is set to an absolute URL that
is addressable externally! Also make sure that the URL can be resolved locally on the
server running 1CRM. This is of critical importance.
Note: The checkbox Save Installer Configuration is used at Step 4 of the installation process to tell
the installer that you want to make a 1CRM installation template from this installation session. Later
on, at Step 7 (if installing without demo data) or Step 9 (with demo data) you will see a link to
download the installer_config.zip file.
10. Install Step 5: Locale Settings – As shown in the figure below, you can upload language
packs at this time. You can also set your installation’s default localization values for date,
time, currency and character sets, etc.. Once you have done that, then click on the Next
button to proceed to Install Step 6.
Note: Selecting your default currency on this screen is a critical item. You cannot change it after
the system is installed and running. This is your only chance to set a default currency other than
US$.
11. Install Step 6: Confirm Settings - This screen (see figure above) simply shows you all the
settings you have provided for the 1CRM installation. If they look correct, click on the
Next button to proceed with the actual 1CRM installation.
12. Install Step 7: Perform Setup - You should see a screen like the first figure below. Note it will
take a minute or two to complete – so be patient! The progress bar goes from left to right for
each step of the process. When a step is complete, it gets a check mark, and the next step
begins. By the time the setup is complete (as shown in the second figure below) your 1CRM
installation is ready to go - unless you chose to have demo data installed. If demo data is
being installed, Install Steps 8 and 9 will be performed, as shown below. If not, just skip down
to paragraph 15 below, which begins with “Congratulations - you’re done.”.
13. Install Step 8: Demo Data Configuration - On this screen you select what demo data you
would like to have installed. At the top of the screen is a convenient checkbox to select or de-
select all of the items. Notice that some items will automatically select other items, as there
are dependencies between various items of data.
14. Install Step 9: Demo Data Installation - This screen is a bit like Install Step 7, in that a series
of progress indicator bars are generated, each leaving behind it a step of the demo data
installation with a check mark once it is completed. Eventually your screen should resemble
the one below, once all the demo data selected has been added to your database.
Note: The checkbox Save Installer Configuration is used at Step 4 of the installation process to tell
the installer that you want to make a 1CRM installation template from this installation session. Later
on, at Step 7 (if installing without demo data) or Step 9 (with demo data) you will see a link to
download the installer_config.zip file (see Figure above). Once you have downloaded the file, it may
be used as part of the one-step installer process - typically by system admins making trial sites or
sandboxes for testing.
To perform a one-step install, browse to http://yoursite.com/install.php?auto. A screen
similar to the Step 3: Database Configuration screen above is displayed. It contains a set of options
that are unique to each 1CRM instance (db configuration, mainly). The installer_config.zip file can be
uploaded from this screen. If it is uploaded, any options chosen when creating the config file
(localization, demo data, language packs etc) will apply to this new installation. (The Admin user
password is always set to admin.) After clicking Next, the installation begins without any further input.
The installer can be launched via command line as well. Enter php install.php --help to see the
list of command line options. We recommend you su to the web server user before running the
installer. The installer_config.zip file can also be used with the command line installer.
15. Congratulations – you’re done. Just click on the Finish button to login to 1CRM for the first
time.
16. Log in, using the user name admin, and the admin password you provided in Install Step 4
above.
17. The first time you login, the system will take you automatically to License & Support on the
Admin menu screen.
18. Enter your license key in the Quick Update box, and click on the Update button. You will see
a screen like the one below, confirming that the license key has been applied successfully. If
you are installing the 1CRM Startup Edition, instead of entering a license key just click on the
Request License button, enter your license and registration information into the popup form
that appears, and then click on the Send Request button.
(Note: Your server must be connected to the Internet as you perform this step.)
19. Now log out of 1CRM and then log back in. Navigate back to the License & Support screen,
and you should see your license information displayed like this:
Web Server
Supports any version that runs
Apache 2.4.39 PHP
Database
MariaDB 10.3.14 MyISAM Tables required
PHP
7.3.5 Zend Server is supported
Browser
Firefox 67 or later
Chrome 61 or later
Safari 12 or later
Particularly critical are the php.ini configuration instructions in section 5.6, and the chart of
compatible software revisions at the end of this chapter. This chapter, like the other installation
chapters, is written to document how to install 1CRM on a specific reference platform.
If you ever have a need to call for support, our technicians will make sure that your server
environment complies with the one documented here (or one of the other reference platforms),
before any incident can proceed further.
If you have chosen to install 1CRM on a macOS version other than High Sierra (macOS 10.13.0 or
later), that’s fine, but if you call for support and your environment or its configuration (rather than the
1CRM software itself) is found to be the cause of your issue, the support incident will unfortunately
be billable.
Our support staff can’t be expert at all variations of every environment, and neither can we document
how to install 1CRM on every conceivable environment that might support it. So we chose a few that
we felt would be popular ones.
We will use the Apache version 2.4.33 which comes preinstalled with macOS High Sierra, and we will
install MySQL 5.7.22, and PHP 7.1.19 in the following sections.
Download the DMG (Drive Image) file and then open it. It is about 370 MB. (Look for the link No
thanks, just start my download as you download it, to avoid providing personal information.) Once
you unzip the downloaded file, you should see contents as shown in the Figure below:
This will be used to install MySQL 5.7.22 (Note: Latest tested version as of July 2018). First, double
click on the file shown. Follow the sequence of screens as shown in the figures below, to install
MySQL:
On the screen entitled: Select a Destination choose the option Install for all users of this computer,
and then click on Continue.
During the next step, take care to note the MySQL root password which is generated and displayed.
Finally, go to System Preferences, and click on the MySQL icon to see the MySQL System
Preferences panel.
Be sure to check the option to Automatically Start MySQL Server on Startup. And then click the
button to start the server now, so your preferences panel resembles the Figure above.
Now open up Terminal (found in the Utilities folder within Applications) and issue this command to
use the vi editor:
vi .bash_profile
Use the ‘i’ key to go into insert mode, then enter this line:
export PATH=/usr/local/php5/bin:/usr/local/mysql/bin:$PATH
Hit the Escape key to exit insert mode and type :wq and hit Enter to write and quit the editor.
Close the Terminal application fully, then open a new Terminal window. You can then enter this
command to go to the MySQL console prompt:
mysql -u root -p (you will then be prompted to enter the password you noted after the
step shown in Figure 60)
Enter the following commands into the MySQL prompt, changing ‘psw’ to be your choice of a secure
password for the MySQL root user.
sudo vi /Library/WebServer/Documents/info.php
2. Use the ‘i’ key to go into insert mode, then enter this line
<?php phpinfo(); ?>
Hit the Escape key to exit insert mode and type :wq and hit Enter to write and quit the editor.
• Now use Safari to browse to the URL localhost/info.php. You should see the results of
phpinfo() displayed on the screen, providing a lot of configuration information about your
PHP installation. This confirms that both Apache and PHP are running, and that they are
getting along with each other. If you examine the phpinfo() display in detail, you should see
the following software is installed and running:
• PHP 7.1.19
• Apache 2.4.33
• MySQL 5.7.22
Now that you have PHP active, Apache configured properly, and MySQL running and configured, you
are almost ready to see if all of this is working properly. But first we need to configure some settings
used by PHP, in the php.ini file.
The file is the php.ini file, and it is in the /usr/local/php5/lib/ directory. You can use the Finder to
bring up the folder, using the Go | Go to Folder… menu option. Then drag a copy of the file to your
desktop and edit it. Remember to use it to replace the real file after you finish all the edits below.
Set opcache.enable
Change the default value for opcache.enable:
Change this: ;opcache.enable=1 (commented out)
To this: opcache.enable=1
Set memory_limit
1. Search for memory_limit, and set it to 200M. This will allow 1CRM to consume up to 200M of
memory as it executes. Without this setting, complex actions may run out of memory.
6. Just click on the Start button. The 1CRM license acceptance screen is the next one you
will see:
7. Install Step 1: License Acceptance - Click on the I Accept checkbox, and then on the Next
button.
8. Install Step 2: System Check - Now you see the 1CRM system check screen. The 1CRM
installer checks several aspects of the installation environment, and reports their status
to you on this screen. You will see a series of green (and perhaps a few red) status
messages down the right hand side of the screen. They need to be all green for the
installation to proceed.
If they are all green, click on the Next button to proceed to the next step of the 1CRM
installation process. Also take a note of the location of your php.ini file, as shown on the
screen above.
If they are not all green you should act on any diagnostic details provided beside the
highlighted issue, and go back to your server setup to see where things went wrong.
9. Install Step 3: Database Configuration (see the figure below) - Set Host Name to localhost,
Database Name to onecrm, Database User Name to onecrm, and Database Password to
whatever you like (crm80dbpsw is a suggestion).
Click on Populate database with Demo Data if you would like some test data created for you.
Set the Privileged Database User Name to root, and the Privileged Database User Password
to the root password for MySQL (as defined in the section Configure MySQL).
10. Install Step 4: Site Configuration – As shown in the figure below, enter the new password you
wish for the 1CRM Admin user, and confirm it.
You can set the URL as you like - but make sure it is an absolute URL not a relative one,
and that is is a URL that is usable externally, not a LAN IP address or similar. This is a
critical point - if you do not do this correctly, you will have some serious issues down the line
with your installation.
Note: Make certain the URL of the 1CRM Instance field is set to an absolute URL that
is addressable externally! Also make sure that the URL can be resolved locally on the
server running 1CRM. This is of critical importance.
Note: The checkbox Save Installer Configuration is used at Step 4 of the installation process to tell
the installer that you want to make a 1CRM installation template from this installation session. Later
on, at Step 7 (if installing without demo data) or Step 9 (with demo data) you will see a link to
download the installer_config.zip file.
Section 5: Installing 1CRM System 8.6 on macOS High Sierra Page 100
1CRM System 8.6 Implementation Guide Table of Contents
11. Install Step 5: Locale Settings – As shown in the figure below, you can upload language
packs at this time. You can also set your installation’s default localization values for date,
time, currency and character sets, etc.. Once you have done that, then click on the Next
button to proceed to Install Step 6.
Note: Selecting your default currency on this screen is a critical item. You cannot change it after
the system is installed and running. This is your only chance to set a default currency other than
US$.
Section 5: Installing 1CRM System 8.6 on macOS High Sierra Page 101
1CRM System 8.6 Implementation Guide Table of Contents
12. Install Step 6: Confirm Settings - This screen (see figure below) simply shows you all the
settings you have provided for the 1CRM installation. If they look correct, click on the
Next button to proceed with the actual 1CRM installation.
Section 5: Installing 1CRM System 8.6 on macOS High Sierra Page 102
1CRM System 8.6 Implementation Guide Table of Contents
13. Install Step 7: Perform Setup - You should see a screen like the first figure below. Note it will
take a minute or two to complete – so be patient! The progress bar goes from left to right for
each step of the process. When a step is complete, it gets a check mark, and the next step
begins. By the time the setup is complete (as shown in the second figure below) your 1CRM
installation is ready to go - unless you chose to have demo data installed. If demo data is
being installed, Install Steps 8 and 9 will be performed, as shown below. If not, just skip down
to paragraph 16, which begins with “Congratulations - you’re done.”.
Section 5: Installing 1CRM System 8.6 on macOS High Sierra Page 103
1CRM System 8.6 Implementation Guide Table of Contents
14. Install Step 8: Demo Data Configuration - On this screen you select what demo data you
would like to have installed. At the top of the screen is a convenient checkbox to select or de-
select all of the items. Notice that some items will automatically select other items, as there
are dependencies between various items of data.
Section 5: Installing 1CRM System 8.6 on macOS High Sierra Page 104
1CRM System 8.6 Implementation Guide Table of Contents
15. Install Step 9: Demo Data Installation - This screen is a bit like Install Step 7, in that a series
of progress indicator bars are generated, each leaving behind it a step of the demo data
installation with a check mark once it is completed. Eventually your screen should resemble
the one below, once all the demo data selected has been added to your database.
Note: The checkbox Save Installer Configuration is used at Step 4 of the installation process to tell
the installer that you want to make a 1CRM installation template from this installation session. Later
on, at Step 7 (if installing without demo data) or Step 9 (with demo data) you will see a link to
download the installer_config.zip file (see Figure above). Once you have downloaded the file, it may
be used as part of the one-step installer process - typically by system admins making trial sites or
sandboxes for testing.
To perform a one-step install, browse to http://yoursite.com/install.php?auto. A screen similar to the
Step 3: Database Configuration screen above is displayed. It contains a set of options that are
unique to each 1CRM instance (db configuration, mainly). The installer_config.zip file can be
uploaded from this screen. If it is uploaded, any options chosen when creating the config file
(localization, demo data, language packs etc) will apply to this new installation. (The Admin user
password is always set to admin.) After clicking Next, the installation begins without any further input.
The installer can be launched via command line as well. Enter php install.php --help to see the
list of command line options. We recommend you su to the web server user before running the
installer. The installer_config.zip file can also be used with the command line installer.
Section 5: Installing 1CRM System 8.6 on macOS High Sierra Page 105
1CRM System 8.6 Implementation Guide Table of Contents
16. Congratulations – you’re done. Just click on the Finish button to login to 1CRM for the first
time.
17. Log in, using the user name admin, and the admin password you provided in step 10 (Install
Step 4) above.
18. The first time you login, the system will take you automatically to License & Support on the
Admin menu screen.
Section 5: Installing 1CRM System 8.6 on macOS High Sierra Page 106
1CRM System 8.6 Implementation Guide Table of Contents
19. Enter your license key in the Quick Update box, and click on the Update button. You will see
a screen like the one below, confirming that the license key has been applied successfully. If
you are installing the 1CRM Startup Edition, instead of entering a license key just click on the
Request License button, enter your license and registration information into the popup form
that appears, and then click on the Send Request button.
(Note: Your server must be connected to the Internet as you perform this step.)
20. Click on Return to List, and you should see your license information displayed something like
this:
Section 5: Installing 1CRM System 8.6 on macOS High Sierra Page 107
1CRM System 8.6 Implementation Guide Table of Contents
Then press the Escape key, enter :wq and press the Enter key, to save the new crontab.
Congratulations – you have completed the installation of the 1CRM System. We hope you enjoy
using it, and that it makes a significant contribution to the effective management of your organization.
Section 5: Installing 1CRM System 8.6 on macOS High Sierra Page 108
1CRM System 8.6 Implementation Guide Table of Contents
Particularly critical are the php.ini configuration instructions in section 6.4, and the chart of
compatible software revisions at the end of this chapter. This chapter, like the other installation
chapters, is written to document how to install 1CRM on a specific reference platform.
If you ever have a need to call for support, our technicians will make sure that your server
environment complies with the one documented here (or one of the other reference platforms),
before any incident can proceed further.
If you have chosen to install 1CRM on a different configuration of the Azure Cloud, that’s fine, but if
you call for support and your environment or its configuration (rather than the 1CRM software itself)
is found to be the cause of your issue, the support incident will unfortunately be billable.
Our support staff can’t be expert at all variations of every environment, and neither can we document
how to install 1CRM on every conceivable environment that might support it. So we chose a few that
we felt would be popular ones.
Incidentally, another good reference for installing on CentOS, whether inside Azure or on your own
server, is this page on howtoforge.com.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 109
1CRM System 8.6 Implementation Guide Table of Contents
2. Any Virtual Machines you have already created will be listed. Now click on the + Add link at
the top left of the screen.
3. The next screen is titled Create a Virtual Machine, and has several tabs, the first of which is
called Basics:
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 110
1CRM System 8.6 Implementation Guide Table of Contents
4. Choose CentOS-based 7.5 for the Image (which oddly, as of current writing will give you
CentOS 7.6.1810). Create your own choice of name for the virtual machine itself, and its
resource group. Select your preference of region, and machine size.
5. You’ll likely want to create a new cloud service with no availability set unless you are setting
up an elaborate fault-tolerant implementation. Be sure to select inbound ports for HTTP,
HTTPS and SSH as shown below. Click on Review & Create, to see the Summary screen,
then click Create.
6. Your new VM will now be provisioned. Watch as it is created, and then starts up!
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 111
1CRM System 8.6 Implementation Guide Table of Contents
7. Within the Azure Portal, click on your new VM in the list of VMs, and then click on the
Overview. You will see some monitoring info for the VM, as well as a summary of VM
configuration data. Check there for your VM’s DNS name - you’ll need it in the next step. If it
is not set yet, set it up now.
8. Using a terminal program such as Terminal which is included on all Mac computers, enter the
command: ssh -l test-admin linuxref.eastus.cloudapp.azure.com
Note: Instead of test-admin above, you will use your own user name, from the screen in
Figure 84, and instead of using linuxref.eastus.cloudapp.azure.com, you will use the DNS
name shown on your Azure VM Overview.
11. Enter your password (from Figure 84), and you will be connected to your new VM, using an
ssh session.
12. Enter the following commands:
• sudo su (to gain admin privileges - you’ll need to provide your password)
• rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 112
1CRM System 8.6 Implementation Guide Table of Contents
13. Now exit the Virtual Machine ssh session, by entering the command: Exit
14. Make sure you have the 1CRM distribution .zip file in the root directory of your current user
on your Mac or PC computer. We’ll assume in the next few steps that it is called 1crm.zip.
22. Unzip that 1crm.zip file in your root directory, and then download these two PDF files below
from our website. Then drag and drop them into the /docs folder within the unzipped folder
just created:
• User Guide
• Implementation Guide
Rename them as simply UserGuide.pdf, and InstallGuide.pdf. These are the PDFs of the
documentation for 1CRM. The Implementation Guide PDF (InstallGuide.pdf) is accessed via
a link available in the installation wizard (coming up soon). The User Guide PDF
(UserGuide.pdf) is linked from the online help system available to all users. Now zip the
fileset back up into 1crm.zip again, so things are just as they were, but now your zip file
contains the documentation PDF files as well.
Note: Instead of test-admin above, you will use your own user name, from the screen in
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 113
1CRM System 8.6 Implementation Guide Table of Contents
Figure 84. And instead of using linuxref.eastus.cloudapp.azure.com, you will use the DNS
name shown on your Azure VM Overview.
24. You will be prompted for your Azure VM password, and then the 1CRM software
distribution .zip file will be uploaded to your Azure Virtual Machine!
25. Re-start the ssh session with the Virtual Machine by entering the same command you did in
step 8 above.
This unzips the 1crm.zip file in the correct folder on the Virtual Machine.
30. You should be able to point your browser to the URL shown as your DNS Name in the Azure
VM Dashboard. In our example here, that was linuxref.eastus.cloudapp.azure.com. If
you see the 1CRM installation screen, things are going fine. Before we go any further with
that, however, we need to finish configuring your server.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 114
1CRM System 8.6 Implementation Guide Table of Contents
Set memory_limit
1. Search for memory_limit, and set it to 200M. This will allow 1CRM to consume up to 200M of
memory. Without this setting, complex actions may run out of memory.
Set display_errors
1. Search for display_errors, and make sure it is set to Off. This will suppress the display of
warning messages which will otherwise disrupt the display.
Set mysql.default_socket
1. Search for mysql.default_socket. Make sure it is set to an empty value so that it uses the
MySQL defaults.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 115
1CRM System 8.6 Implementation Guide Table of Contents
2. Just click on the Start button. The 1CRM license acceptance screen is next up:
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 116
1CRM System 8.6 Implementation Guide Table of Contents
3. Install Step 1: License Acceptance - Click on the I Accept checkbox, and then on the Next
button.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 117
1CRM System 8.6 Implementation Guide Table of Contents
4. Install Step 2: System Check - Now you see the 1CRM system check screen. The 1CRM
installer checks several aspects of the installation environment, and reports their status
to you on this screen. You will see a series of green (and perhaps a few red or blue)
status messages down the right hand side of the screen.
If they are all green, click on the Next button to proceed to the next step of the 1CRM
installation process.
If any are red, you should act on any diagnostic details provided beside the highlighted issue,
and go back to your server setup to see where things went wrong.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 118
1CRM System 8.6 Implementation Guide Table of Contents
5. Install Step 3: Database Configuration (see the figure below) - Set Host Name to localhost,
Database Name to onecrm, Database User Name to onecrm, and Database Password to
whatever you like (crm86dbpsw is one suggestion).
Click on Populate database with Demo Data if you would like some test data created for you.
Set the Privileged Database User Name to root, and the Privileged Database User Password
to the root password for MySQL (as defined earlier when installing MariaDB/MySQL).
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 119
1CRM System 8.6 Implementation Guide Table of Contents
6. Install Step 4: Site Configuration – As shown in the figure below, enter the new password you
wish for the 1CRM Admin user, and confirm it. You can set the URL as you like - but make
sure it is an absolute URL not a relative one, and that is is a URL that is usable
externally, not a LAN IP address or similar. This is a critical point - if you do not do this
correctly, you will have many severe issues down the line with your installation.
Note: Make certain the URL of the 1CRM Instance field is set to an absolute URL that
is addressable externally! Also make sure that the URL can be resolved locally on the
server running 1CRM. This is of critical importance.
Note: The checkbox Save Installer Configuration is used at Step 4 of the installation process to tell
the installer that you want to make a 1CRM installation template from this installation session. Later
on, at Step 7 (if installing without demo data) or Step 9 (with demo data) you will see a link to
download the installer_config.zip file.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 120
1CRM System 8.6 Implementation Guide Table of Contents
7. Install Step 5: Locale Settings – As shown in the figure below, you can upload language
packs at this time. You can also set your installation’s default localization values for date,
time, currency and character sets, etc.. Once you have done that, then click on the Next
button to proceed to Install Step 6.
Note: Selecting your default currency on this screen is a critical item. You cannot change it after
the system is installed and running. This is your only chance to set a default currency other than
US$.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 121
1CRM System 8.6 Implementation Guide Table of Contents
8. Install Step 6: Confirm Settings - This screen (see figure below) simply shows you all the
settings you have provided for the 1CRM installation. If they look correct, click on the
Next button to proceed with the actual 1CRM installation.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 122
1CRM System 8.6 Implementation Guide Table of Contents
9. Install Step 7: Perform Setup - You should see a screen like the first figure below. Note it will
take a minute or two to complete – so be patient! The progress bar goes from left to right for
each step of the process. When a step is complete, it gets a check mark, and the next step
begins. By the time the setup is complete (as shown in the second figure below) your 1CRM
installation is ready to go - unless you chose to have demo data installed. If demo data is
being installed, Install Steps 8 and 9 will be performed, as shown below. If not, just skip down
to paragraph 12 below, which begins with “Congratulations - you’re done.”.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 123
1CRM System 8.6 Implementation Guide Table of Contents
10. Install Step 8: Demo Data Configuration - On this screen you select what demo data you
would like to have installed. At the top of the screen is a convenient checkbox to select or de-
select all of the items. Notice that some items will automatically select other items, as there
are dependencies between various items of data.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 124
1CRM System 8.6 Implementation Guide Table of Contents
11. Install Step 9: Demo Data Installation - This screen is a bit like Install Step 7, in that a series
of progress indicator bars are generated, each leaving behind it a step of the demo data
installation with a check mark once it is completed. Eventually your screen should resemble
the one below, once all the demo data selected has been added to your database.
Note: The checkbox Save Installer Configuration is used at Step 4 of the installation process to tell
the installer that you want to make a 1CRM installation template from this installation session. Later
on, at Step 7 (if installing without demo data) or Step 9 (with demo data) you will see a link to
download the installer_config.zip file (see Figure above). Once you have downloaded the file, it may
be used as part of the one-step installer process - typically by system admins making trial sites or
sandboxes for testing.
To perform a one-step install, browse to http://yoursite.com/install.php?auto. A screen
similar to the Step 3: Database Configuration screen above is displayed. It contains a set of options
that are unique to each 1CRM instance (db configuration, mainly). The installer_config.zip file can be
uploaded from this screen. If it is uploaded, any options chosen when creating the config file
(localization, demo data, language packs etc) will apply to this new installation. (The Admin user
password is always set to admin.) After clicking Next, the installation begins without any further input.
The installer can be launched via command line as well. Enter php install.php --help to see the
list of command line options. We recommend you su to the web server user before running the
installer. The installer_config.zip file can also be used with the command line installer.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 125
1CRM System 8.6 Implementation Guide Table of Contents
12. Congratulations – you’re done. Just click on the Finish button to login to 1CRM for the first
time.
13. Log in, using the user name admin, and the admin password you provided in step 6 (Install
Step 4) above.
14. The first time you login, the system will take you automatically to License & Support on the
Admin menu screen.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 126
1CRM System 8.6 Implementation Guide Table of Contents
15. Enter your license key in the Quick Update box, and click on the Update button. You will see
a screen like the one below, confirming that the license key has been applied successfully. If
you are installing the 1CRM Startup Edition, instead of entering a license key just click on the
Request License button, enter your license and registration information into the popup form
that appears, and then click on the Send Request button.
(Note: Your server must be connected to the Internet as you perform this step.)
16. Click on Return to List, and you should see your license information displayed like this:
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 127
1CRM System 8.6 Implementation Guide Table of Contents
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 128
1CRM System 8.6 Implementation Guide Table of Contents
Web Server
Apache 2.4.6 Supports any version that runs PHP
Database
MariaDB: MySQL 5.5.60 MyISAM Tables required
PHP
7.3.7
Zend Server is supported
Browser
Firefox 67 or later
Chrome 61 or later
Safari 12 or later
Note: As of release 8.6 1CRM requires a PHP version in the range of 7.0 - 7.3.7.
Section 6: Installing 1CRM System 8.6 on an Azure Cloud Virtual Machine Page 129
1CRM System 8.6 Implementation Guide Table of Contents
Within the Admin home screen, there are eleven main groups of administrative functions:
2. The System Support Tools administration function group offers seven options:
• Maintenance
• Backup Management
• Upgrades & Customization
• Diagnostic Tool
• View System Log
• Manage Imported Data
• Storage Utilization - Lets you see how much storage space your 1CRM instance is taking up,
and how much remains. On the 1CRM Cloud it also shows you your storage space
entitlement.
• Smart List Tab Sharing – for sharing Smart List tabs among users
• Workflow – used to define workflows that automate business rules
• Configure Group Tabs – let’s you re-arrange how modules are presented within tab groups
• Configure Module Tabs – used to suppress the display of selected modules
• Rename Module Tabs – let’s you rename specific modules
• Module Designer – let’s you create all-new custom modules, and edit metadata definitions
for existing modules (an Enterprise Edition Only feature)
• PDF Form Designer – let’s you create modified or all-new custom PDF Forms, to use when
printing Invoices, Quotes, Service Work Orders, etc.. (an Enterprise Edition Only feature)
6. The Quotes & Invoices administration function group offers four options:
• Shipping Providers
• Discounts
• Tax Rates
• Tax Codes
8. The WooCommerce function group (an Enterprise Edition Only feature) offers one option:
• WooCommerce API Settings: For clients using the WooCommerce integration, this lets the
admin configure all the settings that control how that integration operates.
11. The API and OAuth Settings function group offers two options:
• API and OAuth Settings: Defines the Private and Public keys for OAuth interoperability, as
well as controlling API authentication and security level settings.
• API Clients: Manage the applications allowed to access the 1CRM API.
In addition, this System Administration section will deal with the topics of managing the mass email
queue, how to set up the system to enable it to perform mass emails and retrieve email using POP3
and IMAP, and how to manage free/busy calendar information.
The second section allows you to define a number of settings used to control the Customer Service
capabilities within 1CRM:
• Case Queue User – This is the User to which all new Cases will be assigned by default. If no
user is selected, then the system of automatic assignment of Cases when requested by
technicians is disabled. See more details in the section on Cases.
• Assign New Leads To is used to control which user all new leads are automatically assigned
to when created by the system - such as by the lead capture process.
• Next Case Number - Sets the next Case number to be used.
• Next Bug Number - Sets the next Bug number to be used.
• Standard Work Order Terms - Allows you to define text to be used as your Standard Terms
and Conditions for Service Work Orders. When a Work Order PDF is created from a Service
Case the text defined here will be automatically added at the bottom of the document.
• Auto-Add Hours to Case Invoice - Enables automatic adding of approved but un-billed
booked hours to associated case when generating an invoice for a Case.
• Auto-Add Hours to Project Invoice - Enables automatic adding of approved but un-billed
booked hours to associated project tasks when generating an invoice for a Project.
• Default Case Booking Category - Sets the normal Booking Category to be used for hours
booked to service case work.
• Default Project Task Booking Category - Sets the normal Booking Category to be used for
hours booked to Project Tasks.
• Cases Auto-Close: Warn When No Activity (days) - When this value is set to something other
than zero, the client is sent an email warning of impending case expiry that many days after
the case status is set to Pending. (The scheduler task Close Expired Cases must also be
active.)
Case Status is normally set to Pending when a user sends an email related to a case, via a
New Case Status field on Email Edit View. A different case status may be set by changing
the value of that field from the default Pending. Case Resolution information may also be
entered there.
• Cases Auto-Close: Close When No Activity (days) - When this value is set to something
other than zero (and larger than the Case Auto-Close warning value above, if non-zero),
cases will be automatically closed and set to a status of Closed - Expired that many days
after being set to Pending. (The scheduler task Close Expired Cases must also be active.)
The Survey and Ratings email will also be sent if that option is enabled.
Users will typically set Cases to Pending when awaiting client feedback, and this feature will
close cases in the absence of that feedback.
• Cases Auto-Close: Enable Case Surveys and Ratings - Checking this option will enable the
Case Rating system. A Rating field (star rating) on each case is added, visible only when the
client assigns a rating to the case. When a case is closed, the client is sent an email via
which they can simply rate the service quality on their case by number of stars, or complete
a customer satisfaction survey.
• Cases Auto-Close: Request Comments on Case Survey - When this option is checked and
the Enable Case Surveys and Ratings option is checked and a case is closed, the client is
sent an email in which they are requested to comment via a customer satisfaction survey.
The third section allows you to define a number of settings used to control the Order Management
capabilities within 1CRM:
• Add Comment Lines - This option may be enabled for Products, Assemblies, or both. When it
is enabled, then when adding a new line item to a quote, sales order or invoice, the
description field from the product (or assembly) will be added automatically to the line item
list as a comment line immediately following the product or assembly.
• Add Booked Hours Comments - chooses whether or not to include comments added to
booked hours entries on Invoice PDFs generated from Projects or Cases.
• Tax Information – the VAT number or other tax registration number of your business.
• Shipping Is Taxed – sets the default taxable status for shipping charges
• Default Tax Code for Shipping
• Approve Quotes – Enable if Quotes need approval before they may be printed or emailed.
• Quote Approval Threshold ($) - If Approve Quotes is enabled, then if the value of a Quote is
greater than this dollar value (if set) it must be approved by someone with the permissions
set to be able to do so before it may be printed or emailed as a PDF.
• Quote Margin Threshold (%) - If Approve Quotes is enabled, then if the Gross Margin % of a
Quote is less than this percentage value (if set) it must be approved by someone with the
permissions set to be able to do so before it may be printed or emailed as a PDF.
• Track Partial Shipping - If this option is selected (it is on by Default) then for sales orders
which have been partially shipped, generating an additional shipping record will only offer
unshipped items as options to be shipped. Otherwise all items will be offered.
• Approve Booked Hours on Cases - Un-check to disable the need for approvals on hours
booked to Cases.
• Approve Booked Hours on Projects - Un-check to disable the need for approvals on hours
booked to Projects.
• Show List Prices by Default - This option controls the default value of the Show List Prices
setting when creating a new Quote.
• Show Pre-tax Totals - Use this check box to add pre-tax totals on Quotes/Invoices, or not.
• Default Pricing Method - Set the pricing method you wish to be the default method for all
users when creating Quotes and Invoices.
• Formatting - Select if the standard address block at the top of many PDF layouts will include
your company phone number, and/or company email address.
• PayPal Link - Use this field to add a PayPal payment button to your Invoice PDFs (Enterprise
Edition only). In your PayPal account, create a simple website Buy Now Saved Button with
no item or pricing information. Then click the Email tab and copy the link and paste it here
then Save. This link should be of the format: https://www.paypal.com/cgi-bin/webscr?
cmd=_s-xclick&hosted_button_id=BUTTON_ID_HERE In the PDF Form Designer for Invoice
PDF templates there is a predefined field - PayPal Button - which uses this link. You may add
that button to your custom Invoice template if desired.
• Commissions - Settings to control the calculation of Commissions within 1CRM. See the
Commissions module in the User Guide for more information.
• Opportunities - Automatically Update Opportunities Close Date option.
• Payment Gateway – If you wish to process credit card payments from within 1CRM, you may
choose Authorize.net (if your business is based in the USA, Canada, UK, Australia or
Europe) or Stripe (if your business is based in USA, Canada, UK, Australia, Denmark,
Finland, Norway, Sweden or Ireland, with many other countries coming).
Payment Gateways:
If one of these is selected, you must of course first sign up for an account with one of these
suppliers. You will also need to define the currency your account uses, plus either your Stripe
application key (Secret key), or your API Login ID and Transaction Key for Authorize.net.
For Authorize.net, your API Login ID and Transaction Key are NOT those used to login to the
Authorize.net web interface. To obtain your correct API Login ID and Transaction Key, login to
your Authorize.net account and choose Account - API Login ID and Transaction Key. You will
see your API Login ID, which is what you must use as the login for 1CRM. Then generate
your Transaction Key using the form at the bottom of the page. Use that generated key in
1CRM.
The fourth section is used to upload your company logo, for use on quotes, invoices, statements, and
receipts. Note that the logo should be a PNG file, with dimensions of 400 x 88 pixels. If you upload a
new logo, and the PDF shows a blank logo – then check for transparency in the logo!
The fourth section also allows you to upload a logo to be used in the top left corner of the screen,
instead of the 1CRM logo.
The fifth section allows you to define custom user prompt text to be used on the Application Login
Page for the application, and to choose if the custom text or standard text is shown. You might
choose to add the contact phone number for the Help desk here, for example.
The sixth section allows you to define system-level Online meeting credentials (for systems such as
GoToMeeting, Zoom, Microsoft Teams, …). These will be used by default for all users that do not
define their own Online meeting credentials on their My Account page. For more information on
configuring the Microsoft Teams integration, see this page on our website. For more information on
configuring the Zoom integration, see this page on our website.
The seventh section allows you to define system-level LiveChat credentials and configuration
settings. For more information see details on this integration here.
The eighth section allows you to define text to be used as your Standard Terms and conditions for
Quotes, Invoices, Sales Orders and Purchase Orders. When a PDF is created for one of these
documents, the text defined here will be automatically added at the bottom of the document.
The ninth section is used to enter the company name and Mailing Addresses, which are used when
generating PDFs in the Quotes, Invoices, Accounts, Payments and Reports modules. The system
allows you to define multiple addresses, one of which must be marked as the main address. This will
be the address used in most situations, but for Quotes and Invoices, you can choose to use one of
the other addresses, when creating the PDF.
As well, each of these addresses may be marked as a warehouse location or not, and one may be
the main warehouse. This warehouse information is used in the Shipping and Receiving modules,
and in the inventory data kept in the Product Catalog.
The first section configures several aspects of the 1CRM user interface – the number of items to be
displayed in list views and sub-panel lists, the maximum number of dashlets on a dashboard, if
server response times are to be shown at the bottom of each screen, and if Mobile Access displays
should use one or two columns. Default sidebar items per page is used by the Claro theme to set the
default number of items shown in the sidebar list view featured on detail views in the Claro theme.
Section two is used to enable or disable support for LDAP authentication. (Note: LDAP is an
abbreviation for Light Data Access Protocol) If your organization has implemented LDAP
authentication, you can also enable LDAP authentication in 1CRM. When your users attempt to log
into 1CRM, the application authenticates them against your LDAP directory. If authentication is
successful, the user is allowed to access 1CRM.
1. In the LDAP Authentication Support sub-panel, select the Enable LDAP box and enter:
Server Enter the LDAP server name.
Base DN Enter the base DN name.
Bind Attribute Enter the attribute name used to bind the user’s name.
Login attribute Enter the attribute name used to search for the user in LDAP.
Authenticated User Enter the user name.
Authenticated Password Enter the user’s password.
Auto Create Users Select this option check the 1CRM database for the
name and add it if it does not exist in the database.
The next section configures your server for the use of a proxy server, should 1CRM be intended to
use one. When selected, this option allows the administrator to enter the proxy server’s host name
and port number, with optional user name and password for authentication.
Section four configures the ability of users and/or administrators to export data from the system. The
export delimiter character is also set, as is the default character set used for any exported data.
Section five sets a number of parameters for Invoice behaviour in the system. One of these, when
enabled causes 1CRM to add all the line items on each invoice to the Products sub-panel of the
Account involved when the invoice is fully paid, making it easy to see which clients have purchased
which products. As well, another option here enables or disables the ability of a line item on an
invoice to be related to a Marketing Event. This is useful for businesses that run a lot of Marketing
Events (such as seminars), and need to see what business volume they generate. When this option
is enabled, new fields will appear on the Invoice Edit and Detail views. The next option in this section
if selected causes a serial number field to be displayed for each line item on an Invoice, allowing
multiple serial numbers to be tracked for each Invoice line item. Finally, you can set Default Terms
here - which will be set on all new Quotes or Invoices, unless over-ridden by default terms for the
Account involved.
Section six has just one parameter, which sets the Default Terms for received Bills - which will be set
on all new Bills unless over-ridden by default terms set on the supplier.
Section seven has several parameters which control certain aspects of Drag and Drop support within
1CRM for all users.
• The first parameter Enables or Disables the ability to Drag and Drop files onto the History
and Documents subpanels throughout the system, to create new Notes and Documents.
• The remaining settings may be used to define defaults for Document Category, Department
and Status, when adding new Documents via Drag and Drop.
Section eight has just one parameter, which controls the ability of regular system users to add new
Tags when creating new Articles in the Knowledge Base module. When it is not enabled, users must
relate new Articles only to existing Tags.
Section nine is used to configure the settings for Google Maps integration in 1CRM. Several
important administrative functions may be performed here:
• First and most importantly, this is where you set the Google Maps API key for your 1CRM
instance. You need one of these in order for any of the Google Maps functions within 1CRM
to function properly.
Google’s current policy is to provide a monthly credit of US$200 after which use of your key
will be billed to you. Pricing is tiered, based on volume of use, with three tiers: 0–100,000;
100,001–500,000; 500,001+ (see details here). Click on the Obtain a key link to learn about
the process of getting your own API key. You will need to obtain a Google developer account,
then create a project in the Google developer console. Next you will need to enable billing for
the project, and then finally add the maps API to your project. If you google the topic how to
obtain a google maps api key and click on the Videos tab, you will see a number of videos
which show the process.
• On the Accounts, Leads and Contacts list views, 1CRM users may select multiple items and
choose to view them on a single common map, using the Display on Map option available
from the Action button. For each address displayed on a map, 1CRM can display a popup
window with the Account, Contact or Lead’s name and address. You can choose up to 3
additional fields to show in those popup windows using the multi-select dropdown controls
provided here.
Section ten is where you set the IEX API key for your 1CRM instance. You need one of these if you
plan to use the Stock Quotes dashlet (you don’t need one for any other reason). Just click on the link
to obtain a token, then paste it in the field provided, and Save.
Section eleven controls the behaviour of recurring meetings in 1CRM - both the maximum number of
recurrences will be created per scheduler run, as well as the maximum number of days in the future
that recurring meetings will be established.
Section twelve controls the Apple Push Notifications service (APNs) integration within 1CRM.
Notification Mode has two options:
• Immediate - Mobile devices running 1CRM Mobile are notified as soon as Calls, Meetings
and Tasks are updated
• Scheduled - Mobile devices running 1CRM Mobile are notified periodically via the scheduler
Scheduled mode is required for proper system performance. Use Immediate mode for
troubleshooting only.
Section thirteen configures a number of advanced parameters that control how the server will
manage itself:
The fourteenth section configures logging from the application, when trying to track down some
unusual behaviour of the system. Leave most of the values here at their defaults unless instructed to
change them by 1CRM support staff.
There is a group of three controls at the bottom of this panel used to manage User Activity Logging,
described below. There is also a related scheduler task called User Activity Reporting which must be
enabled and running in order to collect User Activity data. And completing this solution are two User
Time Sheet reports. (Note: Report data is only valid for dates prior to the date of the most recent run
of the scheduler task, which defaults to running Weekly.)
Timeout Period (minutes): Specifies the maximum period of inactivity before a User is treated as
having logged off.
Grace Period (minutes): When user inactivity exceeds the Timeout Period, they are treated as if they
logged out at the moment of their last activity in 1CRM. But they are also credited with the Grace
Period, as a way to compensate for the likelihood that they did not immediately leave their system
after the last action.
The Timeout Period represents a trade-off between crediting the user for time worked when really
they are not working, vs. failing to credit them for time spent working on something not involving
1CRM.
Example: User logs in at 9am, works away from 1CRM at 11:45 for 35 minutes, lunch break 12-1 but
forgets to log off, then finally logs out at 6pm.
Timeout Period is 15 minutes, Grace Period is 5 minutes: Report shows approx 7h25 minutes
duration - appropriate if the intent is solely to report hours worked using 1CRM.
Timeout Period is 50 minutes, Grace Period is 5 minutes: Report shows approx 8h duration -
appropriate to track overall attendance when lunch breaks are an hour long and unpaid.
Timeout Period is 300 minutes, Grace Period is 5 minutes: Report shows approx 9h duration -
appropriate to track overall attendance when lunch breaks are paid and users often work for long
periods away from the CRM.
Note: The moment you enable the User Activity Reporting scheduler task you should anticipate that
your system will use on average about 3MB of data per user to store activity data.
The final section controls 1CRM remote assist, a system used by 1CRM support staff to perform
advanced system support functions. Do not leave this feature enabled. It is only for use by 1CRM
support staff.
• Running a system backup (both database and installation directory, including /cache)
• Updating the forecast periods
• Running scheduled reports
• Sending invoices to clients from the Recurring Services module
• Syncing Google Contacts
• Syncing Google Drive files
• Updating disk utilization statistics for the Storage Utilization screen.
• Update MaxMind database used to lookup IP address geolocation for tracking sent emails
• Updating currency exchange rates (uses web service provided by European Central Bank)
• User Activity Reporting - Collects data to track usage of the system by each user. See User
Time Sheet reports and the controls in the Logging panel of the System Settings screen.
The Scheduler needs to be linked to the operating system mechanism for scheduling tasks (see
Section 7.10) in order for it to function. If your inbound emails or scheduled reports are not working,
this is likely the cause. Look for the green LED and the status message that says “External triggering
of the Scheduler appears to be working correctly”.
Each of the Scheduler activities can be set to run automatically with a frequency as low as a few
minutes, or a high as once a day, week, month or longer. Scheduled activities can also be set to
trigger based on user activity such as a user login, or even on each page load (not usually
recommended).
User Interface: Use this panel to set system-wide default formats for date, time, language, name
format, and currency.
Default Date Format: From the drop-down list, select a date format for all records such as Accounts.
Users can override the default format by setting a different date format in their My Account page.
Default Time Format: From the drop-down list, select a time format to display in all records such as
Cases. Users can override the default format by setting a different time format in their My Account
page.
Default Language: From the drop-down list, select the default language for the 1CRM User
Interface. Users can select a different language from the login page, provided they have installed the
appropriate language pack.
Default Number Format: Choose a drop-down value to specify the number format that you want.
This controls the thousands separator and the decimal separator.
Default Name Format: Enter the default salutation and name format to display in list views and
detail views. You can specify any combination of salutation first name, and last name. For example:
Mr. John Smith, Mr. Smith, or John Smith. Users can override the default format by setting a different
time format in their My Account page.
Default Address Format: Select the address format to be used on PDFs that are generated. This
affects the order of the fields in an address, as usage varies from country to country - a sample
layout is previewed on screen for the selected option.
Show User Full Names: You can select here if 1CRM will show in the user interface each user’s full
name, or their system user name.
Server Timezone: Set the server timezone here, which is a critical value for things like email
timestamps. It assists 1CRM in establishing the time lead or lag between itself and each user.
Holidays: Choose the standard set of holidays to be used by default for each user on their calendar.
In their personal settings, users may override this value. Holidays are included for many countries,
and more may be added by loading custom Holiday Packs via Upgrades & Customization.
Default Theme: Sets the normal theme to be used by most users, unless they choose a different
one.
Finally, the Database Collation panel controls the collation order, according to various utf8 options.
This Defaults to utf8_general_ci.
If you ever need to re-install your software completely, you will need to ask your supplier to have your
license key reset, so that the license key may be used again.
Note: Your license terms permit you to operate your production server, as well as a testing/staging
server where any customizations and/or upgrades should first be tested.
As shown in the Figure above, your 1CRM license key also carries information about what products
you have licensed, and when your Support & Update Subscription expires. We see above that this
system is licensed for the 1CRM Enterprise Edition, and that support will expire at the end of the year
2015.
This screen also shows you if there are any software updates available for your system, allows you
to check for them (although the system checks automatically every few days), and provides you with
information on how to download the updates.
If updates are available, a notification icon will be displayed beside your license information on every
screen.
Perpetual Licenses
If your Support & Update Subscription has expired, a warning icon will be displayed beside your
license information on every screen.
If your Support & Update Subscription has expired, the system will no longer check for updates, and
in fact, the Upgrades & Customization screen is no longer able to apply them.
• Database Maintenance
• Data Caches
• Other Maintenance Tasks
Database Maintenance
• Database Schema: This compares the current database structure with the database model
definitions in your software, and optionally updates the database structure to match the
model definitions.
Data Caches
• Clean Uploads: Identifies files for deletion in ../files/upload
• Reset Cache: Removes all system cache files
• Clear Chart Data Cache: Removes cached data files used by charts.
• Rebuild Scheduler: Rebuilds the out-of-the-box Scheduler jobs.
• Rebuild PDF Forms: Rebuilds the system’s standard PDF Forms.
• Rebuild Dashlets: Rebuilds the Dashlets cache file.
• Rebuild Javascript Language: Rebuilds Javascript versions of language files.
Other Maintenance
• Check Language Files: Used to point out any incomplete or inconsistent entries in one
language file when compared to another – usually US English, which is the base language
for 1CRM. Used by those checking newly installed language files, or by those involved in the
translation process.
• Repair Sync Dates: Use only when directed to correct sync dates on sync’d records.
• Repair Employees: Create missing Employee information records for migrated users.
• Repair Email Folders: Create or repair standard Email Folders for migrated users.
• Clear User Tab Preferences: Reset user tab preferences to display newly added tabs.
• Rebuild .htaccess File: Rebuilds .htaccess to limit access to certain files directly.
As we see above, remote backups can use 3 different transports: FTP, SSH, and Dropbox.
• FTP - you will be prompted to enter the remote Host name, User Name, Password, and the
Directory where the backups will be stored on the remote host. The backup process will not
create that directory - it must already exist. Normally you should check Passive Mode.
• SSH - you will be prompted to enter the remote Host name, User Name and Directory. Note
that you do not specify a password. This type of backup requires some preparation on both
your 1CRM server and the remote backup server - see the section below.
• Dropbox - you must first authorize the 1CRM app to access the specific Dropbox you intend
to use for backups. Once you select Dropbox as the Remote Backup Type, you will see an
Authorize button appear, to the right of a field called Authorization Token. Clicking this
button opens a popup window which prompts 1CRM backup would like access to its own
folder, Apps › 1CRM backup, inside your Dropbox. You may need to login to your Dropbox
account before this message can be displayed. After clicking Allow, an authorization token is
displayed. Just copy the token and paste the it into the text box of the same name on the
Backup Management screen, and Save the settings.
4. You begin by generating a key pair which will be used to authorize the backup process on
the remote machine. The text below shows the commands to enter in bold. The text in italics
will vary:
$ sudo mkdir ~www/.ssh/
$ sudo ssh-keygen -t rsa -f ~www/.ssh/id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/www/.ssh/id_rsa.
Your public key has been saved in /Users/www/.ssh/id_rsa.pub.
The key fingerprint is:
74:50:7e:df:99:d4:d1:58:17:30:f4:65:fd:b1:23:4f root@test_host
The key's randomart image is:
+--[ RSA 2048]----+
| ... .+.=O|
| o +oB|
| . o . o=|
| . . . o.E+|
| S =oo|
| . |
| |
| |
| |
+-----------------+
$ sudo chown -R test ~www/.ssh
$
Note: You enter an empty passphrase for the key - that is very important.
5. Create an .ssh directory in the remote user's home directory, if it does not exist yet:
$ ssh -l remote_user remote.com 'mkdir -p ~/.ssh'
Password: <enter remote_backup password>
$
6. Copy the public key to the remote host:
$ sudo cat ~www/.ssh/id_rsa.pub | ssh -l remote_user remote.com 'cat >
~/.ssh/authorized_keys'
Password: <enter remote_backup password>
$
7. Now we have to add the remote host to the list of known SSH hosts:
$ sudo -u www -s
$ ssh -l remote_user remote.com
The authenticity of host 'remote.com (192.168.1.100)' can't be
established.
RSA key fingerprint is 4e:fd:4e:74:9f:b1:87:c4:d0:da:45:3a:02:09:a2:61.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.100' (RSA) to the list of known
hosts.
$ exit
$ exit
Note: You are not asked for a password when running the ssh command. Setup is now
complete.
Scheduled Backups
To perform scheduled backups, either local or remote, follow these steps:
• Check Scheduled backup enabled, and click on Save to save this new setting.
• Ensure the scheduler is running. (See the section entitled Scheduler Setup)
• In Admin - System Settings - Scheduler, check that external triggering of the scheduler is
working correctly. Then locate the Run Backup scheduler task in the list of tasks, and make
sure it is Enabled, with a Run Interval of perhaps a Day or a Week.
Note: While the system will automatically limit the number of backup files retained to the maximum
you have specified, running daily backups can become very expensive in terms of remote data
transfer costs, and server loading. Use scheduled backups with great care, and with these costs in
mind.
Restoring a Backup
Before restoring a backup, you will need to have the following items available to you:
You begin the restore process by simply running the restore.php file in your 1CRM installation
directory. For example, if you normally run 1CRM by sending your browser to http://demo.1crm.ca,
then in this case enter the URL http://demo.1crm.ca/restore.php.
Right at the start of the restore process, you will be asked to create a special file restore_key.txt to
prove that you have full access to the server. The screen will show you a key value which you paste
into a new text file and then save as restore_key.txt in the root of your 1CRM installation folder. Then
click on the link try again, to confirm you have access. You can also use the Start over link at any
time to re-start the entire restore process.
Next you will be prompted to select and upload the backup archive. If the backup file contains your
database information (in addition to any installation directory files) then you will also be asked for key
MySQL information: Full path to mysql executable, mysql user name, mysql password, mysql
database name. Now click on Submit, and if the MySQL values all work properly, your backup will
now be restored, and the backup process will proceed to completion. You’re all done!
Encrypted Backups
1CRM can optionally encrypt the backup files it creates.
The encryption is performed using symmetric cryptography. The basic property of symmetric
cryptography is that different keys are used for encryption and decryption. Once the data is
encrypted with the public key, it cannot be decrypted without the private key. The public key and
private key together form a key pair.
Setup
Enabling backups encryption in 1CRM requires a few preparation steps.
First of all, the server running 1CRM must have zip and openssl programs installed. If your 1CRM
instance runs on our 1CRM cloud, these programs are available. To check if backup encryption is
available, open Backup Management in 1CRM Administration and look at Encryption is available. If it
is checked, then you can use backup encryption, otherwise you will see a description of the issues.
Then you need to generate a key pair. To do so, you need a computer with openssl installed. If you
are using MacOS or Linux, openssl is normally immediately available. For Windows, openssl can be
obtained from https://slproweb.com/products/Win32OpenSSL.html
To generate a key pair, open up a terminal/console window and execute the following commands:
These commands will generate your private key, a certificate file with your public key, and an
intermediary request file. You can remove the intermediary req.pem file.
openssl req will ask you for a private key password and a confirmation of that password. This
password will be required for backup decryption, so make sure you remember it. Also, the program
will ask for a few additional pieces of information. What you enter in response is not important, just
make sure you give a non-empty answer to at least one of the questions. Make sure that when asked
for a challenge password, you just press Enter.
openssl x509 will ask for a password - use the private key password you gave to openssl req.
Next, move the privkey.pem file to a secure location, such as a flash drive stored in a safe place.
You will not need this file until there is a need to decrypt a backup.
Now, open cert.pem in a text editor and copy the file contents. Open Backup Management in 1CRM
Administration, and paste the certificate into the Encryption certificate field. Also make sure you
check the Backups encryption is enabled checkbox. Now, click Save. You may want to keep the
cert.pem file in case you accidentally change 1CRM backup settings.
After finishing the setup, it is recommended that you create a backup, download it and then try to
decrypt it, in order to confirm everything is set up correctly and you are able to decrypt your backups.
Decryption
Whenever you need to decrypt a backup, you will need the backup file itself (it will have a name like
backup_20200805_053355.zip.enc), your private key password, and your private key
(privkey.pem). Execute the following command in terminal/console:
You will be asked for a password. Use the private key password you created earlier. If decryption
was successful, a decrypted.zip file with non-zero size will be created.
Figure 109: Select the Help Pages Module Then Click On Upload
Upgrades & Customization is used by browsing to choose the .zip file for the upgrade, and clicking
on the Upload button. Uploading the file only queues the upgrade files for installation – it does not yet
perform the installation. Figures 109-115 illustrate the entire process for uploading the User Guide
module for 1CRM Release 8.0.
First we see the selected module in the Choose File field. Now click on the Upload button, and we
see the next screen, which indicates that the module has been successfully uploaded.
Now click on the Install button, and the system will prepare to install the module.
The package installer first unzips the zip file you uploaded. Assuming that goes as planned, it then
checks the system configuration, and displays its compatibility with requirements. In the Figure above
we see an all-green status, which indicates that you are safe to proceed with the upgrade.
Next we see (above) Step 3 of Preparing Package Installation, which is when the system checks the
file permissions are set correctly for the package to be installed. Assuming that checks out fine, you
see the Proceed button which you can click to begin the actual package installation. Once you do so,
you will see this dialog box.
Now click on Continue. The Continue button will now display Please Wait, and the system proceeds
to perform the actual copying of the package files, record an audit record of the package installation,
and perform several housekeeping tasks to ensure the system is healthy after the installation. Then
the next dialog box is displayed, as shown in the Figure below.
Lastly, you then click on the Continue button to complete the installation. The system will then
automatically perform the final cleanup after the package installation.
Now you just click on the Finish Upgrade button. The Upgrades & Customization screen will display a
history of all the modules that have been queued or installed.
This screen (see Figure below) can also be used to un-install modules such as Language and
Theme modules. Simply choose the module to remove and click the Uninstall button. You cannot
uninstall upgrades to new versions and system patches, so make sure you take backups prior to
applying them. The process of package removal closely resembles that of installing a new package,
with much the same flow of dialog.
After major upgrades every user will receive a System Notification providing information about the
changes contained in that upgrade, to ensure they are aware of it.
After the Diagnostic process is completed, you can use the links provided to download the diagnostic
information, or to delete it.
To simply view the entire system log, click on All. You will need to scroll down to the bottom of the
(potentially very long) resulting screen to see the latest events in the log.
You can also use the Mark Point button to mark the current time in the log, so you can then see only
what happens after that, by clicking on Next >>.
As well, you can search the log for specific text, if you are looking for something in particular.
This is a very necessary capability, and a very important one. But equally important is to understand
that importing data into your 1CRM system can pollute your system with poor quality, or badly
imported data. In cases like these, it is critical to be able to go back over your imported data and
examine it, and potentially edit or delete it. That’s exactly what this admin module is for.
The above order in which the thirteen importable modules are presented is significant. If you are
importing data from another CRM type of system, you should begin with Users, and carry on through
to Notes, in that order. If you have no data to import for a given module, it is generally OK to skip it,
but important modules like Users, Accounts and Contacts will likely cause problems if you skip them.
This is because the imported data includes information such as Account and Contact names and IDs
which are used to help link all associated data together into a real CRM database, not just a number
of unrelated lists of information.
The recommended import order for the modules listed is critical, as it ensures that no item being
imported will refer to an item in a module that has yet to be imported. It is also important that if you
are migrating full system data across into 1CRM from another CRM-type system, that you export it all
from the other system at the same time (a snapshot, if you like, across all the modules) and then
import it all at the same time. This helps to ensure that all the data taken together represents a single
consistent database.
Once you have imported some data into 1CRM, you will see that data represented in this Manage
Imported Data screen. At the top left of the screen is a control you use to filter (from the modules
listed above) for the module for which you wish to see data. At the control’s default - None - position,
you will see all imported data, for all modules.
As shown above, you can review imported data for a selected module, such as Contacts. You can
click on the Name of any record to view the record details. And you can use the button to
Accept or Reject selected entries. We strongly recommend that you fully review the data from each
import session, and Accept or Reject all of that data, before you perform another import. Used this
way, this screen will always show you only the data from your most recent import session, as any
previous imports will have been removed from this screen when they were accepted or rejected.
Notice that the button offers Accept Import and Reject Import and Delete as options, in
addition to simple Print and Export options.
• Accept Import - simply removes the selected history entries from the import history screen. In
effect, you are telling 1CRM to forget they were ever imported. Presumably because they
have all been checked, and found to be valid records. Think of this option as saying ‘These
records are good. Accept them as a permanent part of our database.’
• Reject Import and Delete - this option removes the selected records from your 1CRM
database, as well as removing the history entries that they were imported. Think of this
option as saying ‘These records are bad. Reject them and remove them from my database,
and remove any record of them having been imported.’
Note: Although this feature can go a long way to helping you un-do potentially damaging imported
data, we still recommend that you take a system backup before any import session, so that you can
revert to that backup if the import session is unsuccessful, and lowers the data quality of your 1CRM
database as a whole.
The Storage Utilization screen also allows you to configuration Storage Notifications:
• Notify on Storage Low - Enable this toggle switch to have the system send storage utilization
emails
• Notification Type - Notifications are to be based on Available Storage in GB, or as a % of
Total Storage
• Notify on % Used / GB Free - Specify here the number of GB or percentage below which you
wish to be notified
• Notification Email Address - Specify the email address to which storage utilization alert
emails and scheduled storage utilization emails are to be sent
• Receive Scheduled Storage Reports - You may set this to None, or choose Daily, Weekly or
Monthly to receive regularly scheduled reports summarizing the storage utilization of your
1CRM system.
Note: If you are running in the 1CRM Cloud, your system will also send Storage alert emails to us at
1CRM to let us know if you have exceeded your storage allocation on the Cloud, or if your system is
simply running low on available storage.
7.3 Users
7.3.1 Users: User Management
User Management is used to create, edit, and activate/deactivate users of the 1CRM system. The
User Management screen is shown as Figure 121 below.
On this screen, an Administrator can search for a user, or simply click on a user name to select their
profile to edit. Once a user profile has been selected, the Administrator may change the password,
edit the profile, or duplicate the profile, using the methods described in the My Account section.
Note: Users must have a valid email address in order to receive email notifications.
Note: Users may not be deleted once created. They may only be marked Inactive, and perhaps
eventually ‘recycled’ by renaming the user for re-use by a new employee. Inactive users do not count
against the number of users you have licensed.
1CRM meets this need by allowing administrators to set up multiple Teams of Users that reflect their
organization's structure. They can then link or assign those Teams to individual records manually or
automatically, depending on their preference. Each data record in the system (such as a Contact, a
Case, an Invoice or a Meeting) can be linked to multiple Teams if desired, addressing the need that
most organizations have for somewhat haphazard and flexible dividing lines for data access control.
To initially configure data access control within 1CRM you will need to do four things:
1. Define a set of Teams that reflects the structure of your organization, with a Team for each
part of the organization that has its own unique characteristics as regards the need for data
access control. (Smaller organizations might not need any Teams defined.)
2. Assign all the data records in 1CRM to one or more Teams. (You can do this using the
Teams: Mass Assign field at the bottom of each list view screen, at the end of the Mass
Update panel). (Not required for smaller organizations with no Teams.)
3. Configure Team Inheritance Rules within the Access Control Settings screen to define the
manner in which you would like the access control system to behave. Each Team also has
the option of being marked as Non-Inheritable.
4. Assign each Team to a Role that you create to define the access level of Users that belong
to each Team. (Not required for smaller organizations with no Teams.)
Some of the key principals of the 1CRM security model are as follows:
• The three components of the security model are Users, Teams and Roles.
• Users may be assigned to zero or more Teams.
• Users and Teams may both be assigned Roles.
(This enables the admin to give a certain level of access to a Team, but at the same time
give a specific User that might belong to that Team more or less access.)
• Teams consist of a set of Users, and determine which records or modules those Users have
access to.
• Roles determine what level of access a User or Team has to those records or modules (i.e.
can you see it, edit it, delete it, import/export it, etc..).
• The system allows the admin to deny access to any specific data record for a User, or for a
Team.
• The system allows the admin to delegate the assignment of Roles and Teams to a non-
admin User.
• Data access rights apply not only within the 1CRM user interface, but also over the web
services APIs used by 1CRM.
Teams are the gateway that determines what data each User can access, while Roles determine how
they may work with that data. Once you learn this basic principle, understanding data access control
within 1CRM should become much easier.
Note: For those with a desire for an in depth study of the theory behind 1CRM’s Access Control
system, you are referred to the paper “A three tier architecture for role-based access control” by Ravi
S. Sandhu and Hal Feinstein, in 17th NIST-NCSC National Computer Security Conference.
When you select the Role Management option from within the administration area, you will see the
Roles List View screen. It lists the Roles defined within the system, and also offers shortcuts to
create a new Role, or view/edit the system’s Default Role.
If you would prefer not to have any restrictions on who can see what data within your 1CRM
installation, simply leave the default Role set to its initial values, which have most settings for every
module set to All.
When your system is new, before you define any additional roles, all users have access permissions
as determined by the default Role. These restrictions will continue to be in effect for any users not
assigned to any other Roles that may be defined. The system administrator defines the Default
Role’s Access and available Actions (Delete, Edit, Export, Import, List, Report and View) for each
module, in order to define the default restrictions for all users in the system.
Note: In addition to the Default Role, each system includes another Role - Data Privacy Manager
(DPM). Any user assigned to this Role will have DPM rights - for more details see the 1CRM &
GDPR document.
Note: Users with system administration capability have special system access, and can see all data
in the system, other than HR data.
First – let’s practice creating a simple Role, which only controls system access for those Users
assigned to the Role. For example – sales staff will want access to the opportunities and dashboard
modules – marketing staff will want access to the campaigns module – but perhaps not all staff will
need access to all of these modules. As you can see in Figure 123 below, each Role defines the tabs
visible to the Users assigned to the Role, using the Enabled / Disabled setting in the Access column.
To create a simple Role of this type, click the Create Role shortcut, and type a name for the Role. In
the first column are the names of all the principal modules in 1CRM. Select the modules to include
for the Role by clicking on the cell values in the Access column, and then save the Role.
To assign Users to this Role, on the detail view for each User, select the Access Control tab and then
scroll down to the bottom of the screen and click on the Add Existing button to select the Role.
Note: When a Role excludes access to a module, access is also removed to the sub-panels in other
modules which relate to the excluded module.
Next, let’s look at the more ‘fine-grained’ access restrictions which the system offers. Re-edit the
sample Role that you just created to have a look.
As we have seen, for each module Access may be set to Enabled, Limited or Disabled. Additionally,
for each module the Actions that may be performed on data in the module (Approve, Delete, Edit,
Export, Import, List, Report and View) each have an option set to None, Admin, Owner, Role, Team
or All.
In the figure below, we see an Executive Role defined, which allows its members full access to all
data in the system. Notice that the Executive Team is linked to the Role.
When a new role is defined, most permissions for each module are set to Enabled (for Access) and
to All (for the actions of Access, Delete, Edit, Export, Import, List, Report and View). Each module is
turned on or off using the Access (Enabled/Disabled) setting. All the other settings control a user’s
ability to perform a specific action on data within the module. These actions are as follows:
Access
The Access option can potentially control all the other settings below. When set to Limited
access, the administrator may only define individual values for List and View actions, while
all others (Report, Import, Export, Edit, Delete) are forced to Admin. When set to Enabled,
the administrator has the ability to fine tune all actions. When set to Disabled, the module
disappears from the menu system and sub-panels.
View
The View option controls which data the user will be able to see on a Detail View within this
module. It controls which data items the user will be able to click on from the List View to see
in a Detail View. As well, it also disables the user’s ability to navigate from sub-panels in
other modules to the detailed view for data records for which the user does not have View
privileges. Any other attempt to navigate to these records will result in an error message.
List
This option controls which data the user will be able to see in the List View of this module.
Edit
Controls the user’s ability to Edit data items in this module. If set to None, then the Edit
button will be disabled on all detail views for this module. As well, the Mass Update Panel at
the bottom of List Views will not update records for which the user does not have Edit
permission.
Delete
Controls the user’s ability to Delete data items in this module. If set to None, then the Delete
button will be disabled on all detail views for this module.
Import
This option may only be set to All or None. If set to None, the Import shortcut (if there
normally is one) is not visible for this module.
Export
If set to None, then the Export option of the Action button located at the top and bottom left of
the List View will be omitted for this module.
Report
This option controls which data records the user will be able to access when preparing
reports from data in this module.
Approve
Controls the user’s ability to Approve data items in this module. If set to Disabled, then the
Approval function will be disabled on all detail views for this module. Currently available for
Quotes, Booked Hours, Timesheets, Expense Reports and Vacation/Sick Days.
Personal
This option enables a user to erase the data in fields of this module which are marked as
Personal Data. Erasing Personal Data fields also erases the Change Log entries for those
fields. As well, this option enables access to Personal Data views, detail views which only
display fields marked as Personal Data, regardless of their visibility in any layout.
For each module, some of the actions also require other actions to be set before they may be
Enabled:
Create Team
Use the Create Team shortcut to define a new Team, for the purposes of managing data sharing and
security within 1CRM. As shown in the figure below, just give the Team a name, a description, and
decide if it should be inheritable or not. Check the box provided if the Team’s access rights are not to
be inheritable.
A Team with inheritable access rights may be inherited by a new record when it is created, according
to the Team Inheritance Rules defined in Team Settings. A Team that is marked as Non-inheritable
will not be inherited by a new record in this manner.
The figure above shows the default Access Control Settings when 1CRM is first installed.
If this box is checked, Users will get the the broadest (maximal) access rights of any of the Roles to
which they or any of their Teams are assigned. Otherwise they will get the narrowest (minimal)
access rights of any of the Roles to which they or any of their Teams are assigned.
The effects of the settings for Team Inheritance Rules are as follows:
If this box is checked, then when creating any new data record, the record will inherit all the Teams
assigned to the User who creates it.
If this box is checked, then when a new record is created, the record will inherit all the Teams of the
User assigned to the record. Any other Teams assigned to the record will not be removed.
If this box is checked, then when a new record is created, the record will inherit all the Teams of the
Account to which the record is related, if any.
This is the default state of the system when it is initially installed. Each user has no explicit Role
assignments, so the default Role apples to them. No Teams are defined, and no Teams or Users are
explicitly linked to a Role. No Users are linked to any Teams.
Additive Rights
For this example, let’s assume that a User Chris is assigned to two Teams, Sales and Support.
1. Sales is assigned to a Role that has Delete – Team rights to Accounts in its permission
matrix.
2. Support is assigned to a Role that has Delete – None rights to Accounts in its permission
matrix.
With the Additive Rights option in Team Settings turned off Chris will not have the rights to delete any
Accounts. With this option turned on Chris will have the rights to delete Accounts assigned to his
Team.
To accomplish this the manager is assigned to Team A and Team B. This only gets him read only
rights (since the Read Only Role is assigned to both Teams A and B). So a Role called Edit is created
and assigned directly to the manager. Of course, this example is simple and could also be achieved
by creating a Team Manager and assigned the Edit Role to the Team Manager directly. Basically, the
ability to assign Roles to users directly allows the admin to cater for special cases.
7.4 Email
7.4.1 Email: Email & Notification Settings
This screen is used to configure system email notification options. The screen contains five separate
sections. The first section is used to define the Email Notification Options associated with the emails
that 1CRM can send to Users when they are assigned new responsibilities.
Email Notification Options can also enable and disable the email notification system, and establish
the default notification setting for new Users. These settings also determine if notifications are sent
when Cases are created or changed, and if those notifications are sent only to Users related to the
Case, or to related Contacts as well.
Section two defines how general email sent by the system (not by a user) will be sent. This includes
the user name and email address from which the email will be sent, as well as the Mail Transfer
Agent (MTA) to be used.
Note: The SMTP (Simple Mail Transfer Protocol) MTA should be selected if your system is running
Windows. If your system is running Linux, either the SMTP or sendmail MTA may be selected,
depending upon how your server is configured. On 1CRM Cloud, you must use SMTP, not sendmail.
• If the SMTP MTA is selected, you must also specify the SMTP server name, and port number
(default is 25) used to communicate with SMTP.
• If Use SMTP Authentication is selected via the checkbox provided, the SMTP Username and
SMTP Password to be used must also be provided.
• If Secure SMTP is set to either SSL or TLS, you will also need to set the Certificate
Validation dropdown. Email servers should have certificates to confirm their identity. This
dropdown sets the conditions under which 1CRM will allow an email to be sent via the
specified SMTP server. Available options are: None (Send email even if no certificate on the
server), Self-Signed OK (At least a self-signed certificate is required in order to send email),
and Require 3rd Party (3rd Party Signed Certificate required to send email).
The second section also enables you to configure the maximum number of emails sent per batch,
when sending out large numbers of campaign emails via the email queue.
Lastly the second section has a toggle control to Enable/Disable Sent Email Tracking in 1CRM. In
order to use email tracking you must turn on this toggle switch, and also enable a scheduler task
(Update MaxMind GeoIP Database) which downloads and updates the MaxMind IP tracking
database.
When Sent Email Tracking is enabled, two fields are added to the Email detail view - First Opened
and Open Count. Also, a subpanel will be added to the Email detail view, to display the history of
email opens.
Note: There is an issue with Gmail - it uses a proxy to download and display images, so when email
is opened in Gmail, one cannot detect the user location from the IP address. Accordingly, if a request
comes from the Google image proxy server, no attempt is made to lookup the user location.
The third section of this screen is used to control the system’s actions as inbound email is received.
Each inbound email is automatically linked to a contact in the system, if the sender’s email is a match
to either of the email addresses on any of the contact records in the system. If this checkbox is
selected (which it is by default), the system then goes on to lookup the account for that contact, and
relate the incoming email to that account as well (assuming there is one). Other controls mark
domains not to link up on receipt of emails, and the import batch size for incoming emails (too large a
batch can produce perceptible slowdowns for users).
The fourth section of the screen is used to configure the default email format (HTML or text), email
client, and character set for all users.
The fifth section enables the retention of Raw Email message text. This uses a lot of storage space,
and system processing, and should only be enabled for debugging email operations.
As an administrator, you can monitor these emails as they are sent. You can also delete emails that
are waiting to be sent. You can view information on each email such as Campaign, Recipient Name,
Recipient Email, From Name, From Address, User Name sending the email, Send On date, Send
Attempts, and In Progress status. The Mass Emailing Queue Manager only displays emails created
through email campaigns, not emails created using the Email module.
To delete an email that is waiting to be sent, click the check box next to the email and click the Delete
button. Click Check All to select all the emails in the list.
Any number of Group Inboxes may be defined. One or more email addresses may be monitored, and
incoming mail retrieved (see figure below). Each new Group Inbox that is defined must specify the
Group Email Folder into which the received email is to be added. Each Group Inbox must also
specify the Possible Actions that may be performed automatically on receipt of an email in this box.
Possible Actions include None, Bounce Handling (you must use this option for a Group Inbox you
will use with an Email Campaign), Create Case and Create Bug. If you use the Create Bug or Create
Case options, a new Bug or Case will be created automatically each time an email is received into
this Group Inbox, and the body of the email will be pasted into the detail record of the Case or Bug.
When using a Group Inbox for Bounce Handling, each email received will be scanned for evidence
that it is a bounced email. If the conditions for this are satisfied, the Contact or Lead or Target
involved will be marked as having bounced, and the bounce total for the Campaign will be
incremented. Then the bounced email will be deleted. If the email cannot be recognized as a
bounced email, it will simply be placed in the Campaign Responses folder by default, or another if it
is named in the definition of the Group Inbox.
All email received by any Group Inbox (except one doing Bounce Handling) will be placed in the
Group email folder specified - and sometimes (via Possible Actions) they will also automatically
create a Case or Bug. When Possible actions for a mailbox is set to Create Case, an additional
option becomes available: Automatically create contacts. When that option is set, and a case is being
created from an email from an unknown contact, a new contact record will be created, and linked to
both the email and the case. Contact Email address is set to sender's address; if the From: header in
the email contains the sender's name, then first and last names of the contact are set accordingly;
otherwise the first name is left empty, and last name is set to the sender's email address.
7.5 Studio
In 1CRM, the Studio is a term applied to a series of tools provided for the Administrator to customize
the CRM for your specific needs. As you can see below, these tools cover a wide range of
capabilities. In overview, they perform the following functions:
• Layout Editor – used to customize normal Edit/Detail layouts plus Quick Create layouts
• Custom Fields Editor – defines new fields, which then may be used in layouts
• Dropdowns Editor – used to edit values for standard or custom dropdown fields
• Smart List Tab Sharing – for sharing Smart List tabs among users
• Workflow – used to define workflows that automate business rules
• Configure Group Tabs – let’s you re-arrange how modules are presented within tab groups
• Configure Module Tabs – used to suppress the display of selected modules
• Rename Module Tabs – let’s you rename specific modules
• Module Designer (Enterprise Edition Only) – Used to define new custom modules, their fields
and their relationship to existing modules. As well, it enables the admin to edit (for both
custom and standard modules) which fields appear on the Mass Update panel, which fields
are tracked in the ChangeLog, and which fields are required.
• PDF Form Designer (Enterprise Edition Only) – Used to define modified or all-new custom
PDF Forms, to use when printing Invoices, Quotes, Service Work Orders, etc.. (an
Enterprise Edition Only feature).
Note: Studio customizations may be moved from one 1CRM server to another by using the Create
Personality Pack shortcut provided in the Upgrades & Customization option of Administration.
Begin by selecting the name of the module you want to customize. Choose the module name from
the list of modules displayed, as shown below. Then you will see a set of layouts to choose from. The
images in Figure 132 below show the options presented in Accounts and Contacts.
Notice that for Contacts, for example, there are options for the Standard Edit / Detail View layout and
for the Quick Create layout. Similarly, the Accounts module offers the same layouts. As you can see,
most aspects of the 1CRM presentation screens may be customized using the Layout Editor.
Figure 133 below illustrates editing the Accounts Standard layout. Notice that each layout consists of
one or more sections. Each section has one or more rows, and each row has two data fields within it,
side by side. The main screen display area is your staging area, as it is just a copy of your screen
layout, which you can choose to commit (using the Save Layout button) or not after doing some
editing. The editing functions available to you are:
• Add a field from the floating Available Fields list on the left into the staging area. Custom
fields are listed first, followed by the Standard fields. Just drag the field into an open position
in the layout. If you drag it onto an occupied position, the field previously in that spot will be
relegated to the Available Fields list.
• Move a field from one position in the layout to another, by dragging it. If you move it to a
position that is already occupied, that field will be swapped with the one you are moving.
• Remove a field from the current layout by hovering over it, and then clicking on the that
appears at the right of the field name.
• Change the name label for any field already in the staging area by clicking on that field. The
Edit Element popup will be displayed, allowing you to enter a new name label for the field.
• Change which field to use at any position already occupied in the staging area by clicking on
the field at that position. The Edit Element popup will be displayed. Use the Field dropdown
to select a different field to be positioned at this position in the layout.
• Add, remove or re-arrange fields in the top panel (which has no ✚ add row control) by
clicking on any field in that panel. The Edit Element popup will be displayed, including a
special Add Field dropdown to select a field to add, as well as controls to re-order fields.
• Add a blank new row to the layout using the ✚ miniature icon to the right of the row. The new
row will be added above the current row. You may also add a row using the ✚ add row
control at the top of each section. It will add a blank row at the bottom of the section.
• Remove a row by clicking on the miniature icon to the right of that row. Any fields
positioned on that row will be added to the Available Fields list.
• Add a blank new section by clicking on the ✚ add section link at the top right of the staging
area. The new section will be added at the bottom of the layout.
• Remove a section by clicking on the remove section link at the top of each section.
• Move a section by clicking on the up / down arrows at the top left of each section. This will
move that section up or down a spot in the section order.
• Rename a section by clicking on the section name (which is a small empty box when no
section name has yet been defined) to edit it.
Click on the Save Layout button to save the results of a good editing session, or click on the Cancel
button to abandon your edits if you don’t like how things turned out.
Note: If you ever really make a mess of a layout, and mistakenly save it and want to start over, you
can reset it to defaults. Use the Restore Default Layout option on the button available only to
Administrators, at the top right of the relevant Edit or View screen within the application itself.
Note: You can also access the layout editor for any of the system’s Edit/View layouts by simply
clicking on the button available to Administrators at the top right of Edit or Detail View screens,
and choosing the Edit Layout option.
Note: Using the same button available to Administrators on edit and view layouts, you can
choose the Create Mobile Layout option to define the Edit/View layout as seen when using Mobile
Access. This lets you add custom fields to mobile layouts as well.
To create a new field, click on the Create button on the Custom Fields list for the module selected.
That will lead to a screen like the one on the left in the Figure below, where you first select the Data
Type of the field from a dropdown list. Options are:
Next set the Field Name, Field Label (the label displayed on screen), Audit Enabled? (should this
field be tracked in the Change Log?), Personal Data? (does this field need to be treated as sensitive
Personal Data subject to General Data Protection Regulations?), Mass Update? (should it appear on
the Mass Update panel for this module?), Required Field?, and Default Value. (A valid field name
must start with a letter, followed by zero or more letters, digits and underscores.) Merge Duplicates
determines if this field can be used to detect and control the merging of duplicate records. Available
in 1CRM Mobile will cause this field to be displayed in the 1CRM Mobile App if it is selected.
Note: Be extremely cautious if you define a custom field, and set it to Required, but do not define a
Default Value. This can lead to issues such as the inability to save new items in the module involved,
as the record is deemed invalid with no value in the required field. Unless there is some critical
reason not to, always define a default value for required fields.
Some field types have different fields you will need to fill in. For example Text and Integer fields have
a Max Size value, and a Dropdown or Multiselect List field needs to refer to a pre-existing Dropdown
list from which it takes its values.
After saving a new field, you can view and edit information about the field in the Custom Fields list for
the module. In the Layout Editor, you can place the custom field on the module’s Edit/View layout by
dragging it to the new location from the Available Fields list, just like any other field. Custom fields are
shown at the top of the list in their own section. (See the section on the Layout Editor.)
Dependent Fields
On the left of the Figure above we see that a Custom field (and using the Module Designer, even
standard fields) can have a Depends On setting. You can use this to make a field be visible only
when it is needed. The Depends On field has to be a Dropdown type field, and you can select one or
more values for that field that will cause your custom field to be visible.
As the controlling field value is changed, you will notice that the edit and detail view screen layouts of
the module concerned are adjusted dynamically to either show or hide the field that depends on it. By
defining multiple dependent fields you can make whole sections of a screen be shown or hidden -
and any blank extra rows in the screen form will be suppressed to keep things looking good.
A special feature of Dependent Fields come into play when it is itself a Dropdown field - as shown on
the right side of the Figure above. By changing the Data Type to Dropdown, we see that Conditional
Options are now displayed. This provides you with the capability to choose which dropdown values
are offered on your custom field, depending on the value of the controlling field. You can choose a
variable set of values to be shown for each value of the controlling field.
To use the Dropdowns Editor, choose the language you want, and typically leave the Module
dropdown set to Application. Select a name of a dropdown list from the Dropdown Name control. For
example, account_type_dom is the first option on this list. If you select that option you will see a list
of the Account Type options as shown below.
For example, you might define a Smart List tab for the Accounts module called AR List, and set it to
show only Accounts with a Non-Zero Balance, sorted Descending on Balance Receivable. This might
well be useful to all users of the system, and so may be assigned to All users. It will now become
visible as a new Smart List tab in the Accounts list view for all users.
Workflows are defined in the Workflow module – which may only be accessed from the Admin
screen. Once you are in the Workflow module, click on the Create Workflow shortcut to create a new
Workflow. Within the Workflow edit view, there are four main sections:
• Applies to: Choose if the Workflow is to be applied to to New Records Only, Existing
Records Only, or New Records and Existing Records in the selected module.
• Execute as: Choose who is seen as the ‘current user’ while this workflow is
executed - User who triggers workflow, Administrator, Record owner.
3. Conditions: In this section, you define the conditions in which the Workflow should be
performed when a record in the module you select is Saved, or Deleted. You can add any
number of filters, or filter groups, which are based on the values of any of the fields in the
record structure for the module you selected.
Filter Groups:
1. Use the button to add a new filter group - a grouped set of
conditions. When you add a new Filter Group, you will see a new line added
beginning Group: with a dropdown control with the options as follows:
• All Of: All the conditions indented under the Group must be true
• Any Of: Some of the conditions indented under the Group must be true
• None Of: None of the conditions indented under the Group may be true
• Not All Of: Not all of the conditions indented under the Group may be true (so if
only some, or none of them are true, that’s fine)
2. After creating a Filter Group, you can then add filter conditions to that group with the
button.
Note: Use the control to drag a filter left and right, to indent it under a filter group, or
un-indent it from one.
4. Actions:
• You can perform a single action, or create a list of multiple actions.
• You can add actions using the ✚ add action link (below any existing actions).
• Clicking on ✚ add action produces a popup dialog box to define that action. Once
saved, the action details are added to an assembled list of actions in this panel.
• As defined in the popup dialog box, each of these actions may be performed after
the trigger event, and some of them optionally may be performed after a delay.
• You can edit any existing action using the control to the top right of the action.
• You can remove any existing action with the control to the top right of the action.
There are ten different types of action that may be performed if the conditions are met for the
Workflow. Your choices for types of action are as shown in this Figure:
An example of creating a Workflow is shown in the figure below. In this example, assigned Leads that
have a promising Temperature which have been ignored for two days cause a reminder email to be
sent to the user to whom the lead is assigned. Note the ability to email the user responsible for the
workflow being triggered. The use of an email template allows variable fields to be inserted in the
email body content.
• Value changed to
• Check current value
• Check previous value
• Value is changed
• Value is unchanged
When setting the Filter value, the rules will vary depending on the Field Type of the Field you have
selected, as well as on the When value you selected. For When values of Value is changed, and
Value is unchanged, you will need no Filter value at all. For the other When values (Value changed
to, Check current value, Check previous value):
• For Field Types Text, Multiline Text, Email Address, Fax Number, Phone Number, Name,
Skype ID, and URL your Filter consists of a dropdown selection from these options:
Contains:, Equals:, Starts with:, Ends with:, Doesn’t contain: and Not equal:, followed by a
text field to test against.
• For Field Types Status Indicator or Drop-down Selection your Filter consists of a dropdown
selection from these options: Any Value, Equals:, Not equal:, Any of:, None of:, Empty, and
Not empty, followed by a selection from the options contained in your dropdown list.
• For True or False Fields your Filter options are simply (none), Yes or No.
• If you select Any Date, Empty or Not empty then the filter is complete.
• If you choose Select month... then simply choose one of the 12 months, and the filter is
complete.
• If you choose Current... then simply choose one of the options (day, week, month, quarter,
year, fiscal quarter, fiscal year) and the filter is complete.
• If you choose Before date... or After date... then you have a single date comparison filter. You
will be prompted to choose one of these options:
• If you choose Select date... or Select date field... from the list in Figure 140 then you have a
dual date comparison filter. If you choose Select date... this displays a calendar picker to
choose a specific date for your first date. If you choose Select date field... this lets you
choose the value of any date field in the current module as your first date. In either case you
then need to specify your second date, by using the next seven options presented:
In the figure above, we see the first date to be used in the comparison (in this case Email
Opt in Date) followed by the choice of seven comparison options. Simply select one of these
options, and the filter is complete.
- Selecting To end of... sets the second date to the end of the current day, week, month,
quarter, year, fiscal quarter, or fiscal year.
- Selecting Within range... lets you choose a date range specified as a number of days,
weeks, months, quarters, years, fiscal quarters, or fiscal years before or after the date
selected as the first date. The setting shown below indicates a 4-week period from 2
weeks before today to 2 weeks after. The dropdown control also allows you to select
Next or Previous, to choose just the 2 weeks before or after the selected date.
- If you choose To custom offset... ... you can set the second date as a number of days,
weeks, months, quarters, years, fiscal quarters, or fiscal years either before or after the
current date (there is a dropdown for plus or minus).
- Selecting Done simply means that the two dates are set to the same date - i.e. the date
range is simply that one date.
• If you choose Offset date... from the list in Figure 140 then you have a dual date comparison
filter. For the first date you have a choice of three options:
- Start of... lets you choose a date at the start of the current day, week, month, quarter,
year, fiscal quarter, or fiscal year.
- End of... lets you choose a date at the end of the current day, week, month, quarter,
year, fiscal quarter, or fiscal year.
- Custom offset... lets you choose a date which is a specified number of days, weeks,
months, quarters, years, fiscal quarters, or fiscal years either before or after the current
date (there is a dropdown for plus or minus).
When selecting the second date you have the same options as shown in Figure 140 above.
• If you choose Within range... from the list in Figure 140 ... you may choose a date range
specified as a number of days, weeks, months, quarters, years, fiscal quarters, or fiscal
years before or after the current date. The dropdown control allows you to select Range,
Next or Previous, to choose just a period before or after the selected date or a range each
side of that date.
The first time it happens a pending action is created for 5 days later. But then if the next day the
value changes again, another pending action would be scheduled. To prevent multiple pending
actions from being queued up and all of them getting executed over time, the Unique flag will ensure
that as a pending action is scheduled it replaces any previous pending actions on that specific
workflow. So in this example the action would only be performed after there has been a solid gap of 5
days since the last activity with this Contact, as long as the Unique option has been selected.
Users can then further modify their own personal module tab settings in the Display Options tab of
the My Account screen. Any tabs that an administrator removes cannot be added back by a user.
When the Administrator first enters the Module Designer, an initial screen is displayed as seen in
Figure 146. Your options are:
• To create a new custom module, just click on the Create Module shortcut.
• To make changes to an existing module, click on the link for that module.
Next, if you choose to make changes to an existing module, you will see this screen:
• To edit an existing module definition for a standard module (or a custom module you have
already defined), just click on the Edit Module link for that module
• To edit the existing fields for a standard module (or a custom module you have already
defined), simply click on the Edit Fields link for that module. You can also add new custom
fields with this option. Note that custom fields and standard fields are indistinguishable in this
list, as they are treated in exactly the same way.
• To edit the relationships for any module, just click on the Relationships link for that module.
• To edit the subpanels for any module, just click on the Subpanels link for that module.
• To edit the default List View filters for any module, just click on the List Filters link for that
module.
For an existing module, the Module Name is already defined, and not editable. Each module also has
a Default Tab Group, a Module Icon file, and a Module Title. An Access Level is also defined for each
module, which may be set to either Editable or Fixed. Most normal user-accessible modules have the
value Editable. Example of modules with a Fixed Access Level are Currencies, Monitored Email
Accounts, Outbound Email Queue, and Users - all used by administrators.
Once you have created a new module, you then need to go to the main screen of the module
designer and define the Fields, Relationships and Subpanels for your new module. It’s a good idea to
study this type of data for an existing module before implementing your own. Then you can use the
Layout Editor to define the Edit and List view layouts for your new module.
Note: It is entirely possible to damage your 1CRM installation through the use of the Module
Designer, as it is so powerful. Be sure to always use it in a planned session, and back up your entire
system first. Then test any new modules and existing modules once you have finished. Roll back to
the backup if you have any concerns. And always test on a ‘sandbox’ installation first. New modules
you add can never be removed - make sure you understand that and proceed with caution!
Edit Fields
The Field Editor (see Figure below) lists all the fields in the selected module: the field name, the label
to be displayed on that field, and the field type.
When editing a field definition, first select the Data Type of the field from a dropdown list. 1CRM
supports 21 different kinds of optional fields, which are:
Next set the Field Name, Field Label (the label displayed on screen), Audit Enabled? (should this
field be tracked in the Change Log?), Personal Data? (does this field need to be treated as sensitive
Personal Data subject to General Data Protection Regulations?), Mass Update? (should it appear on
the Mass Update panel for this module?), Required Field?, and Default Value. (A valid field name
must start with a letter, followed by zero or more letters, digits and underscores.) Merge Duplicates
determines if this field can be used to detect and control the merging of duplicate records.
Note: Be extremely cautious if you define a custom field, and set it to Required, but do not define a
Default Value. This can lead to issues such as the inability to save new items in the module involved,
as the record is deemed invalid with no value in the required field. Unless there is some critical
reason not to, always define a default value for required fields.
Some field types have different fields you will need to fill in. For example Text and Integer fields have
a Max Size value, and a Dropdown or Multiselect List field needs to refer to a pre-existing Dropdown
list from which it takes its values.
After saving a new field, you can view and edit information about the field in the Custom Fields list for
the module. In the Layout Editor, you can place the custom field on the module’s Edit or View layout
by dragging it to the new location from the Available Fields list, just like any other field.
Calculated Fields
Calculated fields are an especially powerful type of custom field. An example of their use is shown in
the Figure below.
The bottom of the popup panel includes a scrollable list of the available Functions, and an example
of their use is shown as a tooltip. A list of Fields available for you to use in your calculations is also
displayed. Just build your Formula by clicking on Functions and Fields, and by typing in any numeric
or text constants, additional parentheses, and any spaces you want for readability.
The Format field is used to specify the data type in which you wish the result to be stored - for
example you might want a numeric result to be expressed as a percentage, or a text result to be
evaluated and stored as a decimal number.
Here 12 and 2 and are arguments or parameters. You can insert another function call in place of
either of them, e.g. :
• add (multiply(3, 4), divide(10, 5))
The value of your custom field is the result of evaluating the formula you enter. Each formula must
have a top-level function, but as in general programming or mathematics it can use other functions
as its arguments. That creates a nested structure, and this nesting can be of arbitrary depth.
Numeric constants may be included in your formulas, as may string constants in double quotes.
Numeric constants may be integer or floating point values, and floating point values smaller than one
may be written without a leading zero:
• 12
• 12.345
• 0.1234 ( or .1234)
Available functions include: add, subtract, multiply, divide, pow, max, min, floor, ceil, equal, abs, log,
exp, negate, round, ifElse, ifNull, strlen, concat, stringToUpper, stringToLower, and substring.
Numeric functions:
• add(Number n, ...) : Returns the sum of the given numbers, for example: add(2, 1, 3) = 6
• subtract(Number a, Number b, ...) : Returns a minus b, for example: subtract(10, 5, 2) = 3
• multiply(Number n, ...) : Multiplies the supplied numbers, for example: multiply(2, 1, 3) = 6
• divide(Number a, Number b) : Return a divided by b, for example: divide(8, 2) = 4
• pow(Number base, Number exp) : Returns base raised to the power of exp, for example:
pow(2, 3) = 8
• max(Number n, ...) : Find the highest value among the given arguments, for example: max(2,
4, 7) = 7
• min(Number n, ...) : Find lowest value among the given arguments, for example: min(2, 4, 7)
=2
• floor(Number n) : Returns the next lowest integer value by rounding down the value if
necessary, for example: floor(4.3) = 4
• ceil(Number n) : Returns the next highest integer value by rounding up the value if
necessary, for example: ceil(4.3) = 5
• equal(item1, item2) : Returns true if item1 is equal to item2, for example: equal("hi", "hi") =
true, equal(1, 2) = false
• abs(Number n) : Returns the absolute value of the number, for example: abs(-2.5) = 2.5
• log(Number arg [, Number base]) : Returns the supplied base Log of arg, for example:
log(100, 10) = 2
• exp(Number arg) : Returns the value of e (the base of natural logarithms) raised to the power
of arg, for example: exp(0) = 1
• negate(Number n) : Returns the negated value of n, for example: negate(5) = -5
• round(Number n [, Number decimals]) : Rounds a number to a given number of decimal
places, for example: round(12256.24, 1) = 12,256.2
Logical functions
• ifElse(Boolean c, val1, val2) : Returns val1 if c is true or val2 if c is false, for example:
ifElse(true, "A", "B") = "A"
• ifNull(arg, default) : Returns default if arg is a null (undefined) value, for example:
ifNull(NULL, 0) = 0
String functions
If you like you can leave Related Type set at the default value ** Dynamic **. This creates a Dynamic
Related field, which looks like this in an Edit view: Here you see a
prefix of the module type, which is a dropdown the user can choose from. In this example it has been
set to Meetings, and is followed by a selected meeting.
Name Fields
Name fields are fairly simple. They are in general just the same as a normal text field. But when
displayed on a list view, Name fields will be shown with a hyperlink to the detail view of the item.
Status Fields
Status fields are similar to dropdown fields, in that they require you to specify a dropdown list which
contains the set of option values for the field. An example list to choose might be bug_status_dom,
or you can make your own list. These fields are displayed as status badges on detail and list views.
Edit Relationships
You can edit the relationships between the various modules of 1CRM using the Relationships link for
each module on the main Module Designer screen (see Figure below). To add a new relationship,
simply select a module from the dropdown, and then click on .
As seen above, the screen offers three columns: Related modules, the internal names for the tables
used by those related modules, and the names of the relationship tables used between the modules.
Note: While editing Relationships, you can remove new ones you have added in error. But once you
save that screen, any added Relationship is permanent. So again, as with all aspects of the
Module Designer, make sure you know what you are doing by planning carefully first. And back up
your entire system every time before you have a session with the Module Designer.
Edit Subpanels
You can edit the subpanels to be displayed on the detail view screen for a module by using the
Subpanels link for that module on the main Module Designer screen (see Figure below).
Using this screen, for each relationship defined for the selected module to another module you can
choose if a subpanel will be displayed for that related module on the detail view of the selected
module. You can also set a specific name for that subpanel - it does not have to remain set to the
default value of the module name.
New forms are visible to the user when using the button on the detail view of the modules
listed in the figure below:
While you can certainly create new PDF forms using the Create PDF Form shortcut, it is usually
easier to create one by duplicating an existing PDF Form, saving the copy under a new name, and
then proceeding to edit that copy.
To make a new form that way, just click on an existing form from the relevant module as shown on
the list view as seen above. In the Figure below we have clicked on the form Default Quote, and we
see the Form Designer detail view with that form in it. To start making our own customized Quote
Form, we just click on the Duplicate button.
You cannot edit the standard PDF Forms, but by clicking on the Duplicate button, you will see the
Edit view of the PDF Form Designer, with the existing Default Quote form definition in it, ready to be
edited and saved off as a modified copy of that standard form.
Note: All PDF forms include a field called Order. This controls the order in which the forms are listed
in the dropdown list when using the button in the detail view of the relevant module. Set
Order to 1 for the form you wish to be the default, and set the Order value to a value greater than 1
for all other forms for that module. Typically when you define a custom PDF for a module, you will set
its Order value to 1 so that it will become the default form for all users.
• Click in the Header or Footer sections of the form, which offer additional special data fields
for Formatted Address, Total Pages and Page Number, Terms, Date and others, plus Text,
Image and Line objects.
• Save the form.
To re-size any item on the form, use the handle on the bottom right corner and drag to adjust the
size. The height and width values are shown dynamically as you re-size.
To move any item on the form, click on the item and then drag to move it. The x and y co-ordinates of
the item are shown dynamically as you move it.
Figure 158: PDF Form Designer - Adding Fields in Header or Footer Sections
In the Figure above the field being edited has an additional Source field at the top of this form. If
Predefined Fields is selected from the dropdown list shown, then the fields that may be selected are
the normal ones. The next option on the list will always be the current module name, in this case
Quotes, allowing any field to be selected from the current record. The remaining options on the
dropdown list will be all available related records - in this case Sales Orders, the Billing Account, the
Shipping Account, the Billing Contact, the Shipping Contact, and Shipping Provider. This can be
remarkably useful for adding in key data from a broader scope of data in your CRM.
This dialog box lets you adjust several properties of the table layout and presentation. Additional
controls include:
• Clicking on the + icon lets you add blank columns on the right-hand end of the table.
• You can also drag the vertical dividers between cells of the table left and right, to adjust the
width of each cell.
• Clicking within a cell lets you delete that column of the table, set or change the field
displayed in that column, or change the column title.
This function only exists in the Startup, Startup+ and Professional Editions of 1CRM, as the
Enterprise Edition contains the Module Designer which can edit the properties of all fields in any
1CRM module (see Figure 150 within the Edit Fields section of the Module Designer).
The Shipping Provider option is used to define the shipping providers to be used in the Quotes and
Invoices modules. For each new shipping provider defined, the name of the shipping provider and
the status (Active or Inactive) must be entered.
The Tax Rates option is used to define tax rates to be used in the Quotes and Invoices modules. For
each new tax rate defined, the tax name, rate (enter 7, for example, if the rate of tax is 7%), and
status (Active or Inactive) must be entered.
The Tax Codes option is used to define tax codes to be used in the Product Catalog, to classify them
by tax class. For each new tax code defined, the name of the tax code, order (when presenting the
drop-down list), and status (Active or Inactive) must be entered. Then you must relate one or more
Tax Rates to the Tax Code (watch out – many users forget to do this!). What you are creating is a tax
code that says – any products coded like this will have the following tax rates applied to them – for
example, federal taxes, state/provincial taxes, and even municipal taxes where they apply.
7.7.3 Resources
Meeting Resources are items which you may wish to reserve at the same time you are scheduling a
meeting. They include the following types of resources: Meeting Room, Television, DVD, VCR,
Projector, Projection Screen, Desktop PC, Notebook PC, Conference Phone, and Telephone Bridge.
Resources which are meeting rooms also have a number of attributes which may be checked off for
them: TV, DVD, VCR, Projector, Screen, PC, and Conf. Phone.
When scheduling a meeting, resources may be invited to the meeting, and their schedule checked
for conflicts. In the Calendar module, the calendar Day Grid and Week Grid layouts let users check
for free meeting rooms and other resources.
You normally begin by toggling on the Enable WooCommerce control. Then set the WooCommerce
URL and the API Consumer Key and API Consumer Secret. Then click on the Test Connection
button to see if those basic settings to establish your connection with WooCommerce are working. If
they are, you’ll see the message: Successfully connected with WooCommerce.
Note: You will get the API Consumer Key and API Consumer Secret values from your
WooCommerce system within WordPress administration. Go to WooCommerce > Settings >
Advanced, and follow the instructions here to get the WooCommerce REST API ready for use.
Note: It is critically important that you set permissions for the new API key to Read/Write. Use of the
REST API with the generated keys will follow the WordPress user's roles and capabilities. This
WordPress User related to the API should have privileges within WordPress to view, create and
update Customers, Orders, Products and WebHooks.
Then continue to set the rest of the configuration values as desired, based on the explanations
above. Once they have all been set as desired, click on Save. The 1CRM Scheduler has a Scheduler
task (Synchronize with WooCommerce) for the WooCommerce sync, and this will perform all the
sync actions from 1CRM to WooCommerce. You should make sure this scheduler task is enabled if
you are using the WooCommerce Sync (and disabled if not!).
When that scheduler task runs, it will perform your initial sync. Then on subsequent runs it will
continually update the two systems according to the preferences you have indicated in your
configuration settings. If you ever want to run the Initial sync again for any reason, click on the
Resync All button. Once the scheduler task has run, your Sync Status area will show information in
this format:
You will note that the initial sync run will create a series of webhooks in WooCommerce, which you
will see on the WooCommerce > Settings > Advanced > Webhooks screen, as follows:
Note: The WooCommerce integration was tested at the time of release with WooCommerce version
3.8.0 and WordPress version 5.2.4. Also note that these require the use of at least PHP version 7.x
on the server where they are installed.
When WooCommerce syncs product catalog items to 1CRM, note that WooCommerce has no
information about product suppliers, so the new catalog items created in 1CRM will be missing that
information - which you may wish to add using the Mass Update panel on the catalog list view.
When the status of an order in 1CRM (which might be a Sales Order or an Invoice) is updated, the
corresponding order status is updated in WooCommerce. As the status values differ in the two
systems, they have been mapped in this manner:
• If 1CRM Invoice Cancelled flag is set ==> cancelled in WooCommerce Status, otherwise
• If 1CRM Invoice Amount Due = 0 and Shipping Stage is None or Delivered ==> completed in
WooCommerce Status, otherwise
• Pending ==> pending in WooCommerce
• Partially Shipped => processing in WooCommerce
• Shipped => processing in WooCommerce
• Delivered => processing in WooCommerce
To enable a Payment Processor link for 1CRM, set the dropdown selector to Chargebee.
Next, set your Chargebee site name. You can find your Chargebee site name by logging in to your
Chargebee dashboard and looking at the address line of your browser. For example, if the address
line says "my-company.chargebee.com" then your site name is my-company.
Next enter your Chargebee API key. You can find your API key in the API Keys and Webhooks
section of the Chargebee configuration screen.
Next configure the webhook to 1CRM, within the Chargebee configuration screens. You will need to
enter the Webhook URL, the Webhook User Name and the Webhook Password.
Finally, you can choose to disable calling webhooks over the insecure HTTP protocol, by enabling
the Webhook SSL Required toggle control.
Then you are free to start defining Customers, and their Subscriptions.
A good place to get started is the Chargebee Implementation Guide. This guides you through the
initial setup of your billing rules and payment methods.
Next, learn about the Building Blocks of Chargebee Subscriptions. This explains the Chargebee
concepts of Customer, Subscription, Plan, Addon, Coupon, Invoice and Transaction.
Plans look something like this: (we show here a selection of 1CRM Subscription Plans, as an
example)
Plans
A Plan defines the frequency of billing and amount to be charged for a product or service. Each
Subscription is defined by the Plan associated with it, as the Plan contains information regarding the
pricing, the billing cycle, the billing and trial periods of the product.
Pricing model options include Flat fee, Per unit, Volume, Stairstep and Tiered. (More details ...)
Addons
To define a service or item that's being offered in addition to a plan, you can make use of an Addon.
These pre-defined components can be specified as one-time or recurring, and also flat fee or
quantity based items. (More details ...)
Coupons
Promotions and incentives play a key factor in driving customers toward a product and to boost
sales. A Coupon defines the benefit being applied, and the period up to which it will be applied, on a
Subscription. (More details ...)
Subscriptions
Subscriptions may be created directly in Chargebee, or they may be created (or edited) using the
1CRM Customer Connection portal, which will update the subscription records within Chargebee.
A Subscription is used for modelling the bundle of items subscribed by a customer. It contains all the
recurring items, applicable credits and a track of all ad-hoc charges to be included in subsequent
billing cycles.
Each Subscription must be associated with a Plan to define the base cost and the billing frequency
(e.g. monthly renewal, yearly renewal, etc). Details such as trial period, duration of the subscription
are inherited from the Plan but can be overridden at the Subscription level.
Any changes to the subscribed items, including billing date, and scheduled changes can be managed
within the Subscription. When an invoice is generated for a Subscription, the required information on
the charges is picked from the Subscription. (More details ...)
• One-way sync: Lead Guerrilla --> 1CRM - Just enable and configure the Lead Guerrilla
Plugin, and do not configure the 1CRM end.
• One-way Sync: 1CRM --> Lead Guerrilla - Just configure the 1CRM settings for Lead
Guerrilla Sync, and do not enable and configure the Lead Guerrilla Plugin.
2. Now a new option is available in the Lead Guerrilla Settings menu - API Credentials. Select it,
then click New. Make sure Authorization Protocol is set to OAuth 2.
Click Apply, then Save & Close. Note the Client ID (Public Key) and Client Secret (Secret Key).
3. In 1CRM, go to Lead Guerrilla API Settings in Admin. Check Enable and choose Leads, Contacts
or Contacts and Unconverted Leads to send to Lead Guerrilla - and and be sure to coordinate
this setting with your choice in the previous section! (If you choose Contacts and Unconverted
Leads here, then choose Leads when configuring the Lead Guerrilla plugin.) Next enter the Lead
Guerrilla URL, API Client ID and API Client Secret from the previous step, then Save.
4. In 1CRM, return to Lead Guerrilla Settings and click Authorize. A window opens where you login
and then grant 1CRM permissions to access Lead Guerrilla. The window then closes and the
1CRM settings are saved automatically. You’re all done!
In addition the Lead Guerrilla / 1CRM Integration features the extremely useful ability to map 1CRM
Checkbox fields within the Leads module to Tags on Contacts within Lead Guerrilla. Simply create
custom Checkbox fields in the Leads module within 1CRM and matching Tags will be created within
Lead Guerrilla, and the two corresponding elements will sync values with each other.
Note: These 1CRM fields must have names starting with tag_, followed by the tag name, with
spaces replaced with underscores. Field names are limited to using only letters and digits, and
character case matters. For example if you create a field named tag_Sample_Tag within the 1CRM
Leads module, a tag named Sample Tag will be added to Contacts in Lead Guerrilla, and vice versa.
Other fields within Lead Guerrilla Contacts can be mapped to custom fields in 1CRM. Simply create a
custom field in 1CRM with Lead Guerrilla’s field name, prefixed with lg_. For example, to sync the
points field we see on each Contact in Lead Guerrilla, create a corresponding custom Integer field
in the 1CRM Leads module called lg_points.
The checkbox Enable Basic Authentication typically only needs to be enabled if you are using an
older version of the 1CRM Mobile App, prior to version 1.2, or if for some reason you prefer to allow
users of 1CRM Mobile (or other applications) to login directly with username & password instead of
via OAuth authentication.
Note: In most cases, you should have Basic Authentication disabled. This will require upgrading the
1CRM Mobile App to version 1.2 or newer (and logging into 1CRM in that App using OAuth), but that
is highly desirable for the added security and features. If you develop software internal to your
organization which uses the 1CRM REST API, it may be acceptable to have Basic Authentication
enabled. But otherwise, if you are using any 3rd party applications which access the 1CRM REST
API, disabling Basic Authentication is very highly recommended.
Note: Enabling Basic Authentication does not mean that OAuth authentication is Disabled. When
Basic Authentication is enabled users of the 1CRM Mobile App may login using either OAuth or
conventional Username & Password.
Session authentication is an authentication method for embedded 1CRM applications. The checkbox
Enable Session Authentication typically only needs to be enabled if you are using an application of
that nature. It is disabled by default. Authentication is performed by adding the Session ID from
browser cookies to HTTP requests when calling endpoints that require authentication. The request
would be automatically authenticated using the credentials from the current 1CRM session with all
user's ACL rights.
With OAuth, you never enter your username and password directly into the external application.
Instead, from the external application you are redirected to login to 1CRM itself via a web browser -
much the same as you would do when using 1CRM normally in a browser. 1CRM then issues an
access token that is used instead of a password. That token is short-lived, and will eventually expire -
but 1CRM can renew that token automatically when it expires, without requiring the user to login
again.
Private and Public keys are generated automatically when 1CRM is installed. The private key should
be kept secret and never disclosed. At any time you can create a new key pair using the Regenerate
Keys button.
The 1CRM Mobile App has the ability to use 1CRM’s OAuth capability to allow you to login to the
Mobile App using OAuth authentication, rather than a simple username and password in the App
itself. This is one illustration of the power of the OAuth authentication to be found within 1CRM.
If you have a software product that uses the 1CRM REST API and you would like it to be added to
the 1CRM App registry so that others may discover your App, please contact [email protected].
Applications that access 1CRM data via the REST API are referred to as API Clients. In order to gain
access to 1CRM, an application must be registered either globally or locally (within one specific
1CRM instance).
These two categories are known as Public clients (global) and Private clients (local). Public clients
are known to all 1CRM instances, and are managed by 1CRM Systems Corp. Private clients are
managed by individual customers, only for their own instance. The purpose of Private clients is to
develop API clients internal to a customer's organization.
• Public clients can access any 1CRM instance, and should be registered with 1CRM Systems
Corp.
• Private clients can only access one 1CRM instance, and they are registered as an API Client
in that instance only, by the system administrator.
• For Public clients, each 1CRM system administrator must explicitly enable those he wants to
use with his system.
The topic of API clients is inextricably linked to OAuth authentication. When Basic Authentication is
enabled, 1CRM does not know which client it is talking to and will grant access to any client sending
a correct username and password. This is a key reason why clients are discouraged from enabling
Basic Authentication.
Customers manage API clients using this API Clients screen within 1CRM Administration. The
following fields are available for each API Client:
• Name: API client name. Read-only for Public clients, editable for Private clients.
• Publisher: Name of organization responsible for API client development and support. Read-
only for Public clients, editable for Private clients.
• Is Public: Indicates whether the client is Public or Private. Read-only.
• Enabled: Used to enable or disable the API client.
• Enabled Grant Types: Specifies how the API client will gain access to 1CRM. When adding
Private clients, the system administrator should consult with their developer about the
appropriate value for this field. Read-only for Public client, editable for Private clients.
• User: When Client Credentials grant is enabled, the API client will access 1CRM on behalf of
user specified in this field.
• Redirect URL: Client-specific URL to which the user will be redirected after log in. When
adding Private clients, the system administrator should consult with their developer about the
appropriate value for this field.
For customers using Public API clients, your only control is to set them Enabled or Disabled. Any
available Public API Clients will be listed on this screen, and the list will be automatically updated as
new Clients become available.
In some scenarios, an API client may need to provide an API Secret to the API. An API secret should
not be disclosed to anyone except the API client developer. For Private API clients, administrators set
the secret using the Change API Secret button on the API Client detail view. For Public clients, API
secrets are managed by 1CRM Systems Corp.
Note: 1CRM Mobile is added as a Public API client automatically, at installation time.
The scheduler requires that the operating system scheduling mechanism be used to run the
scheduler on a regular basis. For Microsoft Windows, you can use the Task Scheduler. For UNIX,
you can use cron. Examples for both are described here.
For Unix/Linux systems, as a root user, edit the crontab file in /etc, and add an extra line at the end
which reads:
where
<username> is the username that the web server runs as (usually defaults to 'apache' or ‘wwwrun’),
and where
and where
This will setup a cron job to run the scheduler every 5 minutes. The scheduler will, in turn, check to
see if any of its tasks are due to be run, and will run them as required.
For Windows servers, as a user with Administrator privileges, go to Start > Settings > Control Panel >
Scheduled Tasks. Double-click on Add Scheduled Task. When the Scheduled Task Wizard asks you
for the program you want Windows to run, browse for the php.exe executable under your PHP
installation directory. Continue with the rest of the Wizard, making sure you click on the Daily option
when asked when to perform this task.
Before you click on the Finish button for the Scheduled Task Wizard, check the box that says, Open
advanced properties for this task when I click Finish. A new dialog box displays after you click Finish.
Enter a space and the filename scheduler.php into the Run: box, after php.exe. Now change the text
in the Start in: box to the path to your 1CRM installation directory. Now click on the Schedule tab and
then on the Advanced button. Check the box for Repeat task and specify every 5 minutes with a
duration of 24 hours.
For macOS, create the crontab file using the instructions in the Configure Installation Settings section
of the macOS Installation chapter.
In any case, Windows, macOS or Linux, the scheduler will take care of all timed activities. If any
reports need to be run, it will run them. If any emails have arrived, it will process them and put them
in the inbox for the correct users, with contacts and accounts automatically associated to them. If any
Mass Emails need to be sent out, the scheduler will ensure that they are sent.
When an email is processed, a link is appended to the end of the email for recipients to opt out of
receiving emails. This will link back to a page on the same machine as your 1CRM instance.
To use Email Campaigns, you must first correctly configure the email settings covered in the
administration section Configure System Settings. The scheduler uses the same email server
connection settings. Notifications do not necessarily have to be turned on, but the settings must be
properly configured for recipients to receive emails.
In Microsoft Outlook, select Tools > Options. Then click the Calendar Options button and then click
Free/Busy. Select the Publish at my location checkbox and enter the path for the 1CRM email
account information following the syntax:
http://servername/infoathand/vcal_server.php/type=vfb&source=outlook&email=
[email protected]
where ‘myemail@servername’ is the email address specified for Email Options in the user’s My
Account page in 1CRM. On the My Accounts page in the Calendar Options, the URL for publishing
free/busy information is displayed in Your Publish URL.
For Search location, enter the path for the Outlook account information, such as:
http://servername/infoathand/vcal_server.php/
type=vfb&source=outlook&email=%NAME%@%SERVER%
where %NAME% and %SERVER% are Outlook replacement variables to construct the email
address.
It is very important to understand that importing data into your 1CRM system can pollute your system
with poor quality, or badly imported data. In cases like these, it is critical to be able to go back over
your imported data and examine it, and potentially edit or delete it. That’s exactly what the Manage
Imported Data module is for (see relevant section earlier in this Guide).
The above order in which the thirteen importable modules are presented is significant. If you are
importing data from another CRM type of system, you should begin with Users, and carry on through
to Notes, in that order. If you have no data to import for a given module, it is generally OK to skip it,
but important modules like Users, Accounts and Contacts will likely cause problems if you skip them.
This is because the imported data includes information such as Account and Contact names and IDs
which are used to help link all associated data together into a real CRM database, not just a number
of unrelated lists of information.
The recommended import order for the modules listed is critical, as it ensures that no item being
imported will refer to an item in a module that has yet to be imported.
It is also important that if you are migrating full system data across into 1CRM from another CRM-
type system, that you export it all from the other system at the same time (a snapshot, if you like,
across all the modules) and then import it all at the same time. This helps to ensure that all the data
taken together represents a single consistent database.
1CRM supports the importation of various kinds of data from several different popular contact
managers and full CRM systems, such as Salesforce.com, SugarCRM, ACT!, Outlook and most
others.
Database Import is used to import a series of related CSV files into 1CRM, for the purpose of
migrating an entire CRM database into 1CRM from another product. This tool automatically creates
the relationships between items of data such as Accounts and Contacts, or Meetings and Contacts,
that are so key for using a CRM. When you select this option you will see something like the screen
below:
For now, files may only be imported from several generations of SugarCRM databases or via custom
mappings of generic CSV files, but more options will be available in future releases to import from
other competitive CRM products. If you have already exported a series of CSV files from a
SugarCRM 6.0 CRM, for example, and want to migrate that data into 1CRM, you would click on the
SugarCRM 6.0.x link.
Note: To export the CSV files from SugarCRM systems, you simply go to each module in turn and
use the Export link to export all records from each module.
The Figure above shows you the recommended import order when performing a database migration
from another CRM, and you want all information in the various modules to be linked up once it is
imported: Users, Accounts, Opportunities, Contacts, Leads, Cases, Product Categories, Products,
Calls, Meetings, Tasks, Notes, Targets and Price Books. Simply select from the dropdown list the
type of CSV data to import, then choose the file and click on the Import button. You’ll see a screen
such as the one below, asking if imported data should be added to a Target List (for Contacts and
Leads) and if or how duplicate checking should be applied. You’ll also see a screen like Figure 177,
where you map CSV columns to fields in your 1CRM data. Once you have imported one CSV file, the
system defaults afterwards to the next one in the recommended sequence.
The system then shows you the results of importing that CSV file, as below. As you import the
various CSV files, the system highlights the CSV files already processed. The system also lists the
modules for which data has been imported on the Manage Imported Data screen as in Figure 176.
Simply carry on importing the various CSV files in the recommended order until you have imported
them all.
Note: You can view, edit or delete any imported data with the Manage Imported Data function in
Administration (see that section in this guide for more information). Selecting the Users module, for
example, would show you a list view type screen for the imported Users, and let you review them,
view their details, edit them, or remove any that were imported in error using the Actions button.
Note: Import operations can take a long time - expect pauses of up to 20 minutes during the process.
One thing to watch, however, is that when Account records are created automatically in this fashion,
they are essentially empty – they have associated contacts, but no address or telephone information
is recorded. Because of this, you should typically import your Account data first, creating the records
complete with address and telephone information (plus perhaps Account Type and lots of other
information, depending on your old CRM system). This avoids creating rather empty Account
records, and having to manually add the rest of their information later.
See the sections below for exact steps on exporting and importing Contacts and Accounts.
1. Under the File menu, select Import and Export. The Import and Export Wizard dialog box is
then displayed.
2. Select the action Export to a file, and click the Next button.
3. Choose to create a file of the type Comma Separated Values (Windows), and click on the
Next button.
4. Select an Outlook folder from which to export – typically your contacts folder - and click the
Next button.
5. Enter the filename and directory location for the exported file to be created, and click the
Next button.
6. Confirm your intention to export this file by clicking on the Finish button.
7. The desired .CSV file is then created by Outlook 2003. You can view the file easily, using
Microsoft Excel or a simple text editor, to confirm that the data you intended has been
exported.
If you are importing Account data from a full CRM, proceed now to step 5. If you only have exported
contact data, and need to massage it to act as Account data to be imported, perform steps 1-4 below:
1. Copy your exported Contacts.csv file, and call the copy Accounts.csv.
2. Edit the Accounts.csv file using Excel. First, sort the file on the column which contains the
Company name.
3. Now the more complex part: As you scroll through your data, sorted by Company name, you
will see successive records which have the same company name, because there is more
than one Contact from that Account (in 1CRM terminology!). To avoid multiple copies of the
same Account within 1CRM, you need to delete these duplicates. And to make sure that the
best information is attached to the Account record, you should retain only the contact whose
address and telephone information best represents the Account as a whole.
Also look out for Company names which are similar but not identical due to inconsistencies
in the way the Company name was entered – you should delete all duplicate records except
the one with the Company name spelt exactly as you wish to see it in 1CRM.
4. Now that you have a nice clean set of Account data, save the Excel file as a .CSV file type,
and let’s proceed to import this Account data.
5. Click on the Database Import function within the Navigation Shortcuts Box of the Accounts
module.
6. Specify the Data Source: For ‘massaged’ Outlook files where the field names no longer
match exactly what is exported from Outlook, use the Custom CSV data source.
7. Upload the Export File: Use the Browse button to locate the Accounts CSV data file, and
then click on the Next button to continue.
8. Database Import / Prepare: This screen (see Figure 177 below) shows four columns of data.
Column 2 (Header Row) is the key – this contains the names of the fields being exported
from your old CRM or contact manager. Columns 3 and 4 show example data from the first
two records you are about to import. Column 1 (Database Field) is where you come in – you
need to use all of the drop-down box controls in this column to select the fields within 1CRM
into which each incoming Account field is imported.
Spend some time with this, exploring the names of the incoming fields, and the names of the
corresponding 1CRM fields, until you are sure you have defined the optimum mapping
between them.
9. When you are satisfied you have the field mapping right, click on the Continue button, at the
bottom left of the screen. Before you do this you may choose to select a Custom Mapping
action, and provide a name for this mapping so that it may be used again in future.
10. The Database Import / Execute screen is displayed. It will summarize how many records
were successfully imported, how many were skipped over, and the reasons they were
skipped over.
11. You can now click on Continue. You may want to carry on with importing data for more
modules, or to go to the Manage Imported Data screen to review your new data.
1. Click on the Database Import function within the Navigation Shortcuts Box of the Contacts
module.
2. Specify the Data Source: Select Custom CSV – then click on the Continue button.
3. Upload the Export File: Use the Browse button to locate the data file exported by your
contacts manager, and then click on the Import button to continue.
4. Confirm Fields and Import: This screen (see Figure 177 above) shows four columns of data.
Column 2 (Header Row) is the key – this contains the names of the fields being exported
from your old CRM or contact manager. Columns 3 and 4 show example data from the first
two records you are about to import. Column 1 (Database Field) is where you come in – you
need to use all of the drop-down box controls in this column to select the fields within 1CRM
into which each incoming Contact field is imported.
Spend some time with this, exploring the names of the incoming fields, and the names of the
corresponding 1CRM fields, until you are sure you have defined the optimum mapping
between them.
5. When you are satisfied you have the field mapping right, click on the Import Now button, at
the bottom right of the screen. Before you do this you may choose to select a Custom
Mapping action, and provide a name for this mapping so that it may be used again in future.
6. The Database Import / Execute screen is displayed. It will summarize how many records
were successfully imported, how many were skipped over, and the reasons they were
skipped over.
7. You can now click on Continue. You may want to carry on with importing data for more
modules, or to go to the Manage Imported Data screen to review your new data.
When a match in the selected field is found in an existing catalog item, then that item is updated with
information from the CSV file. Otherwise, a new record is created, as per the normal import mode.
Note: If you choose a field for which catalog items do not have unique values, your results will likely
not be what you intended.
In each case, a Comma Separated Values (.CSV) file is produced, which contains all the currently
selected records from the module in use (not just those records currently displayed on the screen).
CSV files can be opened by Microsoft Excel for viewing, or by Notepad, Wordpad, and other text
editors – and can easily be parsed as input files by most software.
A sample portion of a CSV file, exported from the Accounts module and viewed in Excel, is shown in
Figure 179 below. When exporting to a CSV, the columns currently displayed in the list view are what
is written to the CSV file - so you may want to define a custom list view tab that includes the columns
you want to export.
<?php
// created: 2007-01-13 05:19:13
$sugar_config = array (
'admin_export_only' => false,
'cache_dir' => 'cache/',
'calculate_response_time' => false,
'create_default_user' => false,
'currency' => '',
After adding this option it would be this:
<?php
// created: 2007-01-13 05:19:13
$sugar_config = array (
'case_email_subject' => 'Case ID#: nnnn',
'admin_export_only' => false,
'cache_dir' => 'cache/',
'calculate_response_time' => false,
'create_default_user' => false,
'currency' => '',
"Case ID#: nnnn" is the default setting, and emails with subjects "Re: Case ID#: 12", "Case
ID#: 12", "Whatever Case ID#: 12 whatever" will all match case #12
So if you send out a case-related email, and make sure it has this sort of info in the subject
line, when the reply comes back, it will be parsed as above, and automatically associated
with the case.
Q: Why do I get the message: Terminated due to a significant change in your IP address?
A: This is a security check. IAH captures your IP address and stores it in the session record. On
each page request, the system checks your IP against the one stored in the session. If they
are different, your session will be terminated and you get this error message.
To change this behaviour, use the Admin - System settings page. There is a checkbox -
Validate User IP Address. Un-check it to disable this security check. If you do, however, you
will no longer be able to detect a session hijack.
While many of these entries simply reflect settings from the Admin - System Settings or
Locale screens, some controls may only be set by editing the local_config.php file:
Note: Make sure that values are only entered under the appropriate section headers. For
example, disable_relative_dates_times: false and show_empty_detail_rows: true may
only be entered under the layout section, and account_numbering: true may only be
entered in the site section. Maintain proper indentation when editing the file - add a tab for
each indentation level.
• Notify on Storage Low - Enable this toggle switch to have the system send storage
utilization emails
• Notification Type - Notifications are to be based on Available Storage in GB, or as a % of
Total Storage
• Notify on % Used / GB Free - Specify here the number of GB or percentage below which
you wish to be notified
• Notification Email Address - Specify the email address to which storage utilization alert
emails and scheduled storage utilization emails are to be sent
• Receive Scheduled Storage Reports - You may set this to None, or choose Daily, Weekly
or Monthly to receive regularly scheduled reports summarizing the storage utilization of
your 1CRM system.
External storage notifications to the hosting organization (1CRM or one of their hosting
partners) are as follows:
• 1CRM Cloud Instances: Will send notifications if over limits, notifications are sent to
the email_support variable, which is [email protected] by default.
• Partner Cloud Instances: Partner needs to set storage_notify_email and storage_type
variables and set the limits as required. If instance goes over this limit, the notification
will be sent to storage_notify_email.
• Other/On Premise Instances: No external notifications will be sent for storage usage.
The main trigger here will be the global variable ONECRM_CLOUD - if this is true, the
procedure will be followed for 1CRM Cloud Instances, if not, it will look at the storage_type
variable to see how storage should be calculated. If this is empty, it will be treated as per
Other/On Premise Instances.
Q: I’d like to change the image used for the PayPal button on custom invoice PDFs - how
do I do that?
A: You can find and replace that image at include/images/paypal_button.png. The size is
195 x 74 pixels.