Master data: customers, suppliers, contacts, items and resources¶
Language: English · Italiano · Français · Deutsch Manual index: README
Master data is the information every other part of ProjectIQ relies on: the companies you work for and buy from, the people you talk to, the items you purchase and consume, and the resources whose hours you plan and record. Keeping it clean and complete is what makes costs, purchasing and planning reliable. This manual explains each record type, what every field is used for, and the rules the application applies automatically.
All master data lives in the Master Data area, group Records: Customers, Suppliers, Contacts, Items, Resources. Resource hourly costs are in the Settings area; company settings are environment variables (see Administration).
How master data connects¶
erDiagram
ACCOUNT ||--o{ CONTACT : "has"
ACCOUNT ||--o{ SUPPLIER-DOCUMENT : "compliance documents"
ACCOUNT ||--o{ ITEM-SUPPLIER : "sells"
ITEM ||--o{ ITEM-SUPPLIER : "is sold by"
ACCOUNT |o--o{ ITEM : "default supplier of"
USER |o--o| RESOURCE : "is"
RESOURCE ||--o{ RESOURCE-COST : "hourly cost history"
RESOURCE |o--o{ ABSENCE : "absences (none = company closure)"
ACCOUNT ||--o{ PROJECT : "customer of"
Customers and suppliers (accounts)¶
Customers and suppliers are both stored as accounts, the standard Dataverse table for companies. One company can be a customer, a supplier, or both at the same time: two check boxes, Is Customer and Is Supplier, decide which.
Two forms, one record¶
An account has two forms:
- the Customer form, with the data you need to sell and invoice;
- the Supplier form, with the data you need to buy, plus compliance documents and item prices.
The application chooses the right form for you:
- when you open a company that is only a supplier, it is shown on the Supplier form; every other account opens on the Customer form;
- when you create a new account from Suppliers (or choose the Supplier form), Is Supplier is ticked automatically; from Customers (Customer form) Is Customer is ticked.
You can always switch form with the form selector next to the record name.
Views¶
| View | Shows |
|---|---|
| All Customers (default in Customers) | Every account flagged as customer |
| Prospects | Customers whose Customer Type is Prospect |
| Customers with Projects / Customers without Projects | Customers that have (or do not have) at least one project |
| All Suppliers (default in Suppliers) | Every account flagged as supplier |
| Active Suppliers / Blocked Suppliers | Suppliers by Supplier Status |
| Suppliers with Document Alerts | Suppliers with expired or expiring compliance documents |
Choosing a supplier on other records¶
Fields that point to a supplier show only accounts flagged Is Supplier, with a fixed view (the view selector is hidden):
| Field | View used | Why |
|---|---|---|
| Purchase order Supplier, RFQ invitation Supplier, purchase request Preferred Supplier, item Default Supplier | Active Suppliers | New orders and requests go only to active suppliers that are not blocked |
| Supplier invoice Supplier, supplier document Supplier, item supplier Supplier, material usage Supplier | All Suppliers | Invoices, documents and history can still refer to a blocked supplier |
When you save a supplier invoice, a material usage or a purchase request, the application also checks that the chosen account is flagged Is Supplier, and stops you with "
Customer fields (Customer form, Summary tab)¶
| Field | Meaning |
|---|---|
| Account Name | Company name, as you want it on documents |
| Is Customer | The company appears among customers and can be chosen as project customer |
| Customer Type | Prospect (potential customer, for example while an offer is open) or Customer |
| VAT Number / Tax Code | Partita IVA and codice fiscale (or the foreign equivalents) |
| Primary Contact, Main Phone, Email, Website | Standard contact data |
| Owner | The user responsible for the account |
| Address | Street, city, postal code, province, country |
| Payment Terms, IBAN, PEC, Language | Billing data; Language is the language for documents and emails sent to the company (Italian, English, German, French). IBAN is visible only to users with the OP365 Cost Visibility profile. |
Read-only figures maintained by the application: Projects (number of projects of the customer) and Contract Value Total (sum of the contract values of its projects). They are updated every time a project is created, changed or deleted.
The Contacts tab lists the people of the company.
Supplier fields (Supplier form)¶
The Summary tab has the same company, address and payment data as the customer form, plus:
| Field | Meaning |
|---|---|
| Is Supplier | The company can receive requests for quotation and purchase orders |
| Supplier Status | Active or Blocked. A blocked supplier cannot be invited to an RFQ or receive a purchase order: the application stops you with " |
| Supplier Category | Free text to group suppliers (for example "Electrical", "Concrete", "Rental") |
| Used as the default invitation address in RFQs and recorded as Sent To when an order is sent |
Read-only figures: Spend (total of the supplier's purchase orders, visible only to users with cost visibility) and Contacts (number of contacts). They are maintained by the purchasing plugins.
The Documents tab lists the supplier's compliance documents and shows the Document Alerts counters (Expired Documents, Expiring Documents). The Item Prices tab lists the items the supplier sells, with its price for each.
The counters count approved documents only and are updated every time a document changes, and every morning by the Daily document expiry flow (see Expiry and e-mails).
Supplier documents¶
A supplier document records a compliance document you must keep for a supplier: DURC, company report (visura camerale), certifications, insurance policies, contracts and so on. Documents are entered by your staff, or uploaded by the supplier in the supplier portal; in both cases the buyer decides whether a document is valid.
| Field | Meaning |
|---|---|
| Supplier | The supplier (the document is deleted if the supplier is deleted) |
| Document Type | DURC, Company Report, Certification, Insurance, Contract, Other (required) |
| Description | Short description (required) |
| Number | Document number or reference |
| Issue Date / Expiry Date | Validity period |
| External URL | Link to the document in another system (for example SharePoint) |
| File | The document itself, uploaded into Dataverse |
| Notes | Anything else |
The Review section of the form is read-only and is filled in by the system:
| Field | Meaning |
|---|---|
| Status Reason | Pending Review, Approved or Rejected (see below) |
| Expiry Status | Valid, Expiring (expires within 30 days), Expired, or Replaced (a newer approved document of the same type exists) |
| Reviewed By / Reviewed On | Who approved or rejected the document, and when |
| From Supplier Portal | Yes when the supplier uploaded the document in the portal |
| Expiry Notice Sent | Last expiry e-mail sent to the supplier for the document: Expiring or Expired; cleared when the expiry date changes |
| Review Note | Note of the reviewer; the reason shown to the supplier when the document is rejected |
Create documents from the Documents tab of the supplier (+ New Supplier Document), so that the supplier is filled in automatically.
Review¶
stateDiagram-v2
[*] --> PendingReview: supplier uploads in the portal
[*] --> Approved: created in ProjectIQ
PendingReview --> Approved: Approve
PendingReview --> Rejected: Reject (note)
Rejected --> PendingReview: supplier corrects it in the portal
Approved --> [*]
- A document created in ProjectIQ is Approved at once: you are the one checking it.
- A document uploaded by the supplier is Pending Review. The owner of the supplier account receives the in-app notification "Supplier document to review". Open the document, check the file and click Approve or Reject on the command bar. Reject asks for a note, which the supplier sees in the portal.
- The supplier can change or delete a document only while it is Pending Review or Rejected. A change to a rejected document sends it back to Pending Review. An Approved document can no longer be changed or deleted from the portal: for a renewal the supplier uploads a new document.
- The status reason cannot be changed by hand: use Approve and Reject.
Only approved documents count: they make the expiry status and the alert counters, and only they receive the expiry e-mails. When a renewal of the same type is approved, the older document becomes Replaced and no longer raises alerts.
Expiry and e-mails¶
Every morning at 06:00 (Europe/Rome) the Daily document expiry flow refreshes the expiry status of all documents and the counters of the suppliers, and e-mails the supplier:
- once when an approved document becomes Expiring (30 days before the expiry date);
- once when it becomes Expired.
The e-mail goes to the e-mail address of the supplier account, is recorded in the timeline of the document, and is not sent again until the expiry date changes. A supplier without an e-mail address receives nothing: the e-mail leaves the morning after the address is filled in. The supplier also sees the alerts in the portal (Dashboard and Documents page).
The text of the e-mails comes from Dataverse e-mail templates (Account type) in the language of the supplier (Language field of the account). Your administrator chooses the templates and the mailbox that sends the e-mails in the environment variables Supplier Email Templates and Supplier Email Sender (see Administration). While no sender is set, statuses and counters are still updated but no e-mail is sent.
Views¶
| View | Shows |
|---|---|
| Active Supplier Documents | All documents with type, supplier, number, expiry date, expiry status and status reason |
| Supplier Documents to Review | Documents sent by suppliers that wait for Approve or Reject |
| Expiring and Expired Supplier Documents | Approved documents that expire within 30 days or are expired |
Contacts¶
Contacts are the standard Dataverse contacts: the people who work for your customers and suppliers. ProjectIQ adds one field:
- Is Decision Maker: tick it for the people who decide (for example who signs the offer or the order).
A contact belongs to a company through Company Name (parent account). For suppliers this matters also for the supplier portal: a supplier user is a contact whose company is the supplier.
Items¶
An item is anything you buy or consume on a job: a material, a component, a consumable, a service or a rental.
| Field | Meaning |
|---|---|
| Code | Unique item code (required; the application refuses two items with the same code) |
| Name | Description (required) |
| Category | Free text to group items |
| Unit of Measure | pcs, m, kg, h, m², ... It is copied to request lines, order lines and material usage |
| Unit Cost | Standard cost of one unit. Used when there is no supplier price |
| Default Supplier | The supplier you usually buy the item from. It is automatically invited when an RFQ is created for a request that contains the item |
| Notes | Anything else |
Read-only figures, maintained by purchasing: Order Lines (how many purchase order lines use the item) and Spend (total amount ordered, visible only with cost visibility).
Item suppliers and prices¶
The Suppliers section of the item (and the Item Prices tab of the supplier) lists the item suppliers: one row for each supplier that sells the item.
| Field | Meaning |
|---|---|
| Item / Supplier | The pair; there can be only one row for the same item and supplier |
| Supplier Code | The supplier's own code for the item |
| Price | The supplier's unit price |
| Lead Time (Days) | Usual delivery time |
| Minimum Lot | Minimum quantity per order |
| Notes | Conditions, discounts, ... |
Which price is used¶
Whenever the application needs to value an item (material usage, purchase request and order lines), it looks for a price in this order:
flowchart LR
A[Item and supplier known?] -->|yes| B{Item supplier row<br/>with a price?}
B -->|yes| P1[Use the supplier price]
B -->|no| P2[Use the item Unit Cost]
A -->|no supplier| P2
You can always overwrite the proposed price on the line; the rule only fills it in when it is empty.
Resources¶
A resource is a person (or a crew, or any capacity) whose hours are planned on the WBS and recorded in time entries. A resource does not need to be a user: you can plan subcontractors or workers without a licence. To record hours themselves, however, people need a user linked to their resource.
Resource fields¶
| Field | Meaning |
|---|---|
| Name | Name of the person or crew (required) |
| Role | Job title or skill (for example "Electrician", "Site manager") |
| User | The Dataverse user of the person. Required to use the timesheet: the timesheet looks up "my resource" through this field |
| Owner | Record owner |
| Weekly Hours | Contractual hours per week, from 0 to 80. Default 40 |
| Working Days | The days the resource works. Default Monday to Friday |
| Hourly Cost | Current hourly cost. Read it, do not type it: it is kept in sync from the Resource Costs (see below). Visible only to users with the OP365 Cost Visibility profile |
When you create a resource and leave Weekly Hours and Working Days empty, the application fills in 40 hours and Monday–Friday.
Weekly hours and working days are used in three places:
- the daily reminder: expected hours per day = weekly hours ÷ number of working days;
- the timesheet: the weekly total is compared with the weekly hours;
- the resource load: weekly capacity = weekly hours, minus absences and company closures.
Hourly cost history (Resource Costs)¶
Costs change over time, and the cost of an hour worked in March must not change when the rate is raised in September. This is why the hourly cost is stored as a history in the Costs tab of the resource (or in Settings → Resource Costs):
| Field | Meaning |
|---|---|
| Resource | The resource |
| Valid From | First day the cost applies (required; one row per resource and date) |
| Hourly Cost | Cost per hour from that date (required, visible only with cost visibility) |
gantt
dateFormat YYYY-MM-DD
axisFormat %b
title Example: hourly cost of a resource
section Cost rows
35.00 €/h (valid from 1 Jan) :done, a, 2026-01-01, 2026-06-30
38.50 €/h (valid from 1 Jul) :active, b, 2026-07-01, 2026-12-31
How it works:
- the cost of a time entry is the hours × the cost valid on the date of the entry (the latest row whose Valid From is not after the date). An entry of 15 March uses 35.00; an entry of 15 July uses 38.50, even if both are recorded today;
- the Hourly Cost shown on the resource is the row with the latest Valid From that is not in the future. It is recalculated every time a cost row is created, changed or deleted;
- if you enter a cost that starts in the future, the resource field shows it once a cost row is changed again after that date; time entries on or after that date use it straight away.
If a resource has no cost rows at all, its own Hourly Cost is used.
Absences and company closures¶
The Absences tab of the resource (and Projects → Planning → Absences) records the time a resource is not available.
| Field | Meaning |
|---|---|
| Resource | Who is absent. Leave it empty to record a company closure (for example the August shutdown or a bank holiday): it applies to everybody |
| Absence Type | Vacation, Leave, Sickness, Closure (required) |
| From / To | First and last day (required) |
| Hours | Only for single-day absences: the hours of absence (for example 4 for half a day). Leave empty for whole days |
| Notes | Anything else |
Absences are used by:
- the daily reminder, which expects fewer (or no) hours on absence days and sends nothing on company closures;
- the resource load, which reduces the weekly capacity.
flowchart LR
W[Weekly hours 40<br/>Mon-Fri] --> D[8 h per working day]
D --> C{Absence on the day?}
C -->|whole day| Z[0 h expected]
C -->|single day, 4 h| H[4 h expected]
C -->|company closure| N[no reminder,<br/>no capacity]
C -->|none| E[8 h expected]
Good practices¶
- Check for duplicates before creating a company: search by name and VAT number.
- Tick both Is Customer and Is Supplier when a company plays both roles, instead of creating two accounts.
- Block a supplier rather than deleting it: its history (orders, invoices, documents) stays intact.
- Never type the hourly cost on the resource: add a Resource Cost row with the date it starts.
- Link the User on every resource that records hours, and check that the user has the right security roles (see Administration).
- Give every item a default supplier and the prices of the suppliers you use: RFQs, orders and material usage will be pre-filled.
Messages you may see¶
| Message | Why | What to do |
|---|---|---|
| " |
The account is inactive or not flagged as supplier | Tick Is Supplier or reactivate the account |
| " |
The account chosen on a supplier invoice, material usage or purchase request is not flagged as supplier | Choose a supplier, or tick Is Supplier on the account |
| " |
Supplier Status is Blocked | Set it back to Active if the supplier can be used again |
| A duplicate key error when saving an item | Another item has the same Code | Use a different code or open the existing item |
| A duplicate key error on an item supplier | That supplier already has a price row for the item | Open and change the existing row |
| A duplicate key error on a resource cost | The resource already has a cost with that Valid From | Change the existing row |
| Hourly Cost is empty or shows *** | You do not have the Cost Visibility profile | Ask an administrator if you need to see costs |
| "Use Approve or Reject to review a supplier document." | You changed the status reason of a supplier document by hand | Use the Approve or Reject button |
| "Add a note to reject the supplier document." | Reject without a note | Write the reason for the supplier |
| "Only supplier documents pending review can be approved or rejected." | The document is already approved or rejected | Nothing to do; the supplier sends a corrected document |