 Any first timer for you to come on? Okay, so cool. I'm glad you chose my session. So, I'll try to make this a good next period as possible. So, what about me? I'm Miraj Megavan. I'm working as a senior software engineer for a company called ZIZ. And I'm just down from Sri Lanka, very close to India. Just to wait about my company, so we are headquartered in London. And we also do have another office in Sri Lanka, Kalangu. And we actually open a new office. There are just a few days back. We are mainly into the document management and the content management domain. So, that's our forte. So, coming to my topic today, Dhruva, the perfect document management content. A bit about what I'm going to cover today. So, I will actually provide an introduction on what I'm going to talk about. And the real world problems that is there with document management. The solution that I'm proposing. And what we have developed for customized and implemented based on the solution that we are proposing. And also, I'll go through two demos that will actually have different architectures all together. Do you use documents in your day-to-day life? Please, show of hands. So, as you can see, by the raise of hands also, documents are really important to everyone. And to companies and organizations especially. So, in the real world, all companies use documents. In the software industry, it could be software specifications, it could be a simple proposal, whatever. Even you can handle your own documents, like movie tickets, whatever, your employment records. So, it needs management. But the problem actually is, and the question to ask is, do we really manage our documents properly? So, let me show you a few problems that companies do face in managing documents. So, most companies and organizations, they actually foresee that they need document management and actually go ahead and, you know, draw up document management systems. But a very common complaint is that it's very expensive and the users are really not using it effectively as much, right? Why? Because sometimes you use like multiple systems to do your day-to-day work. You might have your own intranet, then you might be using a chat application like Slack or chat and then you might be using your document system separately. So, then it's not very use efficient. The method of usage is not very use efficient. And most of these document management systems, they are very good at what they do but what they are not good at is providing a good user friendly experience because most of them are fixed and, you know, people have different lighting and people want things personalized, customized. So, the document management system might not be very well equipped to do this. And it cannot provide, like, a rich user interface, like a very responsive, mobile-friendly user interface. So, yeah, most problems, you know, propagate into users not depending on this document management system effectively. And also, the most worst out of all is companies actually not realizing there is a problem and still using, like, good old emails to send out attachments and all these things. So, how many of you send your documents in attachments? Still? Yeah. Okay, so, as Rice mentioned in Rice Note, this is the digital revolution. We need to move on. So, we need to find better and efficient ways. So, you don't need to download your email attachment and months after go clicking on folders just to find that document you got on the email. Like, there is a document, right? So, you don't want to do that. So, that's one of the reasons that we propose this solution. So, what does this solution mean? Does this mean that your document management system has to go away? No. What I'm saying is, so, Drupal, in a sense, is a container management system and a very good interface. And you can build nice UI. You can make them change. You have lock management. You have breach and all these things. So, Drupal is very, very quick to give a good user experience. So, what can we take out of Drupal and make it to good use? So, what I'm proposing is, have your document management system in the back end and make the user see your documents through the Drupal interface. This is what I'm proposing in the most simplest terms, right? So, what are the advantages of the solution I'm actually proposing? So, one good advantage is you'll have everything in one place. So, you can build your internet. You can have a chat application. You can have your document management system integrated to it. So, just one application, you'll do everything. Not multiple applications and contain, distribute, and all over the place. And also, since Drupal is mobile-friendly and it can provide a nice interface with all these external files coming up and all the JavaScript libraries, you can provide a nice and rich interface for the user as well. And also, we can make use of a lot of JavaScript libraries out there. So, it can be like, JavaScript libraries that are equipped with drafts and it can be annotation languages, VDF languages, all these JavaScript libraries we can make use of. And also, Drupal is a good platform to collaborate. So, anyone here heard of Together.js? So, one thing you need to do is also just take down the technologies and just go and, you know, Google them out, because Together.js is a really awesome plugin. It's a product from Firefox Labs. And if there's even a Drupal module out there, but you don't really need to use the Drupal module, you can actually plug in the JavaScript library and do all the things you want. So, it's a great platform to collaborate. You can build awesome applications using that. So, we get all these possibilities plus the document management side in one place like document conversions, document resizing, search, all these things by using this kind of a hybrid solution. So, what have we developed in order to name this solution work? So, obviously you need a method of actually authentication. So, how can we provide this? The way we can provide this is by communicating seamlessly through the document management system and Drupal through API calls. So, another thing you should notice is most of the document management systems like Arapasco, Box, Browbox, they have their own API because I think that's because they also have seen this problem and posting this problem and they provide an API for other applications to be integrated. So, use the API, implement the way for the applications to talk and communicate with each other without any problem. And a file browser, also we have here obviously a name when we are having an interface for our document management system. File previews where we need to preview documents. So, sometimes all types of documents are not previewable on web. So, what the document management is good at is actually converting the documents. So, if you want to view an Excel sheet, so you can tell the document management system to convert this for me to PDF and read it back and show it. So, this is the preview, but it actually gets the work done. And while actually developing the integration, what we also came to notice is people need to know what is happening on both the applications. So, we are using a plugin. Actually, we are integrating the activity stream of the document management system and Google as well. So, how we are doing this is using a protocol called Activity Streams 2.0. So, it's a very simple standard of communicating activities between the applications. So, just a very simple standard, you should go and check it out. But it's very effective. And another very small plugin that we also implemented is annotation updates. So, what it does is it's simply annotating or commenting on a certain piece of content so that the other users also can use it. And so, anyone heard of this? Heard of Siemens? Yeah. So, Siemens in the long term is a content management interoperable service. It's basically a way to generate API used between content and document systems to communicate with each other. And there is an awesome Google module. Anyone use the Google module? Siemens Google module. You should go and actually try and just see what it is because it's also a really good module. And it's actually a bunch of modules or bunch of libraries. What Siemens provides is a way to communicate with other applications. And it has a browser, its own browser where you can browse through the documents when you connect to the document management system. And it also has its client-like thing. Then there is another module for the Siemens field where you can use it to add the documents to a content type. And you will even find a lot of interesting contributors. So, price itself is a contributor for this module. So, it's a very scalable module I think because we found out when we were developing and when we needed to make improvements that the module is already equipped with this. So, with a bit of training and researching we found out the module is very useful. And it does a lot of work. So, and also the browser was not that flashy and not a very nice one. So, we kind of changed it to this. And we wrote our own browser on top of the Siemens browser. Yeah. So, sorry. So, the solution. The solution I propose is integration between Alphysco and Rupert. So, how many of you have heard about Alphysco? Yeah, yeah, are you using Alphysco? Maybe. Okay. So, Alphysco or folks who don't know is a document management system. And it's hugely used. So, as we are company accorded in London, the UK government is using it. The US government is using it. And it manages terabytes of documents. Right. So, what Alphysco is not really good at is coining a very huge UI. And the customizations on it are not as easy as changing Google. So, that's the problem. Alphysco is placing. But it's really good at putting this on the document management side of things. It can convert and it can do awesome stuff. Permission to name it. And the good thing about Alphysco is it provides an API for everything you see in its interface. So, actually, kind of serves the purpose because of this facility provides. So, the architecture for this solution is a bit complicated. But you don't actually need to use this architecture. You can use a very simple architecture by just configuring a user. So, I'll go through it in a bit. But what basically is here is, what we've done is we have groupers, one side and we have Alphysco. And we have an identity provider to manage some indications. Right. But in this process, we are using an identity provider for ADFS. But you can use an identity provider like OpenAM or there is Sheepallet. So, we've used all those and we provide it. And also, we use a protocol to communicate call SAML 2.0. So, it's a protocol that is used for proper authentication, managed authentication. And so, just to go through the architecture very basically, what groupers is, so all the applications should be registered with the identity provider first and even all the users. So, they might be active directory or something degraded there. So, what groupers will do is groupers will send a SAML request to the identity provider and the identity provider will provide a response. And this response is used to actually build a level of trust with the other applications you are talking to. And it might not be just two applications. It might be multiple applications and different grouper instances and different groupers, Alphysco instances and all these things. So, that's how it basically works. And once groupers sends the SAML response to Alphysco, so Alphysco will then study the response and say, okay, you are good to communicate with me. And after that, it's all seen as doing the work. So, once... So, if anyone wants more details about the architecture, please come and meet me on the session. But it's a bit important when you are going to understand the demo. So, that's why I go ahead and explain. And there is also Alphysco module actually working on Alphysco that actually is Jay-Z implemented. So, it's a bit independent on... Sorry, dependent on that module that you need to install. So, I'll give you download links as well. But that's why I'm providing two solutions. So, we'll see what happens. So, this is the readme file from the seeme module. The array at the top should be placed on your seeme file. Pretty much straightforward parameters that you have to provide. Just by using those things, you can make this integration work as well. But the disadvantage here is you will have to use one default user, which is not very good because you are logging into your local instance with your own authentic user credentials. But the person who is doing document management in the background is another person. So, we don't want that. So, we thought of making this work the proper way, which means the local user should be the person who is also doing the work on the document management system. So, what we did is we used this transport key right at the bottom. And using that transport key, you can write your own module to take care of authentication. So, that's what we did. And we made sure that the SAML request and all these things are working with that module. So, that's basically what this configuration is. The next part is in the seeme.com, you'll have to, you know, configure a default location or a location you want the browser to see. So, once you click on the seeme.com browser link, this location will be shown up to you in the browser. So, that's all the configurations. So, let's get through the demo. Can you see the screen? It's just a white screen right now, but... You can see the mouse point there. I'll just leave it to a point where it starts there. Yeah, okay. Okay, you guys. So, first up, what I'll demonstrate is the single sign-on process, which is really cool in keeping the permissions independent. So, you don't want to manage your permissions for the document in Google. That will actually create a whole list and a long list of permissions. So, you click here. Just let the document in the system be in the document permissions and let Google actually look at it through there. So, that's why we are proposing this, I don't know, authentication. So, the user would log in. And when he does this, he'll be logging in to Google as well as the Airpresco. So, just to show that, I'll just open the documents tab. And also, I'll open the same location on the Airpresco, on another tab. So, it will be the same user. So, when you open the same location on Airpresco, you see you don't need to sign in again. You are signing in already. And it's the same thing we are looking on. So, let's go to the tab. So, what I'm doing here is, I'm going to change the process. And I'm going to remove permissions for a folder. I'm going to actually log in as an administrator to the document management system on another browser. And I'm going to remove permissions for a folder. So, what you should do is, you should remove the permissions from Google Go into a folder. I'll just take the Drupal folder. Go to manage permissions. And just remove all the permissions from that folder. So, save it. And when you go back and refresh, you should not see the Drupal folder anymore. So, refresh both. So, you don't see the Drupal folder anymore. So, that's the importance of keeping the permissions independent. You don't have to deal with the last thing. Yeah. That's pretty much all the automations process. So, now let's go through what modules we need to actually enable to make this solution work. So, go to the modules. You need to first enable your scene module. So, just not all the modules. So, you need the scene is module. The scene is browser. The scene is common. And, of course, the scene is fields. So, basically, the first three modules will make the document browser work. But, if you want to connect your documents to Drupal North, you can use the scene is field module, which I will also demonstrate there now. And, next, the customized module that we have here. So, the first annotation is to actually annotate the document. The tasks is actually a display of the workflows assigned to you on the microscope. And, we got our own browser, written on top of the scene is browser. We've also got a calendar plugin, which is not important actually for this demo, but you can also use that if you integrate the events of the Drupal algorithm. And, of course, the local AFRESCO connector, which takes care of authentication. So, it has its own role of roles and permissions, and Drupal has its own roles and permissions. But, because when we thought of actually merging the permissions, that's going to be complicated. So, on AFRESCO, the administrator can make sure that any Drupes are there. It's just a matter of the same user logging in to all the systems. And, whatever the document that they can't see on AFRESCO cannot be viewed on Drupal as well. So, that's why we are keeping it independent. So, you know, it's not mixed up and complicated altogether. So, that, but when you are going to merge it inside your application, it's going to make actually the implementation much more difficult. So, that's why we thought of keeping it this way. So, I'll just go through the pages. So, this is just Drupal Commons working. And, we've integrated the activity, as you can see. The top two are AFRESCO activities, which we are building. So, it's integrated and the bottom ones are from Drupal itself. So, what we can do, a cool thing we can do is we can also pull in the real thumbnail. So, the top most activity is actually a thumbnail that we pulled in. That's actually a real thumbnail that we pulled in from the uploaded document. So, it can be uploaded from the browser itself or from AFRESCO itself. But, we can, you know, just pull in the activities using the integration that we built. Next is the task integration. So, it actually shows any workflow that is assigned beyond AFRESCO. So, this is, obviously, all the tasks. And, it's immediately going to the documents. So, once you go in the document itself, you will get the browser. So, the browser has a couple of features. First of all, starting from the left side, there is just the preview navigation, which makes it all together easier to actually navigate. And, then you have a refresh button because sometimes this doesn't work instantly when you upload documents. And, you've got the feature to actually upload documents. And, you can create folders. So, everything will be done on the current location you are in. And, you can also drag and drop, because drag and drop is also a common feature that you will ask for. And, even a small front-end front-end is not very great, except just a small front-end filtering that we are in. So, yeah, let's take a look at the preview. Let's review our document. So, as I said, we can tell Alphas to put any document into whatever format we need. So, here we are using pdf.js to actually load the document. And, what it will do is it will send back the document and we can open it with pdf.js. So, we will tell Alphas to send all the documents just for the preview. And, another small integration that we've done is make the ability for the user to actually annotate the document. So, you can just highlight just a phrase of words and just comment on it, so that any other person actually opening this document would see this annotation or see this comment. That's pretty much the preview functions. So, we've also got the functions like the download and all these things. And, we've also placed the background at the top for user navigation. That's pretty much what we've got on the browser side of things. Now, next, let's go into actually connecting these documents along the documentry system to Drupal nodes. So, you can use the semi-speed module for this. You enable the module and you will get to add the field in your content type. So, you can just add. And, the third field over here is actually semi-speed. Again, what it will do is it will open a small widget for you once you press the browse button. And, you can just browse through and actually choose the document you want. The cool thing here would be to actually add a search where you can search through documents and just choose. But, we have not come to that stage yet but we are just choosing the document here. And, it will, if you make the Drupal site mobile enabled. So, if your mobile Drupal site is actually mobile responsive then it will work. The whole thing will work on your mobile browser as well. So, that's the advantage of having. But, you know, with Arafesco they had to build a whole app for mobile browsing. So, you don't need to do that with this kind of integration. You can just make your site responsive. And, I'm not sure I tried it on the browser but it should work with the mobile site. So, you can just save and you will have your document linked to your Drupal network. So, that's all on the first solution. I'm going back to my slides. So, solution two is the integration between the box and Drupal. This is actually, personally for me, I like this because it's much more simpler than the Arafesco integration. And, architecture is also not very complicated. We just use O2 protocol to communicate. So, it's not dependent on anything on the box. Just dependent on the API of the box. That's it. We don't need to write any code on the box. Let's get away to the demo. The box connector, we just started this project just three months back. And, it's still in the Sandbox stage. So, you'll have to clone it all either way. So, we just clone the module. And then also, we write our own PHP SDK to communicate with the API. And so, it's actually included inside the module right now. And, we have not decided whether to pull it out or just take it inside the module. But, it's currently inside the module. So, you need to just go inside the SDK folder and download its dependencies. So, you just need to run a composer install. So, why we've done this, in this phase, we also thought of looping it. And, we want to, you know, hold this straight away into looping. Yeah, that's it. So, your module is all ready to go. So, now, what you've got to do is, you just go to modules and just enable the module. It's called box connector. You switch it on and you're good to go. So, the configurations are in the box module. It is straight forward. You just have four parameters to create. So, for this, you need to create. You need to have a developer or enterprise license or account on box. But, the developer license serves the purpose. So, what you need to do is, you just need to go into myappsondeveloper.box.com. Right. And, just create an app by just clicking this link. Right. But, I've got my own app created. So, I have a complicated thing with boxes. They have two APIs. So, one is the content API and one is the view API. So, the content API actually takes care of the documents, uploading, deleting, all these things. But, the view API is the one used for viewing. But, I heard from box that from just recently onwards, they don't, you don't need to use both APIs. You can use just the content API because the content API has a new preview API call. So, you can just use that preview call and just view the document. So, but at the stage of the other one, we had to deal with two APIs. So, let's see. You just create a content API and a view API. So, once you create it, you will get these keys. So, what you need to do is, you need to add these keys into your group of configuration. And, once you do this, you should be able to properly communicate through the old protocol using these keys. So, we also need to go into the view API and just add the view API key also. So, add that and that's it. We are good to go. So, once these configurations are saved, you can just go to your user page. And, on the user page, you will see a small tab or box. So, just click on it. The very first time, it will ask for access. So, you just need to grant access. And, after that, you don't need to do that. So, the application will have all the tokens needed to have the proper communication. Grant access and that's it. So, this is the documents on the box that the user will see. So, I will open the same box account on box.com. And, these are the same files here as well. So, we are trying to, actually, we are in the course of improving the UI as well. For now, this is the view function. So, as you can see, once we click on view, it takes a lot of time to actually view the document. This is because we are using two APIs and it takes a whole cycle of API calls to actually view the document. So, it takes a lot of time. So, what we did here is, the first time the user does it, we cached it using the local cache in API. So, the second time the user is not frustrated like this. So, as you can see, this is the first time it opens. So, the second time it will not take so much time because we are actually caching the responses from the API calls. So, the second time it opens pretty quickly. So, that's actually an example of using the best of both worlds. And, we have got the upload function, then we can create folders, rename and delete files, all these things, and intact reviews. So, that's actually the different solution. Now, the future plans we have. So, Brooklyn 8 development is also going on. So, we also started moving these modules and some problems we are facing with actually coding the series modules and things. It will take some time, but hopefully we are trying to give it out soon. And also, since the RFSCO integration is a bit complex, RFSCO 5 is equipped with both two integration icons. So, I am no RFSCO pro, but I get a lot of help from the developers in our company. So, we are trying to implement some easy way of this complicated way of authentication for RFSCO. And, probably integrate the Drupal workbench module for workflows. So, let's say you have, let's say it's a newspaper and the writer has to go in the article editor and the editor has to prove it and it has to go to second hand. So, there is a lot of workflows in documents I got. So, what we are trying to do is we are trying to actually integrate the workbench module, which can actually implement workflows with Drupal nodes and try to see how the integration will work. And also, we are trying to integrate workflows with annotations, which means when a editor is checking an document, he is going through a document, he sees something wrong with some content and it takes that part using a user mention and that could automatically fire up a workflow. And also, due to improvements and especially search, federated search. So, federated search is also started up with a product called Sensify. That is also on the company detail. So, you can also check that out. Sensify is federated search. You can integrate multiple repositories with it. That's pretty much it. So, any questions? Yeah, for the YouTube video purpose, I'll repeat this. So, what he's asking is he has a Drupal node and he's trying to attach a document. Once he attaches this, is it possible to actually upload it to Airfresco at the same time? Do you want to upload it to Airfresco and Drupal or just Airfresco only? Okay. So, yeah, that is possible. We actually did a play around with this. You can actually, you know, let's say the content you're typing inside the text area on a Drupal, you can, you know, make just convert it to a PDF and even send it to Airfresco. So, the attachment is also certainly possible. You use a hook in the middle and make sure that you call the CNES API accordingly. And you actually interfere with the file upload process. And in the middle, you call the CNES API and send the document to Airfresco. So, that's the repeat. It's actually similar, but ultimately, it will be a link to Airfresco on your Drupal node. Something similar to the CNES field I showed you. So, something similar to that. But that, the CNES field, the difference is it's already in Airfresco, but you're very low. We can also make that difference. So, one question is if versioning is possible. So, no, we have not got it into Drupal yet. The versioning part of things. Both the solutions have versioning on the document manager side. And they have APIs, but we have not still implemented it on the Drupal module. And editing, as far as I know, is not possible. So, you'll have to download and do some changes and upload it again, which will actually upload a new version. So, one problem. So, what we're asking is whether we can actually use another record user to always authenticate with the document management system and not the log-in user. So, as I mentioned before, on a previous slide, the problem that it brings is the person who is actually doing the uploading will be that default user. So, you will have no track of who actually uploaded it. Yeah, yeah, but it's certainly possible and that's how the default behavior of the CMS module works. You can use admin user who has permission to do everything and just set up that user on your settings file, and then you can use that user to always upload the files, which there is no authentication involved there. But also the authentication that you saw, it's just only one time, even for box. The next time you log in to Google, we have the tokens already, so you don't need to guard access. So, you can just... I'm sorry, I didn't get your question properly. Yeah. See, all the documents are fine. Okay. Yeah, you can do that. So, what you'll need to do then is, instead of actually authenticating that user, you'll have to authenticate the admin user through the backend. So, not the user is logging in. So, different use cases can... Okay. But you can also, you know, create some group and add these users or something like that that user is also doing, also can give the document. Or else you can make that document, particular document public from the DMS and make sure it's seen to the user. There are multiple ways of actually doing it, but it's the one you prefer that matters. And also, each person's use case may differ. So, that will also actually propagate into changing the architecture. Can't we use the same instance of Drupal as the IDP? Identity provider? No. I'm not trying this, but I think... I'm really not sure about this. I'll have to look into it. Sometimes it might be possible. So, another Drupal instance is the IDP and Drupal and Arifresco indicates a real stick. Sometimes, Arifresco might not allow this. I'm not sure I'll have to ask one of the Arifresco developers, actually. But I'm sure Drupal to Drupal, probably you can use another Drupal instance as IDP. It's not possible. There are ADFS, OpenM, and SheeperLab that we use. OpenM is open source. SheeperLab and ADFS both are like this. ADFS is actually a Windows version of Windows. Questions, please. So, download and support. Go to the company GitHub to download any of these modules. There was a problem with my authentication, so I'll put them as soon as possible on the GitHub. The box for you is on that URL, and you can always contact me or sales or if you want to actually implement any of these solutions. And all over the place, I'm just ADGama. So, please copy and line, and I'll always reply back to you. So, hope to hear that from you. Please keep in touch. And also, please go ahead and evaluate my session. Hope you had a good session. Thank you.