Python Developer needed for Navision interface
THE PROJECT
Our technology team in Madrid has built one of the most advanced legal technology platforms in Spain and probably in the world. We are expanding this system every day with new functionalities. Some examples of the work we have done include:
Integration with other platforms such as Navision, Zendesk, Salesforce, AWS, Google.
Complete design of a complex system that allows lawyers to manage legal cases throughout their life cycle.
Development practices based on CI / CD.
Machine Learning application for automatic analysis and classification of documents.
Currently, we have an opportunity for a Senior Back Developer to work with this great team on a Navision Integration project.
The scope of the project includes the following aspects:
Webhook to collect XML files from the ERP
These XML files will be stored in a table in a Postgresql database, which will have the following fields:
register_date, contains xml insertion date
state, contains one of the following:
0 pending
1 success
2 retry
3 error
4 old message
retries, contains retries number, default 0
last_retry_date
error_mesage, contains Navision return error message
itransaction_id, random unique hash
xml_file, XML file to send to Navision
content_type_id, parent object type stored onl xml
object_id, parent object id
Recurring background process
This process will be launched in the background every X minutes by means of a cron calling a django management function using celery. In the cron file, the periodicity of its execution will be defined. This process will do the following:
o You will get the messages from the database in order of arrival and process them:
• The messages to be processed will be those indicated in the pdf sent by the client, which I name below:
Clients
Claims
Bills
Deposits
Charges
Payments
Unpayments
CommunicationState
CommunicationResponse
• These messages will process and store the data in the database. If there is an object with the identifier provided by the message, the attributes obtained from the message will overwrite the attributes of the instance in the database. The model for this messages should be built
Queuing outgoing messages
This queue will store the outgoing messages from the CRM to the ERP. These messages will be structured in XML and will be used later to be sent to the ERP. The queue will be stored in a table in a Postgresql database and will contain the following fields:
register_date, contains xml insertion date
state, contains one of the following:
0 pending
1 success
2 retry
3 error
4 old message
retries, contains retries number, default 0
last_retry_date
error_mesage, contains Navision return error message
itransaction_id, random unique hash
xml_file, XML file to send to Navision
content_type_id, parent object type stored onl xml
object_id, parent object id
Background process that is responsible for sending messages
This batch process would be in charge of sending the messages queued in the table previously described.
This process will be configured using a cron that calls a django management function. In the cron file, the periodicity of its execution will be defined and the correct call of the django management command from cron is managed by celery.
The messages will try to send 3 times, if an error is received on the third sending, it will be stored in the field designated for it. These messages are obtained sequentially and until one is made, the next is not passed. The algorithm that will be used to send the messages will be the following:
Update the current CRM so that when an ERP call is made, the XML is generated and saved in the queue
With this definition we will have the scope of the project detailed in the processes that will be addressed, it should be noted that the project is a previous phase that facilitates the expansion of models and the sophistication of the contained fields, the functionality of the application will not be modified or expanded, only replaced by a more flexible system that allows future extensions and improvements of functionalities.
Current application will be provided to have some to start with.
Job Type
Client Payroll
Positions
Backend Developer
Must have Skills
Languages
english -Basic
Skip


Refer a friend for this role and earn
25 USD
Use the share options below Learn More
Refer a friend for this role and earn 25 USD
Don’t forget to share your referral URL
Up to 200 USD/Hour
200 USD
Up to 200 K/Year USD (Annual salary)
Longterm (Duration)
Fully Remote
Ana M