General FAQ
When Searching for Documents via the Lens, a Blank Error Sometimes Appears
This can be resolved by setting an appropriate number in MaxRecordsPerPageForListViews inside the General Settings.
How Can Permissions Be Assigned to All Record Types in Nama ERP in a Flexible and Fast Way Without Adding a Row for Each Type?
✅ Answer:
In Nama ERP, you can assign permissions to records using one of the following options within each permission row:
- A single specific type (e.g., "Customer").
- A type list containing more than one type.
- Both options together.
Depending on what you specify, the permissions in that row apply to:
- The type only.
- Or the type list only.
- Or both together.
You can also leave both the type field and the type list field empty, in which case the permissions apply to all screens in the system.
🔽 How the system selects the appropriate row when applying permissions:
When a screen is opened (e.g., the Customer screen), the system searches for the most appropriate row based on the following priority order:
- A row containing the specific type (e.g., "Customer").
- If not found, it searches the type list for a row containing the "Customer" type.
- If not found, it searches for a general row (containing no type and no type list).
Once the first matching row is found according to the order above, the system stops searching and applies only that row's permissions.
Note on Additional Temporary Permissions:
The broadest permission (the one granting more access) is selected.
But the row priority order still applies:
- If "Save Only" permission is assigned to the "Customer" type,
- And "Save and Edit" permission exists in a general row or a type list row,
- Then the "Save Only" row takes priority because it is more specific according to the priority order.
SQL Server Installation problem related to block size on new M2 SSDs (especially on new hetzner servers)
- Refer to this article
- You will need to completely uninstall
- Then run the following command in PowerShell
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\stornvme\Parameters\Device" -Name "ForcedPhysicalSectorSizeInBytes" -PropertyType MultiString -Force -Value "* 4095"WARNING
Remember, PowerShell not command prompt
The window should be blue, not black
- Restart the server
- Then install SQL Server again
How Can the Discussion Screen Be Added to a Specific Screen
This can be done through Fields and Entities Settings.
addDiscussionTo- You can add the discussion to any screen in the system through the "Add Discussion To" table found in Fields and Entities Settings.
You Can Control the Fields Shown in Discussions
You can control which fields appear in the discussion screen by editing the screen - "Edit Discussion Fields" block:
- Remove the Discussion field
- Remove Attachment 1 - 2 - 3 - 4
- Remove Reference 1 - 2
The Discussion Appears After Saving, Not Before
The discussion screen only appears on saved records - when creating a new record before saving, discussions are not shown.
SMS Messages Arrive with a Plus Sign (+) Instead of Spaces
Messages arrive incorrectly with a plus sign (+) instead of spaces. Dear+Customer instead of Dear Customer
The Solution is to Use {utf8msg_sp20} in the Other Settings Field in the Mail and SMS Settings Screen in General Settings Instead of {utf8msh}
For example, if the current value in the message settings is:
https://api.oursms.com/api-a/msgs?username=info@xyz.com&token=ToKenVaLue&src=SourceName&dests={to}&body={utf8msg}&priority=0&delay=0&validity=0&maxParts=0&dlr=0&prevDups=0It should be changed to:
https://api.oursms.com/api-a/msgs?username=info@xyz.com&token=ToKenVaLue&src=SourceName&dests={to}&body={utf8msg_sp20}&priority=0&delay=0&validity=0&maxParts=0&dlr=0&prevDups=0When Opening the Item Transactions Screen, an Error Appears
Can not find Field getter method : userQty.measures.clippedHeight1
Full Log Details
com.namasoft.infra.domainbase.util.NaMaBusinessLogicExeption: Can not find Field getter method : userQty.measures.clippedHeight1
at com.namasoft.infra.domainbase.metadata.EntityReflection.getFieldValue(EntityReflection.java:292) ~[domain-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.infra.domainbase.metadata.EntityReflection.getDirectFieldValue(EntityReflection.java:174) ~[domain-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.commonservices.utils.Lister.objectListToTabularResults(Lister.java:308) ~[service-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.commonservices.utils.Lister.getQueryListFromDB(Lister.java:232) ~[service-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.commonservices.utils.Lister.getListFromDB(Lister.java:338) ~[service-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.commonservices.utils.Lister.list(Lister.java:150) ~[service-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.commonservices.utils.Lister.list(Lister.java:207) ~[service-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.commonservices.utils.Lister.listFlat(Lister.java:830) ~[service-base-0.0.1-SNAPSHOT.jar:?]The cause of the problem is a field that was removed from the system still appearing in the list view. The solution is to perform a RegenUI from the screen editing options.
When Opening the Translation Override Screen or Any Other File, the Error Message "Operation Could Not Be Executed" Appears
Error Details from the Log
org.hibernate.query.sqm.PathElementException: Could not resolve attribute 'valueDate' of 'com.namasoft.modules.basic.domain.entities.TranslationOverRider'
at org.hibernate.query.sqm.SqmPathSource.getSubPathSource(SqmPathSource.java:95) ~[hibernate-core-6.5.2.Final.jar:6.5.2.Final]
...
at com.namasoft.infra.domainbase.persistence.util.PersistenceUtility.getJoin(PersistenceUtility.java:138) ~[domain-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.infra.domainbase.persistence.util.PersistenceUtility.getPath(PersistenceUtility.java:109) ~[domain-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.infra.domainbase.persistence.repos.SearchQueryUtils.convertColumnsToSelectionsAndAddJoins(SearchQueryUtils.java:117) ~[domain-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.infra.domainbase.persistence.repos.GenericRepoImpl.countTabularResults(GenericRepoImpl.java:389) ~[domain-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.infra.domainbase.persistence.repos.GenericRepoImpl.tabularListPage(GenericRepoImpl.java:304) ~[domain-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.infra.domainbase.persistence.repos.DecoratedGenericRepo.tabularListPage(DecoratedGenericRepo.java:151) ~[domain-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.infra.domainbase.persistence.repos.Persister.tabularListPage(Persister.java:456) ~[domain-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.commonservices.utils.Lister.getPropertyListFromDB(Lister.java:523) ~[service-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.commonservices.utils.Lister.getListFromDB(Lister.java:336) ~[service-base-0.0.1-SNAPSHOT.jar:?]
at com.namasoft.commonservices.utils.Lister.list(Lister.java:150) ~[service-base-0.0.1-SNAPSHOT.jar:?]Explanation
This error most commonly occurs when a screen of type "For All Screens" or "All Files" is edited and the valueDate column is added to the columns displayed in the list table.
However, the valueDate field (actual date) exists only in vouchers (such as invoices or receipts) and is not present in files (such as translation override files). Therefore, when attempting to load a list that includes this column for a file that does not support it, the problem occurs.
Solution
Remove the valueDate column from the visible columns in this general modification (For All Screens or All Files), or specify the screen type precisely so that this modification is not applied to files that do not contain this field.
Warnings When Logging Into the System
Error: There are fiscal years with AllowCostProcessingWithClosingEntry set to TRUE
Cause of the Problem:
This error occurs when some fiscal years have the option "Allow cost, quantity, and entry processing after the closing entry" enabled.
Steps to Resolve:
- Open the Fiscal Years screen.
- Find each fiscal year that has this option enabled.
- Uncheck the "Allow cost, quantity, and entry processing after the closing entry" checkbox.
- Click Save.
What Does This Option Do?
By default, the system prevents any changes to accounting entries on dates prior to the company's closing entry date.
However, when this option is enabled:
- Modifications are allowed after the closing entry.
- This changes the results of financial statements after closing, which is not recommended and requires careful review before use.
Important
We recommend keeping this option disabled for all fiscal years, except in special cases and with the approval of financial management.
Important Note
Please perform a Refresh Critical Errors from the System Utilities page after correcting these errors.
Error: There are X user notifications which exceeds the limit of Y, this may affect system performance
This warning appears when the number of notifications in the system exceeds the maximum allowed limit (default 10,000 notifications).
Solution: Create a Scheduled Task to Delete Old Notifications
Create a scheduled task of type Action to automatically delete notifications older than 25 days.
You can import the task directly using the following JSON:
{
"scheduleType" : "Action",
"scheduleInfo" : {
"timeMinute" : "30",
"timeHour" : "2"
},
"hourInfo" : {
"runOnHour0230" : true
},
"sendAsMail" : true,
"className" : "com.namasoft.infor.domainbase.util.actions.EADeleteNotificationsByDuration",
"title1" : "Duration Days (default is 25 days)",
"title2" : "Delete Type (all, readonly) - Default is all",
"actionDescription" : "Deletes notifications older than specified number of days. Delete type: 'readonly' deletes only viewed notifications, 'all' deletes all notifications."
}In this example, the task will run daily at 2:30 AM and delete all notifications older than 25 days.
Task Options:
- Duration Days: Number of days - notifications older than this number will be deleted (default 25 days)
- Delete Type:
all- Delete all old notifications (default)readonly- Delete only read notifications
Changing the Maximum Notification Limit
If you want to change the default maximum limit (10,000) instead of deleting notifications, you can do so through the General Settings:
value.maxUserNotificationCountImportant Note
Please perform a Refresh Critical Errors from the System Utilities page after correcting this error.
Error: Backup folder is not configured, does not exist, or holds no recent backup
Three related messages come from the same check — the one that makes sure a fresh database backup actually exists:
Backup folder is not configured in general settings, please fill the Backup Folder fieldBackup folder {0} does not exist or is not accessibleThere is no backup file from today or yesterday in the backup folder {0}
Each of them links straight to the setting it is about, so clicking the message opens General Settings with the Backup Folder field in focus:
value.info.backupFolderWhat the Check Looks For
Nama reads the folder you name in Backup Folder, plus up to two levels of sub-folders beneath it, and looks for a file ending in .bak or .dbak that is either named with today's or yesterday's date in YYYYMMDD form, or was last modified since the start of yesterday. If it finds one, no message is raised. The check runs at server start-up and repeats every hour.
Steps to Resolve
- First message — the field is empty. Open the Attachments and Storage tab of General Settings and fill in Backup Folder with the path your backup job writes to.
- Second message — the path is filled in but the server cannot get to it. Remember the path is resolved by the application server, not by your own machine: check the spelling, and for a network share check that the Windows account Tomcat runs as can actually open it.
- Third message — the folder is reachable but empty of recent files. This is the message that matters most: it usually means the backup job itself stopped running or started failing. Check the SQL Server maintenance plan (or whichever tool takes your backups) and look at its history for errors, then confirm it writes into this folder with a
.bakor.dbakextension.
Do not silence this one lightly
The third message is exactly the warning you want on the day a server dies. If it appears, treat it as a broken backup until you have proven otherwise — do not switch the check off to make it go away.
When Nama Cannot See Your Backups
Some sites back up in a way the server has no view of — a storage-level snapshot, a managed cloud database, or an agent that ships files straight off the machine. There the check has nothing to find and would raise a permanent false alarm, so turn it off with:
value.info.doNotCheckForBackupExistenceThe full description of both settings lives in Attachments and Storage.
Important Note
Please perform a Refresh Critical Errors from the System Utilities page after correcting this error, or wait for the hourly refresh.
I Want to Make a Text Field Convert to a Link So I Can Enter a Website URL, with a Button Appearing Next to the Field That Opens the Link When Clicked
To achieve this in Nama ERP, you can use the following table:
Table: Text Fields Converted to Links
Table code: textToLinkFields Located inside Fields and Entities Settings, which is also where a text field can be made to dial a phone number or open an e-mail instead of a web page.
- Setup method:
Add a new record in the table.
Specify the name of the field that contains the link (e.g.,
details.text1ordescription2).You can specify:
- Type: such as
SalesInvoiceorCustomer - Or Entity Type List: to apply it to more than one type
- Type: such as
Or leave both fields empty, in which case the conversion will be applied to this field on all screens where it appears.
- Result:
- A button will appear next to the text field.
- When clicked, the link stored in the field will open in a new window.