* [http://wiki.ops4j.org/confluence/display/ops4j/Pax+Cursor Pax Cursor]By using Pax Cursor you will be able to install and start your bundles into any of Felix, Equinox, Knopflerfish or Concierge beside the built in Equinox.

* [http://wiki.ops4j.org/confluence/display/ops4j/Pax+Cursor Pax Cursor]By using Pax Cursor you will be able to install and start your bundles into any of Felix, Equinox, Knopflerfish or Concierge beside the built in Equinox.

My Blogs

Trifon's Paid Services

Adempiere Technical Support

This support consists of answering questions and providing advices.
Unlimited number of questions.
Technical support is available monthly or in chunks of 6 and 12 months from the Adempiere developer, Trifon Trifonov.
For the duration, you can ask Trifon direct questions via a special support mailing address.
Contact is email-only and replies are sent within one business day, often within hours.

Paid on site Adempiere User training

3500 EUR per week + ticket + hotel

Training plan customized to fit client needs.

Example training plan:

01) General overview of Adempiere ERP-CRM system.
02) Introduction to user interface.
03) How to setup new Company in Adempiere.
04) How to setup new Organization in Adempiere.
05) How to create and import Chart of Accounts.
06) How to create new Product, Product Category and set Product Price and Price List.
07) How to create hierarchical Categories of Services and Products (categories, subcategories, etc)
08) How to import Products from external sources/systems.
09) How to create Discount Schema and Price List and apply specific discount/overcharge for specific Product Group/Product, e.t.c. How to create Discount based on a percent or fixed ammount.
10) How to create new Business Partner(Client, Vendor and Employee).
11) How set Credit Limit for Business Partners. Apply a credit limit to a client and Adempiere lock sales when limit is reached.
12) How to Assign discount to specific Business Partner, and change it in every sell.
13) How to import Business Partners from external sources/systems.
14) How to create Purchase Order.
15) How to track purchases: list purchases that are not received, due dates.
15) How to create Material Receipt.
16) How to create Invoice (Vendor)
17) How to create Sales Order.
18) How to create Shipment (Customer).
19) How to create Shipment Confirmation.
20) How to create Invoice (Customer).
21) How to create Payment.
22) How to match Purchase Order - Material Receipt - Invoice (Vendor).
23) How to match Sales Order - Shipment - Invoice (Customer).
24) How to create Cash Payment and Cash Receipt.
25) How to create Bank Account and Bank transaction.
26) How to modify Print Format of documents.
27) How to setup emails of Adempiere users and send emails with attached document(Purchase Order, Invoice, e.t.c) to clients.
28) How to create Users and assign User permissions.
29) How to setup Window, Tab and Field permissions for specific Roles and Users.
30) How to share data between Organizations and users.
31) How to setup records to be readable only by their creators.
32) How to setup taxes.

Paid on site Adempiere Developer training

4000 EUR per week + ticket + hotel

Training plan customized to fit client needs.

Example training plan:

01) Overview of Adempiere setup in Eclipse.
02) Layers in adempiere and where clases are located in the source tree?
2.1) Model (Domain) layer.
2.2) Business logic layer.
2.3) GUI - Swing layer.
2.4) GUI - Web layer.
03) How to add new table and columns in Adempiere?
04) How to generate Adempiere model classes for the newly created table?
05) How to add validation, pre-pressing and post-processing logic for the new table?
(beforeSave, afterSave, beforeDelete afterDelete)
ModelValidator
06) How to add new Window, Tab and Fields?
06.1) How to add new Tab which has Tree?
06.2) How to add Translation Tab?
07) How to add GUI callout?
08) How to define new Document in Adempiere?
09) How to add business logic for the newly created document?
10) How to add Process in Adempiere?
11) How to add java code for the newly defined process?

Paid Adempiere development

1000 EURO / day

Please call for discount if you plan to book more than 150 hours

Paid EDI @ Adempiere support and training

If you need training or support for EDI in Adempiere, please do not hesitate to contact me.

Project 3 (area: Supply Chain Management)

Extension for Compiere MFG-SCM project.
Developed java application for java enabled mobile phones.
Developed web application.
Developed connection module that enables data scanned with bluetooth enabled barcode scanner to be transferred to mobile phone and after that to web application.
Application allows factory to track in real time product/part availability.
Used Java, JSP, Servlet, AJAX and J2ME technologies.

Trifon's Recent thoughts

Strange live

Working in Open Source space is very hard sometime or probably most of the time. Contributor's work is in public space and everyone can see it and make comments. I do not speak only for source code, but wiki contributions, forums posts and so on. Contribution to Open Source project has many faces and this is good as all we are good in different areas. Open Source project gather contributors at one space and gives them freedom to express their self. All this is very very nice, BUT, there is always one big BUT. This word makes me sad sometimes, not the word itself but the words which come after BUT. For me Open Source first of all means Free Will to do something, FREE will to comment something, and so on. Just FREE, like i'm free to do it. I do not want anyone to push me to do anything in my Open Source project especially when this man is a man like me, who works side by side with me. I understand that first job of people is for commercial companies with strict rules for everything, but applying rules to Open Source most of the times leads to mistakes. In Adempiere project i was one of the developers who expressed his opinion against rules and i made it not because i do not like rules, but because rules can't work in the Free world. At least rules which demand a contributor to do something when other contributor contribute. I do not see how a contributor can demand other contributor to review his contribution. Contributor can ask for opinion of other contributor, but trying to push other contributor to do something is just something which is not going to happen. Words 'demand' and 'rule' live outside the Free will world of Open Source and are not compatible with the Free world of Open Source. In Adempiere project we have one prove of my words - Policy which demanded a peer review of committed code was reverted, because trackers were left in not appropriate state (in most of the cases second developer do not took the demanded action).
I write this words because i want to remember my thoughts and writing is the best way to save thoughts in time. I predicted that push of rules in Adempiere would fail, but my prediction increased my bad karma image and my image of complainer which makes me sad. I'm not a complainer, i'm a contributor. I was trying to show to other developers that rules will fail but i didn't found enough understanding at that past moment. Sometimes i wish not to see such bad things, i wish to be calm and nice guy applauding nice contributors and consuming their work anonymously.
Trifonnt 10:24, 15 February 2008 (EST)

Requirements of very small companies

How customers should approach Open source vendor

Yes, I get quite a few requests to have Alfresco integrate with JBoss and Liferay, and I've done business with both. But I didn't need a committee to tell me that. Customers did. Customers have yet to request integration with Compiere, for example, so we haven't done it. Someday we probably will. But when customers vote with dollars.

Interesting requirement: Map Your Contacts By Region

Select a group of accounts based on geography...let's say all accounts in Texas. Then be able to map those accounts on an interactive map that will show the locations of each of those accounts as push pins. When you roll over each push pin, it pops up the name of the account and any specified modules like opportunities, calendar etc. Another cool feature would be select any two accounts to calculate the distance/drive time and even download directions.

Trifonnt 02:07, 11 December 2007 (EST)

Number of Adempiere developers

22 May 2008.

Adempiere has 70 registered developers in sf.net.

trifon 03:28, 22 May 2008 (EDT)

11 December 2007.

Adempiere has 56 registered developers in sf.net.

Trifonnt 02:07, 11 December 2007 (EST)

Risk to be Open Source developer

Here i will try to identify some of the negative sides of being Open Source developer. This are real examples which happen to me and make me sad.

Help a user and after few days/weeks/months receive a spam message from the company where user work or from him personally.

NEVER help a user in private emails. Private emails are for paid support only!

Many times colleagues or other people tell me that i must increase my prices. It sounds quite good as advice, but the bad side is when they start working with you they are not so happy to pay you recommended by them price. ALWAYS RESPECT YOUR PRICE!

It is your price which is good for you and under your conditions.

Many times Managers invite me on a beer and pay the bill. In a return after few days they send me contacts of their employees to help them with technical question. Bad understanding of Open Source model. The fact that source are free do not gives them right to think that i will help their employees for free. It is developers time which must be paid, no matter if he works on Open Source project or commercial project.

Trifonnt 14:43, 1 November 2007 (EDT)

Idea for additional meta data: AD_Table NamedQuery

JPA has very nice feature 'Named Query'. It would make Application Dictionary more reach if Adempiere has such feature. This idea is very near to Finders, but it allows more wide range of queries.
Trifonnt 19:17, 26 October 2007 (EDT)

Idea for additional java interface: DocumentConversion

Adempiere ERP-CRM has processes which generate new document from existing document. For example Generate Invoice from Sales Order. This are quite useful processes, but currently they are not designed with the idea for extendability's. For example if user define new fields in Sales Order and would like to see values of this fields transfered to Invoice and Shipment later then he must modify source code of GenerateInvoice and GenerateShipment processes. This is not easy and i think that design can be improved. Possible improvements:

Define new java interface and invoke classes which implement this interface. This require changes in existing GenerateXxx classes.

Define new structure in Application Dictionary which will describe which fields must be transfered during Document Generation process.

Trifonnt 17:59, 26 October 2007 (EDT)

Data Services

In middle of this article i found that Adempiere has this beautiful functionality.

This approach requires tools that can capture existing data structures from reverse-engineered relational database schema's, and can map these existing structures into more business-oriented data views.

Adempiere AD(Application dictionary) on which all tables and windows are based provides meta data for all data structures in the system and even for all graphical components! But with Adempiere user do not need to reverse-engineer database system, all data structures have business oriented view by design.

Why fights in Open Source projects are bad?

What an ERP system MUST NOT allow user to do?

i have deleted "big bazzar and System", the default clients and i can't enter to OpenBravo now what is the solution?

Interesting? This sounds like:

i have deleted "Local Disk C and D" and i can't enter my windows system what is the solution?

One of the most valuable ideas in Compiere is IsActive column and restriction to delete records in most of the tables. It is good if user can delete some Client, but System records must never be deletable!
This makes another question to me. Is ERP for every user? My answer at this moment is NO. User who implement ERP must be very careful, conscious and most importantly must always make backup of data.

Trifonnt 17:01, 4 September 2007 (EDT)

OpenBravo Green?

Recently OpenBravo Green came into my mind(Jordi Mash told me about OpenBravo Green at Adempiere conference in Belrin) and i decided to review it and to check status.

Source code of prototye was more interesting for me and it was the reason that made me write this post.

I expected to see more commnents and more TODOs. It is prototype and important is to see what developer intend to do than what has been done. Visibility of ideas and intentions is more important than actual work finished. This is not a minus it is just a note and wish from my side.

Source code dissapointed me, because:

I saw one regular web based application. No trace from the idea of Model Driven Architecture or Application dictionary. Probably model classes were generated by some tool, but no evidence or comment in the code or in the wiki pages.

Only one author, no participataion from community.

Author is Adrian Romero, who is very good POS developer(Tina POS), but i doubt about his experience in ERP systems and Application Driven systems. It looks that he is the only active visible OpenBravo developer.

Adempiere: Which is first Data or Code?

Recently i modified very deeply core of Adempiere in order to simplify development and to speed it up. I wasn't sure that such modification is possible and i was very happy when it happened and when at the end it even worked. After some tests i decided to revert to old version of persistent classes (X_xxx) and i deleted newly generated classes and started well known old GenerateModel, but... It failed because GenerateModel needs persistent classes in order to connect to Database. But developer can't generate persistent classes because GenerateModel can't connect to DB. So we got cycle... And here comes my question: Which is first Data or Code?
I think that design of GenerateModel can be improved:

In order to connect to DB it should not need Adempiere Client.

Data from DB can be moved to external location like (CSV or xml file), but this could creation duplication of data(stored in DB and in file). Not so good idea.

Does Community Open Source project need roadmap?

A program for future development indicating what will be developed and when.

My opinion is that it must be more like:

A program for future development indicating what will be developed, by who will be developed and when.

Three very important conditions in order to have Roadmap:

Functionality

This is easy to be done. All we need functionality and all we with pleasure advice what to be done. So i think that here ANY project can produce good number of items.

Who will develop it?

UPS, here the problems come. In order to develop something WE need knowledge, so from the big list of ALL only developers can participate in development. All this means that in Roadmap, Open Source project must identify developers or companies that will create new functionality. Ok, let's say that i would like to build this new functionality and i write my name against the feature.

When functionality will be developed?

Who knows? Who can answer? Who is responsible?
It looks that WHEN brings more question than it answers. In Open Source project if no one commit his time to develop given functionality no one can answer the questions. Moreover if someone commit his free time does anyone has rights to push him for specific date? I do not think so... It is developers free will to participate and create functionality. And as you guess in most of the time it is hard to find free time for building big functionality.

My personal opinion is that spending time to create Roadmap without committed developers/companies against specific functionality is just good wast of time. Even worst it is confusing for the end user who read Roadmap and wait for new version and new functionality.

My big excuse to the users who will be frustrated from ssch Roadmaps.
Trifonnt 19:31, 8 August 2007 (EDT)

To be Adempiere Developer or Adempiere Businessman(Seller)

I work with Adempiere/Compiere since more than 3 years. I must say that i like the product and area very much. I like to develop extensions for Adempiere and i do it everyday for 10-12 hours a day and sometimes more. I know it is not healthy, but...
But last weeks i started to feel tired from all the rules for Developers and all fights in forums and in email lists. Also i realized that Business people around Adempiere do not have such limitations as Developers. For example:

Some of them nothing. Well business people say that if we limit and ask for money then this will stop add option of Adempiere. But may i ask how developers can survive?

What they get?

FREE Advertisement. Perfect... I think that Adempiere is the only project that allows such thing. Most of other Open Source projects take money for advertisement and put money back into the project.

I have read that some of Adempiere Implementation Partners do not work for less than 50 000 USD. Amount which i as developer do not had chance to see till now. Who knows someday Clients may find that contracting developer is much faster and cheaper...

User expect developers to provide FREE help in Adempiere forums, which gives additional workload to developers.

Developers are expected to be open and expose all their information to community.

So:

I found that i had made mistake.

It looks that to be Businessman and make money around Adempiere is much easy and painless than to be Adempiere developer. :(

I think to reconsider my role in Adempiere project. Role of Implementation Partner looks much safer and giving more incomes.

I should start making advertisements from now... So here it is: I can provide Adempiere on Site Implementation for 1500 EURO / week + expenses(hotel + ticket) in case i need to move to other location.

No plugin/module support. Both ADCK and 2Pack support dynamic deployment of AD changes but doesn't address the need to deploy java code extension ( especially problematic/messy if your extension needs to use additional third party library).

workeffort Businesses perform work efforts within their organizations to accomplish tasks such as producing products, developing software, mantaining assets etc. This system helps in managing these kind of tasks. It also includes a time tracking system.

Can you create an open-source developer? You were able to find them. Did you ever "build" one?

We tried once to create an open-source developer out of a normal developer, but it completely failed.
We never tried it again. Truth be told, I had an aversion to it.

An open source developer is a self-starter.
He's competitive - this is someone that wants to prove that they can do something better than you can.
As such, it's a great recruitment/qualification vehicle, because you can see their work before you ever think of hiring them.
You can see if they'll work out for the company.
We definitely took that approach to hiring.

Financial based

I think that Adempiere would get a lot of kudos if Adempiere went the XBRL route www.xbrl.org for financial reporting. For listed companies (and even for unlisted) XBRL will be the way to go especially for any international company that has to consolidate accounts from multiple legal entities in multiple countries in a standardized manner. This would be an essential component of an ERP system in the 2008-2009 time frame. If Adempiere would have its COA structured the XBRL way and have XBRL compliant financial statements at company/consolidated level it would be an AMAZING value proposition to so many organizations.

Invoice creation/generation

Budgeting

Payment processors

CS and ROT explained

In UK two methods of trading are popular with manufactures and wholesalers - Consignment Stocking(CS) and Retention of Title (ROT).
The question is does ERP handle these types correctly?

CS is where stock is supplied and title transferred on sale to the end user.

ROT is where title is transferred on payment by the wholesaler.

This means that some goods held in the wholesalers warehouse will not belong to him and should not be counted as assets until title is transferred in the case of ROT and not at all in the case of CS unless the wholesaler uses ROT himself.

Bank/SWIFT oriented

WIFEWIFE is an open source Java library for SWIFT messages parsing, writing and processing. The components are heavily tested and running in production environments since 2005.

Seventh Research Framework ProgrammeEuropean Union’s chief instrument for the public funding of research, an increase in private funding of R&D is one of the key goals of the EU’s Lisbon Strategy for ‘knowledge for growth’, and the programme is designed with this in mind.

Talend

iButton

SPML

Service Provisioning Markup languageOpen standard for the integration and interoperation of service provisioning requests. SPML is an OASIS standard based on the concepts of DSML. SPML version 1.0 has been approved in October 2003. SPML version 2.0 has been approved in April 2006. SAML exchanges the authorization data.

INCOTERMS

Pricing

Interesting Proposal/Requiremnts

Web Service

1. Products - When entering a new product, call an UPC/EAN webservice
(http://www.gepir.org/) that validates a product UPC/EAN and populates the item
description and trade info (size, weight, etc).

2. Business Partners - When entering a new Business Partner, call a Company
Registrar to validate (and populate) company registration / vat numbers and
registered address, directors, etc.

3. Credit Checking - When entering a new Business Partner, call a webservice
to perform a credit vetting / check after which the report can be populated
into a credit check table or attached to the record.

Double UOM

Expectations from Adempreie

* It must be stable. I'm running my business and other's businesses on it and it must not stop working at any time.
* When I upgraded to the 3.52a release the invoices stopped printing due to a bug. To get the invoice printing to work Adempiere must be patched. This shouldn't happen in releases.
* User friendly - If the system isn't user friendly it's harder to convince people to work in it.
* Secure - I posted previously a message about Adempiere being easy to break into and that it can't be on an untrusted network. It's OK to have an insecure application as long as everybody knows it's insecure. For business critical data the implementors must know how to secure Adempiere.
I'm working on the user friendliness part (the Account Editor was the first step) and when I have time I'd like to work on the security part.
One example on how user friendliness can be improved is to increase the searchability
in accounts (you can't zoom to documents from accounts-view today) and make
a really simple form for creating manual general ledger entries. Manual general
ledger entries today are far too much work than what a normal accountant is
used to in other systems.

Posterita WEB POS

Issues found

Posterita WP POS expect that TAX Category has only one Tax Rate assigned to it.

Posterita create AR Invoice while POS Order type in Adempiere creates Invoice Indirect. This allows to distinguish Invoices creates by POS. Of course Business partner also can allow sot distinguish POS invoices, but more consitent behavior is to create Invoice Indirect.

-01) Login as System Admin and add new window for the table "U_POSTerminal".
-02) Use the "Create Fields" button on the "Tab" tab to add all the fields of this table.
-03) Go to System Admin->Gerenral Rules->System Rules->Menu window and create a new menu item.
-04) Select Window as the Action and point it to the new window you just created (by selecting it in the window dropdown).
-05) Log out and log back in as Garden Admin.
-06) Using you new window create a new POS terminal. Chose what ever you wish for the settings.
-07) Go to Quote-to-Invoice->Sales Orders->Web POS->
-08) Go to the role menu here and create a new record with "Web Menu"=smenu.cash.sales and "Role" = "GardenWorld Admin".
Uou can add more if you wish but I think this is all that's needed for basic sales.

Adempiere Frequently Asked Question

Practical Use of Document Type & Sequence

What is its real purpose of Document Sequence

The purpose is to have different sequence (Document No) for each document type.
For example: Imagine you want to difference the PO depending on what you buy.
You could have the document type "Purchase Order-A" and the "Purchase Order-B".

So for the same transaction (Purchase order) you can difference distinct sequence numbers.

How to create new user and restricted access rights?

Define Role for User
Create Role:

Click on the General Setup -> Security -> Role
Click on the New button(ex: MyRole).
Select the Organization from drop down.
Enter the Name for role.
Select the User Level from User Level drop down.
Tick on the Manual Checkbox.
Click on the Save button.
Click on the Grant Access button (eg:Access to All for Sale Module).
Select the Module from drop down that you have to include.
Select the Access To from drop down that you have to include.
Click on the OK button.
Click on the Save button.
Click on the Org Access tab.
Select the Organization for newely defined role.
Click on the Save button.

Create User:

Click on the General Setup -> Security -> User.
Select the Organization from organization drop down.
(Note: user organization and define role organization must be same.)
Enter the Name for user(ex: ABC).
Set the Password for user.
Click on the Save button.

Assign Role to User:

- Click on the User Roles tab.
Select Role from drop down(ex:MyRole).
Click on the Save button.

Click on the User tab.
Select the Default Role from drop down(ex:MyRole).
Select Default Client from drop down.
Select the Default Organization from drop down.
Click on the Save button.
Login as ABC user.

Click on "Tab".
Go to the end of the list and add a new row. Zoom in and set Table to "M_Storage_M_Storage", Name to "Located at", Description to "Where are my units located?", Tab Level to "2" and check "read only".
Now save and click on "Create Fields". Thats it. Now you can see where your units are when zooming into a product.

Security

1) ADempiere support role based security - Role window.
2) Role Data Access. You can also play around with SQLWhere in Window, Tab & Field.

Example:
(instr('@#User_Level@','C')<>0 OR C_BPartner.CreatedBy=@#AD_user_ID@ OR C_BPartner.SalesRep_ID=@#AD_User_ID@)

For pricelist, there's one place you can't hide price from user, which is Product Info. You need to modify some codes to do this. What I did is add IsCanViewPrice option in Role so now each role can be set either they can view price or not.

Listing a BOM within a BOM

Here is the view in Oracle... Because we have so many parts we ended up doing
a materialized view that we update with a process in Compiere everytime we

change

a BOM. We did that so we could report off of this view faster.

I am sure someone out here could write a much better query than this but here
is what I did. Basically, created a view on top of itself so that the parent
records would null. Then used the connect by clause to generate the hierarchy.
You will also notice the use of connect_by_root = Top level of bill.
Connect_by_ISLEAF = bottom level of bill. Level = what level of the hierarchy.

If you want to use materialized views... we did it the following way (I really
know very little about them, so if someone has a better idea of how to use them
for this, it would be appreciated)
The materialized view would be

Add OnHandQty In Product window

First the SQL
1) You want On Hand Qty - Product can be stored in multiple locators in M_Storage table. I assume you want total of all locators
2) So SQL = SELECT SUM (QTYONHAND) FROM M_STORAGE s
3) Now you want to sync with product table, so we add WHERE s.M_PRODUCT_ID = M_PRODUCT.M_PRODUCT_ID
4) So the final SQL we need is (SELECT SUM(QTYONHAND) FROM M_STORAGE s WHERE s.M_PRODUCT_ID = M_PRODUCT.M_PRODUCT_ID)
Now lets add it to compiere:
1) Log in as SuperUser or System
2) Role = System Administrator
3) Open Table window
4) Select Column tab
5) Create new record
6) Insert a name for DB Column Name
7) Choose a system element in this case most likely Qty_OnHand
8) Reference = String
9) Length = 20 should be plenty
10) Click Save
11) Click synchronize column, cross fingers
12) Look on bottom left of window for alter table M_PRODUCTADD name of the field you just made
Lets add it to the M_Product window.
1) Go to Window Tab Field
2) Choose Product Table
3) Goto Tab
4) Choose the â€œtabâ€ we want which is Product (it is for the M_PRODUCT table)
5) Choose Field Tab
6) New Record
7) Name your Field (Qty on Hand)
8) Column â€“ Choose the new column you created.
9) Save
Now open the Product window and it should work!

SECURE SCENARIO to use Adempiere

2 - Install two servers - one for NX (call it NXServer), and the other for oracle and JBoss (call it ADServer)

3 - Allow clients just run through NX connection (you'll have total control of the ADempiere.properties in a linux box)

4 - Configure the ADServer to only accept connections from NXServer

5 - Configure the Oracle in ADServer to only accept connections from the same ADServer and from NXServer

SERVICES ON WEB

1 - Don't expose web services from jboss directly

2 - Install an apache server to expose in a controlled way just the needed services and pages from jboss adempiere

In this scenario NX can be replaced with any terminal server software (Microsoft TS, Citrix, Sun Global Secure Desktop, etc).
And you must incur in costs of terminal server software licensing - but security is not free.
And you must ensure all those servers - ensure NX, ensure oracle, ensure jboss, ensure apache, ensure linux, etc.

Maintain multiple environments(Postgre multiple schema managing)

PostgreSQL Materialized Views

Report sales figures by product

1. Create a Report Line Set called All Products.
2. Create a Report Line under it called Product with a Line Type of Segment Value (leave Posting and Amount Types blank)
3. Create a Report Source under it with Type=Product and leave the Product field blank
4. Create a Report Column Set called Current Period and YTD
5. Create 2 report columns under it, one for Current Period and YTD. The first one should have Posting Type=Actual, Amount Type=Period Balance, Column Type=Relative Period, Relative Period=0. The second one should be the same except Amount Type=Year Balance.
6. Then create a Financial report using these Report Line and Columns Sets. Make sure to check List Sources when you run to see all the products. Warning, If there are more than 1000 products it won't work (we're obviously aware of this limitation and working on removing it).

You can easily produce a similar report for Sales by Business Partner by just substituting Type=Business Parter in Step 3.

How to change document numbers?

Here you can see all existing document types like Purchase Order etc. If the 'Document is Number Controlled' checkbox is checked then you will have a Document Sequence field (a drop down). Right click and zoom to the Document Sequence window

Performance Analysis -> Accounting Rules -> Document Sequence

Here you can change the current next value, the increment and you can add prefix and or suffix for your order/invoice numbers.

How to add comment on printed Invoice?

BOM price explained.

BOM Product price is depend of the price of the products which built it.

For example Product A consist of 1 product B and 1 product C. Product B and C are being priced at USD 5 and USD 6 respectively. The price of Product A would be USD 11. You cannot change it.

Meanwhile we often find a case where the price of Product A IS NOT the price of product B or C combined. It can be higher or lower. I try to add price to product A, which not the combined price but it doesn't work. This is what happen.

I put price of USD 15 for product A. When I created Sales Order, and I chose product A the price was still USD 15. Everything felt right. And then the disaster came. When I click Complete button suddenly the price change to USD 11!

If the BOM is not stocked it is considered a 'basket; and will compute the price based on the component prices.

If you want to assign a price change it to 'stocked'

How to enable Multilingual documents?

Client Window -> Multilingual Documents

Language Window
Language Maintenance -> Add missing translations

How Cost centers are implemented in Adempiere?

sf.net post
Adempiere support cost center using organization setup( have a look at the organization and organization type setup).
Also, the transact organization element could be turned on in accounting schema to handle this.

How to list General Ledger Transactions?

How to setup Manufacturing process

01. Define a Resource as Plant
02. Create your resource Type this will determinate the capacity for your resource
03. Create your resource (Production Line , Work Center , Work Station)
03. Create a Manufacturing workflow (routing) where you define the process to
manufacturing your product, so you need define each step the process and assign
the resource where will execute the work.
04. Create the BOM to manufacturing your product, you need define if will use
BOM or Formulas.
05. Create Manufacturing Document .
06. Use the BOM and workflow to create a new Manufacturing order
07. Change the Document status from draft to in process
08. Use Component check
09. if your component are available then use Print & Release Order
10. use Order Receipt & issue to report the component and finish good.

init.d for centOS

Sql which set QtyInvoice = QtyOrdered for given Organization.

update c_orderline ol set ol.QTYINVOICED=ol.QTYORDERED where C_ORDER_ID in (SELECT C_ORDER_ID FROM C_Order o
WHERE DocStatus IN('CO','CL') AND IsSOTrx='Y'
AND AD_Org_ID=1000001
AND EXISTS (SELECT * FROM C_OrderLine ol
WHERE o.C_Order_ID=ol.C_Order_ID AND ol.QtyOrdered<>ol.QtyInvoiced)
);
commit;

How to fix issue: Active workflow for this record exists?

Sometimes Adempiere crashes while processing a document. This usually leaves the document jammed in between two states.
If you try to reverse it and rather unhelpful error message says there is an active workflow which must be completed first.
To complete the work flow go to
Workflow -> Workflow process
then in the grid view find the work flow process with who's record_ID is the same as the document in question.
Switch to the tab view and click
Manage Process -> then check 'Abort' -> click okay.
Go back to the document, requery (blue arrows), and you should now be able to reverse the document.

How to setup embedded tab?

Example how to setup UOM Conversion tab as embedded in UOM tab.

Steps:

1

Window: "Unit of Measure"

Tab: "Unit of Measure"

Field: "C_UOM_ID" make it visible.

Field: "Included Tab" set value to: "Conversion"

2

Tab: "Conversion"

Set "Sql Where":

C_UOM_Conversion.C_UOM_ID=@C_UOM_ID@

How to enter Payment from BP to another BP?

easiest - reverse correct the payment and re-enter as if coming from the the
BP with the invoices and enter notes/descriptions to show what happened.
less easy - create an invoice to the BP who paid and put to a Charge pointing
to a suspense account. enter a credit note to the BP with invoices and put
to same charge then allocate the credit note against the invoices.

Hint-2; Be carefull when creating VIEWS

Use LEFT/RIGHT OUTER JOINS, because in many cases fields do not have values and INNER JOIN will not show all records.
In this example C_Invoice.C_Order_ID is not manadatory so view will not show records which do not have Order associated with Invoice!

FROM C_Invoice i
INNER JOIN C_DocType d ON (i.C_DocType_ID=d.C_DocType_ID)
LEFT OUTER JOIN C_Order o ON (i.C_Order_ID=o.C_Order_ID)

Hint-3; Java on Ubuntu

Ubuntu came with default version of java 1.4.2 and installing 1.5.0 didn't change that. So developer have to change it. Exporting the path to your newer java to the .bashrc config file of your environment is a standadrd decision but is not system wide and in some cases is not enough.
The decision is. When you type at the prompt:

$ sudo update-java-alternatives -l

will see the versions of all javas installed into your system. In order to make the latest one default for the whole system type:

MFG

1. Apply the following patches:
buildbase.patch.tim
buildclient.patch.tim
buildutils_dev.patch.tim
X_AD_WF_Node.patch
X_C_DocType.patch
X_S_Resource.patch
X_AD_Workflow.patch
X_M_Cost.patch
X_M_Transaction.patch
X_M_Product.patch
2. I copied adempiere/libero/build.xml.tim to adempiere/libero/build.xml
Build your Adempiere and run it.
3. Create a new client and import accounting etc...
(If you don't do this you won't see all the menus, you can't just login under GardenAdmin/GardenAdmin that is not enough)
It looks that 2pack file do not contains proper access records.
Must research!!!
4. Login with your new client Admin login you created in step3 and Libero away!!!

Compiling adempiere + libero from SVN head

Libero Manufacturing functionality is in branch/stable and is not necessary to perform below steps!

1. Check out the head version of both libero and adempiere
2. Build adempiere
3. Build libero
4. Rebuild adempiere (to get the libero.jar into the install)
5. Set up the database. (Create database, run the pljava deployer, drop the
sqlj schema, import the dump file)
6. Run the 330-trunk database migrations
7. Copy EE01.zip into the packages directory
8. Run silent setup and start the app server.
9. Launch the Adempiere client
10. Add the EE01 entity type
11. Pack in the EE01.zip
12. Copy libero.jar into the packages/packages/EE01/lib directory.
13. Re-run silentsetup and start the server.

Template Process and steps to create a process

1)create a java class extends org.compiere.process.SvrProcess

2)Implements two methods
void doIt()
String prepare()

In Prepare method you can get different parameters
ProcessInfoParameter[] para = getParameter();
for (int i = 0; i < para.length; i++)
{
String name = para[i].getParameterName();
if (para[i].getParameter() == null)

else
System.out.println(name);
}
and in doIt method you try to insert this parameters into your table
after you create this class
Login with system administrator role

How to enable Query TimeOut in Adempiere?

How to decrease number of log files created by Java WebStart?

Problem is missing ADEMPIERE_HOME on the machine.
Webstart works fine without environment variable set, only resulting in many many logfiles.
After setting the variable to c:\adempiere it created the log folder and used just one file per session as expected.

How to post accounting transactions without Application Server?

License to use for new classes

/**********************************************************************
* This file is part of ADempiere Business Suite *
* http://www.adempiere.org *
* *
* Copyright (C) Trifon Trifonov. *
* Copyright (C) Contributors *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License *
* as published by the Free Software Foundation; either version 2 *
* of the License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
* MA 02110-1301, USA. *
* *
* Contributors: *
* - Trifon Trifonov (trifonnt@users.sourceforge.net) *
* *
* Sponsors: *
* - Company (http://www.site.com) *
***********************************************************************/
...
...
/**
* @author Trifon Trifonov
* @version $Id$
*/

2Pack vs. ADCK comparison table.

This table is made with the sole purpose to help me to organize information regarding import/export tools in Adempiere.
I do not have any idea to push any of the tools mentiod here.
It is user's choice to use or not to use any of them and also users choice to have headache after thier usage.

Weak sides of 2pack according me

Require integration at source code level with Adempiere, which means that if i need to customize any import functionality i must rebuild whole application or patch it.

Carlos pointed that 2Pack can import records into any table, even customized.

My comment is regarding main xml elements like: menu, window, tab, field, process, ... First time when i understood that i need to modify main xml elements was for JasperReports integration when i had to add new column into AD_Process table.

I think that GenericPO which is responsible to import records into Any Table had one issue (I have to remember the exact reason. It was regarding Sequences or something related. ).

Format of general imports is complicated.

Main class(org.adempiere.pipo.PackInHandler) which handle import is very big(3800 lines) and complex, which require lot of time for developer to study it and makes modifications hard task.

Since version 3.3.0 Low Heng Sin refactored org.adempiere.pipo.PackInHandler and now it is split into multiple classes.

Ideas for extensions

SOUNDX support

Computerized Maintenance Management System

sf.net post
CMMS is Computerized Maintenance Management System that designed specially for preventive maintenance for assets such as light vehicle, heavy equipment etc. so that company can create budgeting for repair and maintenance for their assets. Technicaly the module give alert to user when an asset have to get action such as replace fuel filter, oil filter or other item spareparts. Therefore these module related with inventory (internal use). Inventory will decrease its stock when user CMMS request for repair and maintenance their an asset.

Additional fields in I_Xxx tables

Hi, every time I customize tables for a customer (almost all projects) I need
to change the importers and/or make some tricks with not used fields on import.
[Struggling today with this case]

Idea!

Not tested, but I think I could make a ModelValidator on udpate of I_ table
(i.e. I_BPartner) and process the corresponding fields.

The other thing we could do is to add some free fields to every I_ table as
wildcards to save customized or non considered fields and process them properly
with the ModelValidator.
Maybe just adding i.e. 10 fields FreeField01 through FreeField10 on the tables
can make the trick.

Jar file in 2pack/lib will be packed into Adempiere.jar

Starting from revision 3261 of trunk, any jar file that is pack of the lib folder of a 2pack package will be packed into the Adempiere.jar by the run_setup process. What this mean is, you just need to compile all libero specific code, pack it in a jar file and place it under the lib folder of the libero 2pack archive. Please look at the latest FAPack006.zip in the svn packages folder for an example.

Manufacturing Terminology

Queue time

Amount of time a person, signal, or thing spends before being attended
to, or before value adding work is performed to or on it. In many factories
queue time constitutes about 90 percent of the total lead time. It is a subset
of cycle time.

Queuing time

Cycle time

Period required to complete one cycle of an operation; or to complete
a function, job, or task from start to finish. Cycle time is used in differentiating
total duration of a process from its run time.

Bulgarian

ERP Requirements

Features that a composite of UK government bodies classified as Mandatory, Highly Desirable and nice-to-have in financial systems. Chapter 9 sets out their requirements on fixed assets. List they came up seems to have general application.

Seats/tables in a restaurant (or plane or cinema)

In my opinion the seat/table numbering problematic could be solved with the help of the entities AccommodationClass, AccommodationMap described in the book vol2. I will give you a short description of these entities and example of the "numbering issue" solution.

AccommodationClass - definition (based on the book but modified a little)
fields: accClassId, parentAccClassId, description

AccommodationMap - description:
Its idea is to provide information of the number of spaces offered by a fa/accClass. Here we can extend it to provide overbooking information and seat numbering information(the last two fields in the definition below)
fields: mapId, accClassId, faId, nrOfSpaces, overBooked, number

Example:
Define two tables.

- Table number 5 has 3 chairs. Chair with number 1 is baby_chair. The other two chairs with number 2 and 3 are high_chairs.
- Table number 9 has 2 chairs. Chairs number 1 and 2 are normal_chairs.

In similar fashion you can define theaters, planes etc.
Also overbooking data could be kept in the AccommodationMap entity which could be used for hotel reservations. Hourly reservations could be enabled as well with the introduction of the AccommodationSpot entity.

Introduction to CompiereIntersting how people use buzz words like SOA and make produce non true statements. Compiere is not SOA application! Where are the Service in Compiere? Who cares? Important is to make good advertisement :)

OpenBravo

this functionality does not exist in Openbravo standard product. However, this should be a relatively simple extension to build, especially in release 2.50 where there is a full layer of APIs that allow you to read and write transactional data using RESTful web services.
You could also build this functionality as a reusable module and share it with the rest of the community.

GCALDaemonOS-independent Java program that offers two-way synchronization between Google Calendar and various iCalendar compatible calendar applications. GCALDaemon is primarily designed as a calendar synchronizer but it can also be used as a Gmail notifier, Address Book importer, Gmail terminal and RSS feed converter.

Bean Validation

Loggin Frameworks

Pax LoggingThe logging support in the standard Log Service of the OSGi specification is minimalistic and not entirely suitable for enterprise applications. This project tries to address this by extending the standard interface with additional interfaces and using a strong logging backend, the Apache Log4J. Pax Logging defines its own API, but more importantly it supports the Log4J and Jakarta Commons Logging APIs as well, making it easy to create bundles that use these common APIs, either directly in new code or indirectly from inside 3rd party libraries.

Frameworks

WidgetServer is a component based, server-side, Java/XML rich-client-framework which enables an application to run as either

- an application with a rich Web client based on AJAX (HTML, XML, CSS, Javascript)
- an application with a simple Web client based on HTML and CSS
- a standalone application with a Swing GUI,
- a client/server application with a thin Swing client,
- or a mobile application on different devices like PDAs or Smartphones

Woko extensible Object-Oriented Wiki, where you don't browse or edit pages, but objects ! It's a mix of pure OOP, a generous portion of Domain Driven Development, a slice of good old MVC, and lots of other ingredients, all served hot in your browser.

Qi4jQi4j is an implementation of Composite Oriented Programming, using the standard Java 5 platform, without the use of any pre-processors or new language elements.

Apache CXFAn Open Source Service Framework. CXF helps you build and develop services using frontend programming APIs, like JAX-WS. These services can speak a variety of protocols such as SOAP, XML/HTTP, RESTful HTTP, or CORBA and work over a variety of transports such as HTTP, JMS or JBI.

Pivot Framework

PivotPivot is an open-source framework for building high-quality, cross-platform applications that are easily deployable both via the web and to the desktop.

Pivot ToolkitAn open-source framework for building high-quality, cross-platform applications that are deployable both via the web and to the desktop. It began as an R&D effort at VMware but has now been made available to the community as an option for developers who want to build rich internet (RIA) applications in Java.

Spring Integration

Impala

ImpalaA dynamic module framework for Java-based web applications, based on the Spring Framework. With a focus on simplicity and productivity, Impala radically transforms application development using Spring and related technologies, such as Hibernate, JMX, and other technologies.

Web UI Test Frameworks

Design Patterns, Design metrics, QA, UML

JDepend JDepend traverses Java class file directories and generates design quality metrics for each Java package. JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively.

PDFBoxOpen source Java PDF library for working with PDF documents. This project allows creation of new PDF documents, manipulation of existing documents and the ability to extract content from documents. PDFBox also includes several command line utilities.

You can see to the left a grid whith the LIST mode of the PUPILS and the FIRST field is the ACTION to apply to the records. The A action (Detail of subjects of this pupil) is selected for the first pupil and the B action (Printing of his curriculum) is selected for the second pupil.

The actions possible are detailed in the combo on the TOP RIGHT of the window. Options 1 to 5 are standard (always available by default). The rest of actions are specific to the model .

Finally there is a button for executing ALL the actions at the same time.

The default actions are:

1.-Pick: For instance to select a Customer for a invoice. By using this action you choose your customer and return to previous model (invoice)

2.- Edit: To modifiy the record

3.- Copy: To create a new record but previously copying the information of an existing record that is very similar to the new one

4.- Delete: to delete the record

5.- See: To see the record in detail mode and READ ONLY

OpenXava Q & A

Created an entity ticketClass with a method GenerateTickets. Implemented the calculator using an IModelCalculator class.

Want to create a button/link when ticketClass is displayed so that user click on it the method gets executed.

Q.1 How do I set this up?

A1. Have to create an action and include it in the controller of your module.

In this action, you can obtain the object and call to you method, something like this:

Q.2 How can I get the view of the entity refreshed after the method is executed.

A2. See the above code

Q.3 How can i reload other modules to reflect the changes made by an action that was performed in one module?

An action in one module (module A) that changes the value of the data
contained in another module (module B), when i execute an action button (in
module A), it executes successfully and updates the data in the other entity
(entity B) in the database, but when i view module B, the module list view (of
module B) is still showing the old data!

A3. In a Liferay 2.1.3 with OX2.2 it works fine, that is, I modify data in a portlet, I move to another and the data

is refreshed without touch filter nor any other action.
Look at your web/WEB-INF/portlet.xml, have you <expiration-cache>0</expiration-cache> for your portlets?
Since OX2.1 expiration-cache is 0 in the portlet.xml generated by OpenXava.
Hence, if you are using OX2.1 or better you only need to execute the ant target 'redeployPortlets' in order to fix your portlet.xml file.

Q.4 How to avoid warnings that messages are not translated

A4.

This messages warn you about the labels that you need to put in your i18n/YourProyectName-labels_en.properties.
Developer can avoid this messages putting the next line:

Q.6 How to provide a web API for accessing the OpenXava application?

Just use Web Services.
The OpenXava applications are standard Java Web applications, therefore you can use any Java API from your OpenXava application.

In this case you can create a simple Java class, with the services of you application that you want to expose.
And use from it MapFacade or the model objects generated by OpenXava, or whatever code of your application you want.
Something like this:

In XML you can use @mymagic@, and the filter of OpenXava ant build
changes it from a value of your properties file. This allows you
to have a different value of @mymagic@ for each customer or configuration.
This is a technique from OpenXava.

Q.8 How to access EJB from OpenXava

Reference Guide section 3.14.

There is a example of using a EJB inside validator.

Developer can access EJB code in any part of OpenXava applications, for example:

Q.9 Access rights depending on the user profile

User should only see fields or to execute actions depending on his user profile (or role).

Certain users to be able to update certain fields while others may only read them.

1. Option - provided by the container portal

Create two groups of users:

First with create-delete-edit rights.

Second only with read rights.

Define two modules(portlets):

First with CRUD controller.

Second with Print controller.

The admin may assign First or Second module (portlet) for each group of users with the portal administrative tools.

2. Option

Not completly implemented in OpenXava, but there are some useful tools in OX that can help:

Users.getCurrent() return the current user if application is started in portal. This value may be used in any point of the code.

Filters: filters the data displayed in the mode list according to the current user.

A full management of users in OX project implies creation of several modules for storing the info about users, interfaces for change rights and create new users, roles and rights, overwrite standard controllers, to write new actions (typically "save" action, frequently "new" action too), to write specific validator, to write filters for tabs in list mode, and more...

Javier's opinion: I think that part of this stuff can be moved to a new project, instead of be included in OX core. This new project would manage access rights and user profiles, and will be reusable for other projects.

Option 2. View properties (section 4.5 of reference guide)

View properties are used for the case that you want to have something editable in the view, but you do not want to save it in DB.
View properties do not have same functionality as properties. That's why this behavior is normal.
For some reason view property do not show the same result:

In this case the loop is over entrySet of a Map, hence the order is unknown. You can modify this method in order to work by the correct order, some method of MetaModel returns the member names
in order of declaration.

Q.21 How to disable the icon in the corner most column in column arrangement view?

Modify list.jsp.

Q.22 How to open custom JSP view in a pop up window?

Is it possible to open custom JSP view in a pop up window?

No. The custom JSP must be inside the module.
Use IForwardAction that has a method (inNewWindow()) for create a pop up windows.
You can put your JSP in a public folder, and send the parameters for this jsp using OX session objects.

Q.23 How to hide/show view section depending on user rights?

Some users must be able to see given section from the view while other users must NOT be able to see this section.

At the moment developer can hide (using View.setHidden) members and groups, but not sections.

Use a validator for property X (reference guide 3.8.6), and inject in the validator the property A (using <set />).

Use a model level validator (section 3.16).

You cannot change the state of a property from 'required' to 'not required' at runtime (well, you can, but you shouldn't), because required is a feature of the model, not of a view.
You can access to the MetaModel at runtime and change the value of required, but if you do it in this way the value will be change for all modules, and all users at the same time, because you are modifying the meta data of the model.

Q.26 How to display property of a reference?

View properties are used for the case that you want to have something editable in the view, but you do not want to save it in DB.

If property must be read only than use a calculated property.

If property must be editable than:

Use a property of the view, populate it in the code in SEARCH_ACTION, and save its content in your own Save action.

Q.36 How to hide field/property

Section 3.8 of Reference Guide:

A hidden property has a meaning for the developer but not for the user.
The hidden properties are excluded when the automatic user interface is generated.
However at Java code level they are present and fully functional.
Even if you put it explicitly into a view the property will be shown in the user interface.

Hidden property is used mainly for hidden keys, but if you put the property in the view, the property will be show.

Example code:

When the user click 'Others' from languages combo box, the Others text field should be displayed.
Entity part:

The action is perfect, when user choose the Others from the combo box, the Others text field displayed, but the problem is, that Others text field displayed when user request the form always (On the initial view).

Can not hide properties in the initial view, when user click any action the hidden properties disappear?!

The solution in this case is to refine the 'new' action and the 'search' action to hide the 'otherLanguage' property.
But, before, try to define your module in this way:

# CustomerContact tab inside Engagement
CustomerContact.views.CustomerContact.custName=Customer Name
CustomerContact.views.CustomerContact.custName[description]=Customer Name
CustomerContact.views.<View Name Here>.custName[description]=Customer Name
CustomerContact.tab.properties.custName=Customer Name
CustomerContact.tab.properties.custName[description]=Customer Name

Q.39 How to create custom JasperReport which uses JDBC connection to DB

Q.42 How to display confirmation message?

Confirmation message can be shown using the 'confirm' attribute of <action /> element in controllers.xml.
Section 7.3 of reference guide.

This is a generic feature that can be applied to any action that show a JavaScript dialog to confirm the action.
Given that it's generic (not only for list mode), it cannot revise if some item is selected (or any other condition).
It simply ask before action to be execute.

A solution can be to define your list action using confirm=false, and then create your logic that move to other controller for confirmation before execute your definitive action, in this way you can control exactly your logic, but you will lost the agility of using a JavaScript dialog.

Q.43 Openxava and Cross Site Scripting (XSS)?

Q.44 How to use Identity Column?

Hibernate will create proper DB script.
When updateSchema Ant target is executed( on OpenXava project which uses hibernate), it will generates the correct SQL script. For example, if you are using AS/400 dialect, hibernate
will generate a line like:

ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY

Q.58 How to use OX and bind to a web service layer rather than to a database?

OpenXava has a pluggable persistence provider.
Package org.openxava.model.impl has implementation of EJB CMP2, Hibernate and JPA persistece provider.
Own persistence provider can be created to save and store the data by custom way.

The only problem is that Tabbular data retrieval is done via JDBC.
That's why additionally own TabProvider have to be written. For example look at:

Q.60 How to get autogenerated ID after save?

public void execute() throws Exception {
setResetAfter(false); // In this way the key will be refreshed from saved Entity to View
super.execute(); // Save, and after it you have the oid in View
id = (String)getView().getKeyValues().get("id"); // Now, id has value
}

DB change/migration tracking

Liquibase

Liquibase Questions and Hints

Hint.1 How to update data?

Is there any way to update a row that already exists in a table (besides using <sql>)?

Currently there is not.
I have considered creating an update tag but have not yet.
The main reason I did not create it originally is that it seemed to not add a lot of value over the standard <sql> update statement and created a lot of typing.

WEB Frameworks

WebOnSwing Multiple environment application framework that allows you to create web applications in the same way you develope a desktop one. You dont need to use JSP files, special tags, XML files, requests, posts, etc. Everything is Java and pure HTML files that comes directly from the graphic designer.

CAD / DCC

* KML, Keyhole Markup Language is use for annotation on 3D Geographical Browser. Browser supported are Google Earth. These annotation can be use to place events such as Earthquake warning, historical events…etc.

Note: CAD / DCC can also refer to GIS and other types of management systems for other industry.

Financial

* FpML, Financial products Markup Language is the industry-standard protocol for complex financial products. It is based on XML (eXtensible Markup Language), the standard meta-language for describing data shared between applications.
* FIXML, Financial Information eXchange (FIX) protocol is an electronic communications protocol initiated in 1992 for international real-time exchange of information related to the securities transactions and markets.

ENSPEED VIRTUALIZATION PLATFORM

Network Boot - PXE

Live CDs

Linux based

netepi Has a shell script in the latest tarball release for NetEpi Collection which takes the Ubuntu LiveCD distribution and strips out unnecessary stuff, installs PostgreSQL and NetEpi and various screencast demo movies and the manuals etc, and then creates an ISO for burning.

jDBIjDBI is designed to provide convenient tabular data access in Java(tm). It uses the Java collections framework for query results, provides a convenient means of externalizing sql statements, and provides named parameter support for any database being used.

The Problem With Database Diffs Interesting post regarding automatic diff of DBs; I would say that the same problem applies for ERP system. You can't understand what is semantic of change only from Change Log. For example: Changes regarding Documents (Invoice, Orders, ... ) must be sent only when document status is changed (from Prepared to Completed for example), becaese lines are added after main record is created, that's why upon Document creation his children(Order Lines or Invoice Lines) are empty...

Druid Hints

Hint.1 Remapping of DB Types

Druid fully supports remapping of database types.
This feature allows developer to build his initial DB model against specific DB(Oracle for example) and generate SQL scripts for any DB (Postgre for example). Or developer can define abstract DB types and create appropriate mapping for each DB!

Cewolf

JDOReports

JDOReports Developer Tips

Hint.1 How to open template document which is password protected

Templates to be protected against unauthorised changes to at least some extent.

Opening a password protected template is not supported. If what you want is to protect the output document (rather than the template) then you can post-process the document through JODConverter and OpenOffice.org and specify a password at that stage (optionally also converting the document to PDF or another format).

Could use JODConverter to unprotect the template before processing it through JOOReports. Convert the document from ODT to ODT (!) passing the password as an import option. Need OpenOffice.org installed and running on the server for JODConverter to work though.

Hint.6 How to Build Dynamic JasperReports

Hint.7 How to hide message 'No More pages'?

1. With iReport designer, menu Edit -> Report Properties
In the dialog there are five tabs. The 'More...' tab is what you're interested in.
There at the bottom you see a combo-box called 'when no data'.
In it there are all the possible choices that iReport gives you.
In my opinion the 'Blank page' is most neutral, if you don't mind having white page in the JRViewer.

2. Modify xml source (JRXML) in a text editor, you have to take a look at the attributes of the master tag:
<jasperReport> somewhere around line 15-20 you'll find the attribute:
whenNoDataType="NoPages"
which have to be changed to something like:
whenNoDataType="BlankPage"

Hint.8 How to show some or all records? How ot make conditional SQL in JasperReports?

SIP-Communicator SIP phone and instant messenger that supports some of the most popular instant messaging and telephony protocols such as SIP, Jabber, AIM/ICQ, MSN, Yahoo! Messenger, Bonjour, IRC, RSS.

SippySkype Java software that allows you to make and receive Skype calls from your SIP/VOIP adapter.

ElastixElastix is an appliance software that integrates the best tools available for Asterisk-based PBXs into a single, easy-to-use interface.

Online Radio Stations

SMS Gateway

jSMPPJSMPP is a java implementation of SMPP protocol (currently support SMPP v3.4). It provides interfaces to communicate with Message Center or ESME (External Short Message Entity) and able to handle traffic 3000-5000 messages per second.

gnupoolIt's like a SMS Server. The receive thread reads incoming sms and forwards it to Control Module which after processing it generates response and passes it to sending thread. Very bad written. SMS communicates directly with Linux device. They could use a framwerok for this communication...

Fork developers work in their free time! Excuse Me???

Can you belive? I work for free? Please do not tell it to my wife... This is top secret.

sf.net post It looks that this post was deleted from Compiere forums. Compiere Inc. do not like what friends of Compiere think??? Just to prove that such post exist i posted whole post here

Having been in the ERP game for a very long time, I just find the bazaar a bit too risky for real life scenario and most of the clever developers involved are doing out of free time. I honestly dont even have free time to write this email, but I guess some people have more free time than others. So what people do in their free times is entirely up to them? The product is becoming massive yes, and to expect the couple of clever developers to maintain it within their "free" time would be EXTREMELY risky for any enterprise to put reliance on. Yes it may be more clever and even more transparent and yes many more extremely clever things will be released out of it. Question though is who is going to maintain it in their free time over the next couple of years and who actually needs to get paid to support it.