Thanks John, I do understand that we need to get the structure right from the beginning ... we are developers who currently build and support a large and complex CMS, which we are directed to migrate away from towards a CMS product, and dotCMS is the clear winner for things like native multi-language support, breadth of features, extensibility and maturity. We look to give our users a very similar if not identical experience, and a back end that is simple and trainable for our large group of content creators who are domain experts in their areas, but not designers or web savvy.
The idea to use URL maps makes sense because that's essentially what we do now, my question is more focused on how to support the hierarchy, taxonomy, within dotCMS for the best result in terms of flexibility and ease of use. There is a concept of multiple sites (about 20) for different business units, all share the same codebase and templates, with some CSS differences and both shared and unique content in each. Each subsite has between 10 and 20 top-level "folders", with 3 subfolders and occasionally a 4th one. There are about 5500 different folders, with up to 500 or so in each subsite. These subsites are now subdomains and that is a possibility in dotCMS but not required.
I think this would be a pretty big CSV since each content item would need to be listed. We do have methods for batching API calls for bulk exports to our search index, and then incremental updates for ongoing maintenance.
Within that structure are some 60,000 text content items and another 100,000 structured content items. The structured content types are generally navigated by search, with different categories (metadata) to filter and focus the searches by region, timeframe, customer type and so on. We see that filtering process as mapping well to dotCMS categories for Elastic Search and have developed effective front-end UIs for that process.
Hi M (pit?) and thanks for your reply.
To answer your questions:
There's a total of 350 top-level folders, split across some 20 subsites (could be modeled as either dotCMS sites or a meta-top level, but different dotCMS sites seems the best approach). So each subsite has between 10 to 50 top-level folders.
Our current model has restricted access to subsites, folders and content. Most is open to all users but we need to enforce access control at all levels. We may want to create a custom interface to manage those 60 roles across our user base of roughly 6,000 IDs.
As for scripting, we are a small team with expertise in database (currently Oracle), middleware and front end. So SQL, ColdFusion, jQuery and JS are easy -- that allows us to create our own APIs and consume dotCMS APIs to load dotCMS, run headless or continue to feed dotCMS from our existing admin back-end as we transition to the native admin tools. The eventual goal is a fully native dotCMS implementation. Current goal is developing the schema and structure for dotCMS as a mirrored data store -- we're not adamant about any of those steps, it will be a bit of a long road as I'm sure you are aware!
We are also comfortable with the vtl environment now that we've had a taste ... we also do some Java which underlays ColdFusion ( PHP-like scripting language), similar I imagine to how dotCMS is actually Java and extensible if necessary. It's an interesting mix because we are most comfortable writing code, but eventually the site will be managed by others through the UI.
I'd like to ask about pointers for the following specific questions, especially if those are available in the documentation or other places:
1. Relationships vs. categories for taxonomy and navigation:
Navigation will be scripted I'm sure
Ease of folder management with existing back end, or write our own UI for that
2. How to programmatically load and manage:
** Hierarchy/Taxonomy (folders) and return identifiers (above suggested as separate import/export steps)
Metadata categories (region, customer type, status etc.) these are not navigation but used for search filters
- actually there are only about 60 of these, so can be hand-loaded
Pages -- I believe a small number of pages, with a detail page for each content type, these will be hand-built I guess
Templates -- again, a small number, hand-built
** Content -- bulk export, with each content item (contentlet?) storing its own parent location (folder) identifier and metadata categories
The ** items are critical.
On another note, I am interacting with a local docker instance, using curl. So far I've managed to use the webhooks example to import and read content. I'd like to use the Postman API examples but haven't had much luck running Postman against my instance, or the demo site.
Thanks all for your help,
- Jon