For one of our customers, a pharmaceutical company in Central Europe, we are implementing M-Files as a main solution for managing projects and project documentation. M-Files has great flexibility when it comes to design and implementation of various objects. Therefore, it is easily adaptable for a diverse range of implementations from Invoice Processing, HR, CRM to Project Management.
Our customer needs functionalities that are, more or less, part of every project management solution:
- Project Management
- Phase and Milestone Management
- Project Finance
- Project Documents
- Task and Resource Planning
Even though M-Files has GANTT Chart View which serves as a great way for project managers to manage resources and track project plans, our pharma customer and users within the company are used to working with Microsoft Project. Our customer’s project managers would like to continue planning with Microsoft Project.
In order to support both planning within M-Files and Microsoft Project, we have to develop our own solution which will do a two-way integration. The main goal is to support high-level project management planning within M-Files and then use Microsoft Project client for detailed resource planning.
Integrating M-Files with Microsoft Project
After a detailed analysis of requirements and possible solutions, we decided to create .MPP (Microsoft Project file) for every project in M-Files. This solution would allow project managers to have .MPP file that is always accurate with data from M-Files. On each project change we have to update document in order to have accurate data within .MPP file. Moreover, we need to do an update on everything changed from within Microsoft Project as well as to create new objects in M-Files.
Aspose.Task for managing .MPP
In order to achieve these functionalities, we decided to use Aspose.Task. Apsose.Task is a library that contains a set of different actions that allows you to work with MS Project File. Creation of a new task is simple as:
Task task = project.RootTask.Children.Add("Task 1"); Task subtask = task.Children.Add("Task 1.1");
Every time a user makes some changes in the .MPP file, we will read all available MS Project objects (tasks, phases, resources, etc.) and match them with our current situation in M-Files.
foreach (var task in project.RootTask.SelectAllChildTasks()) { // Update task }
The usage of Aspose is amazingly straightforward. It allows you to read, write and manipulate Microsoft Project documents without any Microsoft Project dependencies. Basically, any action that you can use in MS Project is supported within library. You can do whatever manipulation you would like (create new project, handle resources, manage assignments, sort tasks, work with custom properties, etc.).
As a partner that develops M-Files add-ons, it is great to have the Aspose.Task library. We will continue to develop this MS Project M-Files integration, because we do believe that many partners and M-Files customers would find it useful for their Project Management solutions.
Do you have a business problem you don’t know how to solve? Let’s talk about your business needs and goals and how to achieve them efficiently and quickly.